spinach Postat Octombrie 10, 2011 Partajează Postat Octombrie 10, 2011 salutam,Incercind sa setez un timer de 16 biti , m-am impotmolit . Am consultat si un calculator "AvrCalc" ; Nu am gasit inca logica de setare pentru OCR1AL si OCR1AH . Se poate in 2 variante , astfel:-fie punem o valoare in fiecare registru si cele 2 registre inmultite vor da un rezultat , care de fapt este valoarea ce vrem sa o implementam -fie numarul dorit il transformam in binar si de la dreapta la stinga , primi 8 biti sint pentru registru L , urmatorii 8 biti sint pentru registru H-fie altfel , cum inca nu stiu .Cum sa fac ? Link spre comentariu
nico_2010 Postat Octombrie 11, 2011 Partajează Postat Octombrie 11, 2011 Salut! regula este ca intai sa scrii OCR1H, apoi OCR1L, cum de altfel este mentionat si in foaile de catalog ale uC tip ATMEL: "To do a 16-bit write, the High byte must be written before the Low byte. For a 16-bit read, the Low byte must be read before the High byte." Pentru a te lamuri mai bine citeste, spre exemplu pag.79 din foaia de catalog a ATNEGA 8 Link spre comentariu
spinach Postat Octombrie 11, 2011 Autor Partajează Postat Octombrie 11, 2011 Ok. Este o informatie foarte buna , pe care nu o cunosteam . Problema pe care o am este insa alta . Sa zicem ca vreau sa scriu in OCR valoarea 32312 . Cum ca calculez si ce scriu in H si L . Adica dupa ce logica trebuie sa departajez valoarile scrise in H si L Link spre comentariu
nico_2010 Postat Octombrie 11, 2011 Partajează Postat Octombrie 11, 2011 Valoarea stabilita de tine o transformi in din zecimal in hexazecimal si astfel vei avea doi octeti. Pe primul (cel mai din stanga) il folosesti pentru a inscrie OCR1H, iar pe celalalt il folosesti pentru a inscrie OCR1L. Exemplu pentru valoarea data de tine: - zecimal: 32312 - hexazecimal: 7E 38 In acest caz OCR1H = 7E iar OCR1L = 38 Link spre comentariu
spinach Postat Octombrie 11, 2011 Autor Partajează Postat Octombrie 11, 2011 Da, am inteles pe moment. MUltumesc . Am fac ceva exercitiiDaca tot este subiectl deschis , pun intrebarea privind formula fOCnA=fclk_I/O / (2 ⋅ N ⋅ (1 + OCRnA))Formula am gasit-o pentru CTC mod . Aici , se adauga un ciclu la valoarea stabilita pentru OCR .La Ph Cr PWM nu se mai adauga acest ciclu . Presupunind ca sintem in normal mod , pe calea B , si resetam contori in intrerupere , la calcul mai adaugam 1 ciclu ? Link spre comentariu
nico_2010 Postat Octombrie 11, 2011 Partajează Postat Octombrie 11, 2011 In acest ultim caz formula este:fOCnxPWM= fclk_I/O/(N ⋅ (1 + TOP))unde N reprezinta valoarea data prescalerului (1, 8, 64, 256, sau 1024)Vezi pag.91 din aceeasi foaie de catalog. Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum