Chcialem sobie zrobic uklad wlaczajacy i wylaczajacy swiatlo w akwarium na uC (Atmega8) i moje pytanie czy można to smialo zrobic za pomoca Timera (jesli tak to czy 8-bitowy starczy) czy lepiej za pomoca gotowego zegara np. pod I2C? Chodzi o to abym np. co jakis czas nie musial go ‘synchronizowac’.
Pozdrawiam Rafal K.
Didn't find your answer? Ask the community — no account required.
Z
Zbych
Witam
To nie ma znaczenia na czym to zrobisz. Je¶li to ma dzia³aæ bez przerwy(bezawaryjnie) musisz daæ zasilanie(akumulator, baterie) dla uk³adu który bêdzie sterowa³ zegarem po zaniku sieci(230V). Je¶li Ci zniknie sieæ, grza³ki nie bêd± dzia³aæ, ale zegar zasilany z baterii bêdzie pamiêta³ wszystkie nastawy i w³±czy to co potrzeba po powrocie zasilania podstawowego. Zegar i proste sterowanie zmie¶ci Ci siê w najprostszym Atmelku np. 2051. ¯yczê powodzenia.
-- Pozdrowienia Zbych
B
Bogdan Gutknecht
‘synchronizowac’.
Mo¿na zrobiæ na procesorze - dok³adno¶æ zale¿y od jako¶ci kwarca. Musia³by¶ jednak zapewniæ dla procesora zasilanie w trakcie zaników napiêcia i odpowiedni, energooszczêdny sposób pracy. Jest to niezbyt k³opotliwe, ale trzeba zrobiæ. Do sterowania o¶wietlenia choinki u¿y³em timer mechaniczny z marketu za 15 z³.
P
Piotr Pitucha
U¿ytkownik "ToR" <ToR snipped-for-privacy@o2.pl napisa³ w wiadomo¶ci news: snipped-for-privacy@newsgate.onet.pl...
‘synchronizowac’.
Wystarczy prawie dowolny procesor ze stabilnym kwarcem, wygodniej taki co ma dwa timery :), program mo¿e chodziæ na wewnêtrznym oscylatorze a drugi timer np. na stabilnym kwarcu segarkowym. Najpro¶ciej i najtaniej to kupisz w jakim¶ markecie gotowy programator z wy¶wietlaczem i rozdzielczo¶ci± do minuty o innych bajerach nie wspominaj±c. Piotr
M
Marcin
Najlepiej to poszukaj na starych p³ytach g³ównych uk³adu DS12887. Jest to zegar czasu rzeczywistego z wbudowanym akumulatorem który pozwala na podtrzymanie czasu przez (wg danych producenta) 10lat. Ten uk³ad to hybryda z symbolem budzika. Do tego we¼miesz jakiego¶ 89Cx051, LCD i masz elegancki sterownik. Polecam zaimplementowaæ do tego funkcjê budzika :).
Pozdrawiam!
P
Piotr Pitucha
U¿ytkownik "Marcin" snipped-for-privacy@ble.pl napisa³ w wiadomo¶ci news:drv5vd$5b2$ snipped-for-privacy@opal.icpnet.pl...
No tak tylko z tym scalakiem robili z 10 lat temu wiêc ju¿ po baterii :)
Do tego LCD powiedzmy 20, trafo ko³o 10, procesor ko³o 4, klawisze, p³ytka, przeka¼nik, programowanie, nie ma zmi³uj wyjdzie dro¿ej, niedawno w Lidlu by³y sterowniki z podzia³em na dni tygodnia co¶ ko³o 25 zeta. Pozdrawiam
M
M. B.
Dziêki, sprawdzê ten uPD7225. Procek nie wchodzi w grê, wy¶wietlacz ma byæ podpiêty do istniej±cego uk³adu.
Dziêki, pozdrawiam... Mariusz
M
Marcin
Te scalaki bez problemów chodz±. Ja sobie zrobi³em zegar na tym scalaczku i bez problemów podtrzymuje przez 7 dni (wiêcej nie testowa³em).
Zgadza siê, ale tego sterownika nie mo¿na rozbudowaæ. Buduj±c sterownik samemu mo¿na sobie dobraæ ilo¶æ wyj¶c steru±cych Np.: o¶wietlenie, napowietrzanie, automatyczne karmienie, sterowanie temperatur± wody. Wszystko zale¿y od pomys³ów konstruktora. Koszt w³asnej konstrukcji nie powinien przekroczyæ 50z³ czyli dwukrotnie wy¿sza ni¿ w Lidlu, ale za to mamy dynamiczne urz±dzenie które programowo mo¿emy sobie dostosowaæ do w³asnych potrzeb.
Marcin SQ3LMK
>
T
ToR
Witam ;)!
Dziekuje wszytkim za help'a ;).Sterownik chce zrobic na procku Atmega8,ale czytajac powyzsze posty pojawilo mi sie pytanie. Gdyz ja ten program widzialem tak :
najperw za pomoca Timera T0 odmierze sobie jedna sekuna a potem odpowiednio ja zlicajac dodam minuty i sek...A tu powiedziane zostalo o 2-timerach czy mozna prosic o rozwiniecie tego watku?
(Atmega8,WinAVR,AVR Studio 4.0)
Pozdarwiam, Rafal k.
P
Piotr Pitucha
U¿ytkownik "ToR" <ToR snipped-for-privacy@o2.pl napisa³ w wiadomo¶ci news: snipped-for-privacy@newsgate.onet.pl...
Wypowiedzia³em sie niejednoznacznie, nie chodzi³o mi o drugi timer tylko o RTC z separowanym zegarem od zegara procesora, zerknij np. do PDFa od Atmegi32, je¶li u¿ywasz Atmega8 to niestety on tego nie ma. W ksi±¿ce o Bascomie wydanej przez BTC jest fajny uk³ad, Atmega z kwarcem zegarkowym 32kHz... Pozdrawiam
D
Darek R.
ToR napisał(a):
Hmm, to jak zamierzasz użyć ATmega8 i WinAVR to może zainteresuje Cię ten wątek:
formatting link
w nim opisane jak na ATmega8 zrobić prosty zegarek, odmierzanie czasu na T2 taktowanym asynchronicznie z kwarca 32 kHz. Zegar został pomyślnie przetestowany przez VSS, ma niedługo wrzucić wszystko na stronę - póki co mogę Ci przesłać kod źródłowy - miałbyś jakiś punkt zaczepienia. Jeśli chodzi o to czy będzie chodził wystarczająco dokładnie to kwarce zegarkowe mają zazwyczaj koło 20 ppm, ew. możesz dostroić konkretny egzemplarz trymerkiem albo dołożyć korekcję programową.
D
Darek R.
Piotr Pitucha napisał(a):
Jak nie ma jak ma... T2 możesz taktować asynchronicznie z kwarca 32kHz.
P
Piotr Pitucha
U¿ytkownik "Darek R." snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:drvjl9$cr4$ snipped-for-privacy@news.onet.pl...
Miêdzy RTC a timerem T2 jest ró¿nica.... Mo¿na ró¿ne sztuki robiæ na procesorach ale prawda jest taka ¿e Atmega32 jak wynika z PDFa producenta ma RTC a Atnega8 nie. Pozdrawiam
D
Darek R.
Piotr Pitucha napisał(a):
Tak sobie dla pewności jeszcze raz zajrzałem w pdfy do tych procków czy nic mi nie umknęło, ale nie. Zarówno w ATmega32 jak i ATmega8, na pierwszej stronie pdfa jest wzmianka o RTC (Real Time Counter with Separate Oscillator). W dodatku ten RTC na ATmega32 jest TAKI SAM jak na ATmega8 - napisz dokładnie gdzie Ty widzisz różnicę.
P
Piotr Pitucha
U¿ytkownik "Darek R." snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:drvlgo$ic0$ snipped-for-privacy@news.onet.pl...
Atmega32 ma oddzielne nogi do TOSC i XTAL, w Atmega8 to te same koñcówki, czyli nie musisz przy u¿ywaniu TOSC pracowaæ na wewnêtrznym zegarze, pewnie w tym zastosowaniu to nie problem, ale czasami wymagany jest stabilny szybki oscylator a ten wewnêtrzny p³ywa zale¿nie od temperatury jak i zasilania w sposób okrutny. Nie wg³êbia³em siê czu nie ma ró¿nic w pracy RTC w zale¿no¶ci od trybu bo dotychczas tego nie musia³em stosowaæ. Piotr
D
Darek R.
Piotr Pitucha napisał(a):
Masz rację.
I tu również masz rację. Tutaj nie ma powodu dla którego procek nie mógłby być taktowany wbudowanym generatorem RC, mimo jego niskiej stabilności, więc spokojnie ATmega8 wystarczy.
T
ToR
Bylbym Ci bardzo wdzieczny gdyz jestem poczatkujacy i dopiero zaczynam w pisniau oprogramwoania dla sterownikow.
Moj mail jest taki jak w loginie ale jeszce raz podam ToR snipped-for-privacy@o2.pl
Pozdarwiam, Rafa k.
T
ToR
Do wymagan mojego sterownika nalezy odmierzanie czasu oswietlenia -podanego przez urzytkownka za pomoca wprowadzenia danych poprzez 2 przyciski (1-start,2- ilosc przycisniec rownoznaczna z iloscia godzin i potem znow 1-jako start dzialania)
Moj pomysl na prosty zegarek jest nastepujacy jak w kodzie ponizej mam tylko pytanie jak zrobic aby wprowadzic jeszcze obsluge przyciskow? Bo zapewne nie moze to byc zaimplementowane w fukncji SIGNAL (SIG_OVERFLOW0)??
unsigned int Licznik_sekund = 0; unsigned int Licznik_minut = 0; unsigned int Licznik_godzin = 0; unsigned int licznik=4000;
SIGNAL (SIG_OVERFLOW0) { TCNT0=tau0; DDRD=0xFF; if (--licznik==0) { PORTD=Licznik_sekund; licznik=4000; //aby odmierzyc 1 sek Licznik_sekund++;
if (Licznik_sekund==60) { Licznik_sekund = 0; Licznik_minut++; } if (Licznik_minut==60) { Licznik_minut = 0; Licznik_godzin++; } if ((Licznik_godzin==23)&&(Licznik_minut==60)) { Licznik_minut = 0; Licznik_godzin = 0; } //np wlazcanie pzrekanzika u mnie narazie diody... if (Licznik_minut==1) { LED_ON; } } TIFR = (1<<TOV0); }
void main () { TIMSK=1<<TOIE0; //zezwolenie na przerwanie od TC0 TCNT0=tau0; //od kad ma zliczac czyli 250 TCCR0=2; //pleskaler sei(); DDRD=0xFF; PORTD=0XFF; while(1) { } }
-------------------
Co o tym myslicie?
pozdarwiam, Rafal k.
D
Darek R.
ToR napisał(a):
A czemu nie? Może też być wywoływane np. w przerwaniu od naciśnięcia - zależy gdzie masz te przyciski. Może być też w głównej pętli. Kolejne pytanie jak często wywoływane jest to przerwanie - nie napisałeś z jakim zegarem działasz. Tak na oko z kodu programu wynika że 8 Mhz - tak? Jeśli tak to:
1) Czemu to przerwanie jest tak często wywoływane? Potrzebujesz 4 tys przerwań na 1 sek? Nie prościej zwiększyć preskaler, wywoływać przerwanie i nie zliczać licznika aż do 4 tys?
2) Te 8 MHz to jest z kwarcu czy z wewnętrznego RC? Jeśli to drugie to będzie Ci pływało - a chciałeś stabilnie :/ Może jednak wykorzystasz T2 i taktowanie asynchroniczne z kwarca 32kHz? Będziesz mógł ustawić przerwanie co 1 sek (lub nawet rzadziej).
Potrzebujesz aż inta? Char nie starczy?
Użyj timerka z trybem CTC (Clear Timer on Compare Match) - nie będziesz musiał każdorazowo w przerwaniu ładować zawartości timerka.
A po co Ci to w przerwaniu?
Tego if-a możesz zagnieździć w poprzednim.
A ten się nigdy nie wykona - bo jak będzie 23:60 to poprzedni if to zamieni na 24:00. No i też go możesz zagnieździć.
Zerowanie tej flagi jest robione automatycznie sprzętowo podczas wywołania przerwania - nie musisz tego robić ręcznie.
Pamiętasz o tym że T0 liczy zawsze w górę? Na pewno chcesz zliczać 6 cykli czy 250? Bo coś mi się wydaje że to drugie :/
Jeszcze trzeba trochę doszlifować i parę kwestii przemyśleć, ale na początek nie jest źle.
T
ToR
Tak na oko z kodu programu wynika że 8 Mhz -
Tak mam zewnerzny kwarc 8MHz. Jesli chodzi o wywolywanie przerwan to po prostu za pomoca PDF'a od tej atmegi policzylem sobie odpowiednie wspolczyniki i tak mi jakos wyszlo ale widze ze niezbyt szczesliwie je dobralem ;) ,a wiec szybko to poprawie ;)
Slyszalem cos o tym CTC ale na razie nie rozumiem jego ideii..Mozesz cos wiecej na ten temat?
No wlasnie chce zliczac 250 cykli,bo tak wyszlo mi z obliczen...I w T0 ustawiam wartosc 6 aby 250 = 256 - 6;
Pozdrawiam, Rafal k.
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.