Jump to content
ELFORUM - Forumul electronistilor

Functionare Atmega8 cu TMR0 ?


messu

Recommended Posts

Pe scurt, incerc sa realizez un controller, dublu, pentru o statie de lipit cu letcon si generator de aer cald. Topologia, e clasica si nu stiu daca necesita detalii.

Totul a functionat corect pana in momentul in care am hotarat sa adaug o functie de Auto Oprire, dupa un interval

de timp. Intervalul ales a fost de 1 ora.

Masurarea timpului am hotarat sa o fac cu overflow pe TMR0.

Frecventa de lucru a uC-ului este de 8MHz.Timerul 0 are o prescalare de 1:256.

Tot din soft, la pornire, am introdus posibilitatea de a alege intre functionarea cu Timer, sau fara.

Daca aleg functionarea fara timer, totul este in regula si nu apare nicio problema.

Daca insa aleg activarea timer-ului, treaba se schimba si uneori totul functioneaza perfect

alteori, softul se blocheaza si pe display apar niste caractere incescifrabile, dupa cum se poate vedea

si display-ul clipeste cu frecventa foarte mare ("fileaza")

Blocarea apare , cel putin aparent, aleator.

Care ar putea fi explicatia pentru functionarea, diferita, a aceluiasi cod hex, in aceeasi schema ?

Imi pare rau ca nu pot atasa filmarea care ar fi fost probabil mult mai clara.

post-175759-0-02763300-1502190472_thumb.jpg

post-175759-0-91544600-1502190477_thumb.jpg

post-175759-0-67465300-1502190482_thumb.jpg

post-175759-0-72115900-1502190496_thumb.jpg

post-175759-0-92873200-1502190501_thumb.jpg

Link to comment
  • Replies 21
  • Created
  • Last Reply

Top Posters In This Topic

  • messu

    12

  • nico_2010

    7

  • Elison

    3

Top Posters In This Topic

Posted Images

Neavand globul de cristal la mine (este pe moment imprumutat altcuiva) nu as putea sa-ti spun exact de ce functioneaza asa si nu corect!

Nu crezi ca ar fi fost mai bine daca postai si codul?

 

L.E.: Timer0 are o prioritate mai mica decat celelalte timere. Vezi foaia de catalog pag.46

Link to comment

:):) :)

Cod nu stiu sa scriu. Proiectul este facut cu Flowcode si am bagat de seama ca lumea nu prea agreeaza asa ceva. Dar pot sa postez codurile *.c si *. hex asa cum le genereaza Flowcode, daca sint de interes.

Nelamurilrea mea era legata de faptul ca functionarea nu este mereu la fel. Buna sau rea, dar la fel.

Nu se executa mereu acelasi cod ?

 

P.S. Nu pot sa atasex nici c nici hex. Nu sint permise astfel de fisiere.


am schimbat, un pic, extensiile....

ss_2_c.txt

ss_2_hex.txt

Link to comment

Nu folosesc Flowcode. Poti incerca sa atasezi fisierele .c si .hex copiindu-le in Notepad si salvandu-le apoi sub forma de text.

Va fi amuzant sa vad un astfel de cod generat de Flowcode.

Link to comment

Am sa incerc sa schimb Timer0 cu Timer1 sau Timer2. M-am gandit mai devereme la asta insa ca alternativa nu ca explicatie la ceea ce se intampla in momentul asta.

Am atasat deja codurile.

Sper ca vizualizarea lor sa fie doar amuzanta nu si....enervanta. Sper...

Link to comment

Vad ca folosesti PWM cu Timer0? sau ma insel?

in orice caz, mi se pare ciudat codul de mai jos:

	//Interrupt
	//Interrupt: Enable TMR0
	TCCR0 &= 0xf8;
	TCCR0 |= 0x04;
	sei();// asta trebuia sa fie dupa linia urmatoare
	TIMSK |= (1 << TOIE0);

Link to comment

PWM folosesc, dar, cinstit sa fiu, nu stiu cum si cu ce timer se face pentru ca Flowcode-ul nu e prea clar la pasul asta.

Daca PWM este pe Timer0, atunci nu stiu daca e o situatie prea fericita, cata vreme si Auto Standby e tot pe Timer0 si mai fi folosesc si prescalere diferite.

Cred ca am sa incerc sa mut Auto Standby pe Timer2, sa vad ce se intampla.

Multumesc de sugestie si am sa revin cu rezultatul !

Link to comment

Schimbarea timerului poate aduce si alte probleme (Timer2 are prioritate mai mare decat Timer0), asa ca manifesta atentie la aceasta schimbare.Poate ar fi bine sa folosesti functia Compare pentru Timer2 (este hardware si nu ar trebui sa genereze probleme). Si totusi, o ora???

Link to comment

Am inteles ! Am redus timpul la 30 de minute :)

Din pacate in Flowcode nu gasesc nimic despre functia Compare.

Iar utilizarea TMR1 si TMR2 vad ca, cel putin momentan, nu merge. Imi da erori la complilare.

 

C:\Users\Exocad\Desktop\SS_30M~1\ss_28_05_2017_stabilizatADC_timer.c:1846: error: 'TCCR2B' undeclared (first use in this function)
C:\Users\Exocad\Desktop\SS_30M~1\ss_28_05_2017_stabilizatADC_timer.c:1849: error: 'TIMSK2' undeclared (first use in this function)

Am sa incerc si acasa, pe Win 7, pentru ca pe Win 10 merge cam aiurea Flowcode-ul asta, dar am impresia ca nu o sa rezolv nimic...

Link to comment

Stiiiiiu asta.

Necazul e ca nu prea am EU ce sa fac, in privinta asta, mai ales datorita faptului ca n-am abilitati de programare.

Am, totusi, impresia ca e ceva problema cu compilatorul integrat in Flowcode. Am portat intreg proiectul pe Atmega328, care e asemanator cu Atmega8 si n-am mai patit eroarea de mai sus nici cu TMR1, nici cu TMR2. In simulare functioneaza. Am sa incerc si fizic ca stiu cam am niste Atmega328...pe undeva...

Link to comment

Acum s-a compilat.

Am incercat o simulare in Proteus, pentru TMR1 si a fost OK de catreva ori, dupa care i-ar s-a blocat. Am sa incerc si cu uC-ul real, dar am impresia ca nu-i prieste treaba asta cu timerele, cel putin in proiectul asta al meu :)

Link to comment

Scrie hexul si incearca-l in circuit !

Daca tot nu merge poate postezi si fisierul fcf_avr.

Poate fi o problema in macro care este apelat atunci cand este generata intreruperea, am vazut chiar si delay-uri in astfel de macro.

Link to comment

Da, pare ca macro-ul apelat la intrerupere, era cam aglomerat. Am mutat intreruperea pe TMR2, am "curatat" macro-ul, am lasat in el strict incrementarea secundelor si restul am pus intr-un alt macro.

Am rulat cateva simulari si nu s-a mai blocat.

Abia astept sa ajung acasa si sa incerc direct pe uC ca sa vad cum se comporta....

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines