ATMEGA8 i ADC

May 14, 2005 9 Replies

Czy moglby mi ktos napisac kawalek programu w C do obslugi przetwornika w ATMEGA8 a konkretniej:



Potrzebuje cos takiego: Napiecie wzorcowe to napiecie zasilania - 5V Potrzebuje mierzyc napiecie np. na ADC0 i jezeli napiecie bedzie mniejsze niz 12V to przestawia PB1 jako wyjscie i ustawia na nim stan wysoki.


Pozdrawiam i bardzo dziekuje za pomoc



Problem to ja mam ze wszystkim

Znalazlem cos takiego, ale nie wiem czy to w C. Niby wszystko jest w dokumentacji ale dla takiego laika jak dlamnie to jest czarna magia. Dlatego prosze o gotowca gdyby ktos mogl a dalej juz sobie poradze sam.

void InitADC(void) { ADMUX = _BV(REFS1) | _BV(REFS0); // wewnêtrzne Vref = 2,56V i ustawiony kana³ 0 ADCSRA = _BV(ADEN) | _BV(ADIE) | _BV(ADPS2) | _BV(ADPS1); // ADC w³±czony, przerwanie w³±czone, preskaler = 64 }

void StartADC(void) { ADCSRA |= _BV(ADSC); }

SIGNAL (SIG_ADC) { #ifdef INOUT PWM_output = ADCL | (ADCH << 8); #endif StartADC(); }

Przecież to wszystko w notach aplikacyjnych jest. Jeśli będziesz miał problemy - napisz o szczegółach.

Nie a za co.

Bedzie na tym wiecej rzeczy i dlatego robie to na procesorze. Mowiac inaczej mam wlasnej roboty upsa do serwera i musze go czyms pilnowac ;]

W C chyba latwiej sie pisze niz w BASCOMie a nie w C ani w BASCOMie nie pisalem nigdy, pisze tylko w bashu i troche w perlu dlatego to dlamnie czarna magia ;/

Jesli nie potrafisz poznac po kodzie czy to C to czemu akurat w tym jezyku potrzebujesz program? Taki program kilka razy latwiej napisac w assemblerze, czy w BASCOMie. Zreszta na twoim miejscu zaczalbym od elektroniki. Bo do tak zaawansowanego rozwiazania procesor to przesada i to spora.

A to ciekawy wniosek. Tylko nie wiem skąd go wziąłeś...

Piszesz? Przyznaj się, edytujesz zmienne/stałe ;)

Jak już musisz użyć uC, użyj bascoma.

m.

Tak, to jest avr-gcc (czyli C), wersja dla linuksa do zrobienia w jeden wieczór ;)

Nie. Jeśli nie przeczytasz tej dokumentacji i nie zrozumiesz, to sobie nie poradzisz.

Pozdrawiam

Do sciagniecia w 5 minut:

formatting link
dla innych dystrybucji do znalezienia googlem w 5 minut)

pzdr. j.

Zrobie sobie dzielnik napiecia. Dalej zmierze napiecie sprawdze czy nie jest mniejsze od 12V jezeli jest to daje mi stan wysoki na PB1 przez tranzystor podlaczam rzekaznik ktory powoduje wystawienie stanu wysokiego na wyjscia modemowe na comie w serwerze, serwer zaczyna sie zamykac po 2 minutach mikrokontroler zalacza PB2 co doprowadza do odciecia zasialania do serwera. Teraz jak jest wylaczony to sprawdza czy jest npiecie na lini ktora zasial przetwornice to serwera, jezeli jest to sprawdza napiecie na akumlatorze i czeka az wzroscnie do 13V jak bedzie 13V to zalacza serwer. Cala filozofia.

A ze nie mam zielonego pojecia, ani w perlu ani w bashu nie ma zadnych bibliotek w ktorych sa polecenia sa to zupelnie inne jezyki.

Ale i tak widze ze na tej grupie uzyskac jakakolwiek odpowiedz jest ciezko.

Dlaczego ciezko? Odpowiedz dostales, problem w tym, ze nie majac pojecia o C chcesz w nim napisac program i masz pretensje do grupy, ze nie chce powiedziec jak. Czy przegladales notke dla tego procka? Zapewne nie, bo tam jest opis ADC, sposobu konfigurowania i odczytu.

Jesli tego nie znalazles, nie znasz C to oswiec mnie (a moze i nas) jak chcesz dokonac tego dziela? Przeciez nie majac pojecia o tym nawet poprawnie tego nie skonfigurujesz. To juz BASCOM jest latwiejszy bo kilka spraw zalatwia samodzielnie.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required