Sari la conținut
ELFORUM - Forumul electronistilor

Countdown timer cu ATmega8 "puturos"


Spitfire

Postări Recomandate

Vizitator aaaaaa

Am programat cu noua valoare pt delay, dar inca are unele dati cand nu pleaca. Ar trebui si mai mare?Inca o chestie: pt setare uneori butoanele trebuie sa le apas de cate 2-3 ori ca sa incrementeze/decrementeze valorile si uneori secundele nu se scurg liniar, din aprox 10 in 10 sec se decrementeaza mai repede decat ar trebui(asta ochiometric).

Link spre comentariu
  • Răspunsuri 24
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Spitfire

    4

  • srdjan

    4

  • godFather89

    3

  • DarkAngel_Bv

    2

Top autori în acest subiect

Nu inteleg de ce proiecte atat de simple sunt proiectate sa functioneze cu ceas de 16MHz. Probabil cel mai ok (din punct de vedere al consumului) era sa modifici codul sa functioneze corect cu ceasul intern de 1MHz.

Probabil aplicatiile sunt realizate pe placi de dezvoltare care au un cristal de valoare mare, pentru a acoperii o gama larga de aplicatii. Dupa ce au scris codul care a functionat pe placa nu au mai modificat programul pentru o valoare mai mica a cuartului.
Link spre comentariu
Vizitator aaaaaa

Vad ca nimeni nu a mai intampinat problema asta a mea, cu neinitializarea LCD...in fine, voi reface proiectul.Mai am o intrebare: ce linii de cod ar trebui modificate pentru a-l face sa numere UP dupa ce a ajuns la 00:00:00 ??

Link spre comentariu
Vizitator aaaaaa

Vad ca nimeni nu a mai intampinat problema asta a mea, cu neinitializarea LCD...in fine, voi reface proiectul.Mai am o intrebare: ce linii de cod ar trebui modificate pentru a-l face sa numere UP dupa ce a ajuns la 00:00:00 ??

LE:am reusit sa il fac sa numere up dupa ce trece prin 0, trebuia modificat ISR-ul din subsolul programului principal.Din ce am mai citit, problema neinitializarii LCD provine de la o secventa incorecta de init, eventual si delay-uri insuficiente.Intrebare pentru DarkAngel_Bv, cum ai reusit doar 1 sec eroare dupa 2 zile? Ca in varianta originala cu 16 MHz vad ca ia vreo 10 secunde dupa o ora.
Link spre comentariu

Am realizat urmatorul montajel cu atmega8, functioneaza OK, mai putin faptul ca e nemaipomenit de lenes, ia comenzile cu foarte mare intarziere, dureaza cam un minut pana porneste, si numara o secunda in vreo 7-8...am folosit quartz si de 4 si de 16 Mhz, am lasat si fara quartz, nici o schimbare. Stie cineva care ar putea fi cauza leneviei carabusului atmega8?http://extremeelectronics.co.in/avr-pro ... 8-avr-mcu/

Tot am zis sa vad ce e cu atmel-urile asa ca am terminat acest montaj acum citeva ore. Se comporta exact cum spuneti dv., dar dupa setarea fuse bits low =FF si high=C9 si-a revenit si merge foarte OK, cu cristal de 16mhz! Ce nu-mi place la temporizator este ca nu memoreaza durata de temporizare setata, trebuie inscrisa inainte de fiecare actionare! Apropo, la ceata care este inca in capul meu la capitolul fuse bits ma astept sa reusesc sa le blochez cit de curind. Pentru deblocare m-am gindit la aplicatia de aici: http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/ A fost testat de cineva, ce parere aveti? Un tip comenteaza ca ar fi fake pentru a bloca controlerele??
Link spre comentariu
Vizitator aaaaaa

Marele Savant, felicitari pentru montaj.Al meu avea eroare f mare si am reusit sa o depistez: Target Timer Count = (1 / Target Frequency) / (1 / Timer Clock Frequency) - 1 Problema era ca din linia de cod respectiva din program nu se scazuse 1.Asadar, linia OCR1A=250; trebuie sa devina OCR1A=249; din calculele mele.Din cate am inteles, count-ul cu nr "0" dureaza un tact de ceas, de aceea se ia in considerare, de unde si -1 in formula.Eroarea care o am acum este exclusiv din cauza xtalului.Caut sa procur din comert un oscilator integrat de 16 MHz, dar nu prea gasesc. Stie careva vreun magazin care comercializeaza asa ceva?

