ramsesrr Postat Iulie 13, 2010 Partajează Postat Iulie 13, 2010 Cum pot masura frecventa unui semnal cu un atmega32 csre functioneaz la 16MHz.Semnalul il injectez in PB0,am setat sursa de clock externa si intreruperea la depasire dar nu stiu ce sa ma fac in continuare TCCR0|=(1<<CS02)|(1<<CS01)|(1<<CS00);TIMSK |=(1<<OCIE0); //intrerupere timer 0 TCNT0=0Doresc sa masor doar frecvente in intervalul 0-40KHz. Link spre comentariu
Mikrosha Postat Iulie 13, 2010 Partajează Postat Iulie 13, 2010 Folosesti 2 timere. Primul timer va rula ca counter si va numara impulsurile pe pinul corespunzator. Al doilea va rula dupa frecventa oscilatorului intern si va genera o intrerupere cu frecventa de n Hz. In ISR-ul astuia, o data la n intreruperi apelezi o functie - adica fix o data pe secunda. In functia asta faci asa: citesti primul timer, il afisezi, il resetezi, resetezi n. Daca nu vrei sa folosesti doua timere, atunci ai doar un timer cu care generezi secunda. In main, independent de intreruperi, numeri de cate ori pinul de intrare comuta de pe 0 pe 1 (sau invers). Adica faci o bucla infinita, retii valoarea anterioara, si daca val. actuala e diferita de cea anterioara, atunci incrementeaza contorul. Ceva Gen:while (true) {prezent = portb.1;if (anterior==0)&&(prezent==1) contor++;anterior=prezent;}Sper ca m-ai inteles. Spor Link spre comentariu
catkiller Postat Iulie 14, 2010 Partajează Postat Iulie 14, 2010 uite, s-a discutat aici viewtopic.php?f=37&t=63272e postat un link cu un exemplu 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