Link spre comentariu

Sincer nu am cronometrat cit timp dureaza un minut! Am sesizat numai ca aveam aceeasi intirziere mare pe care o sesizati dv in primul post al topic-ului care a disparut dupa setarea fuse bits. Acuma sint la job, miine voi cronometra daca masoara corect timpul.

Link spre comentariu
  • 1 lună mai târziu...

Apropo, la ceata care este inca in capul meu la capitolul fuse bits ma astept sa reusesc sa le blochez cit de curind. Pentru deblocare m-am gindit la aplicatia de aici: http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/ A fost testat de cineva, ce parere aveti? Un tip comenteaza ca ar fi fake pentru a bloca controlerele??

Scuze pentru raspunsul intirziat. Am construit eu montajul de mai sus pentru deblocare Atmega si functioneaza ireprosabil. Cei drept l-am testat numai cu citeva atmega8.Cu respect.
Link spre comentariu

Vad ca nimeni nu a mai intampinat problema asta a mea, cu neinitializarea LCD...in fine, voi reface proiectul.Mai am o intrebare: ce linii de cod ar trebui modificate pentru a-l face sa numere UP dupa ce a ajuns la 00:00:00 ??

LE:am reusit sa il fac sa numere up dupa ce trece prin 0, trebuia modificat ISR-ul din subsolul programului principal.Din ce am mai citit, problema neinitializarii LCD provine de la o secventa incorecta de init, eventual si delay-uri insuficiente.Intrebare pentru DarkAngel_Bv, cum ai reusit doar 1 sec eroare dupa 2 zile? Ca in varianta originala cu 16 MHz vad ca ia vreo 10 secunde dupa o ora.
Pai cu frecventa de 1 Mhz interna si delay de 1000 uS asta a fost rezultatul. Am facut si testul urmator:- Lasat fusebitii originali si trecut in program 8000000 ca frecventa. Dura 8 secunde pana numara o secunda :d deci probabil asta era si problema initiatorului.Prima data afisam pe display secundele, dar la un moment dat ajunsese sa fie cu minus (variabila era integer).Cand ai nevoie de timpi foarte precisi (aici ma refer la un ceas spre exemplu) cel mai usor este sa folosesti un cip dedicat cu quartz propriu conectat prin I2C.in felul asta stii sigur ca interrupts-urile sau alte delay-uri din program nu iti afecteaza acuratetea.
Link spre comentariu
  • 1 lună mai târziu...
Vizitator aaaaaa

Montajul meu acum functioneaza ireprosabil.

 

In primul rand,

//Set up the timer1 as described in the		//tutorial		TCCR1B=(1<<WGM12)|(1<<CS11)|(1<<CS10);		OCR1A=250;
acest cod era gresit, valoarea OCR1A trebuind sa fie 249.(Am nevoie de divizare cu 250 ca sa fac intrerrupts la 1 KHz, dar OCR1A porneste de la 0. Deci De la 0 la 249 = 250). Aceasta mica eroare imi dadea 14.4 secunde/ora eroare.

 

In al doilea rand, am montat Xtal de 16 Mhz iar pe una dintre ramurile acestuia, in loc de capacitati fixe, am pus un trimmer. Ascultand oscilatorul in Yaesu FT-857, am reusit din trimmer sa il aduc cat de cat in jurul 16000000. Probabil eroarea actuala este de +- 100 Hz.

 

Pasul urmator ar fi sa incerc o interfatare cu un RTC sau cu DCF77 din Frankfurt. Daca a realizat cineva asa ceva, rog detalii.

 

 

De asemenea, am facut si niste mici modificari pentru montare buzzer, iesire de 1 Hz, iesire de sarcina cand numaratoarea inversa ajunge la 0, precum si clock, folosind montajul ca un ceas digital cu 24 h, acesta setandu-se in acelasi mod cum se seteaza timerul.

 

Mai vreau sa fac o alimentare din baterie, care sa tina minte timerul/clockul in cazul unei deconectari de la alimentarea externa.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări