Witam,
mam problem z uruchomieniem programu do zliczania impulsów na T1 przez 1 sekundę. Wyświetla mi ciągle zero. Co źle ustawiłem z Timerami ??
Atmega 32
Wrzuć program przez syntax bo tego się czytać nie da.
Obliczenia przerwanie na Timerze0 co 1 sek:
1MHz / 64 (preskaler) = 15625 imp/sek
Timer1 skonfigurowany do pracy normalne czyli przerwanie będzie po przepełnieniu się rejestru TCNT0, żeby rejestr ten przepełnił się potrzeba 255 impulsów czyli
przy 1MHz i preskalerze 64 przepełnienie rejestru TCNT0 następuje co 61,04 impulsy.
Tak więc zmienna "stala" powinna być ustawiona na 61.
To po pierwsze, teraz druga rzecz, nie masz włączonego rezystora podciągającego na pinie PB1.
Czy masz rezystor zewnętrzny?
Trzecie zmienna "stala" powinna być volatile.
Po czwarte - próbowałeś wyświetlać zmienną licznik?
i na zakończenie nie nazywaj zmiennej "stala" - jest to wielce mylące.
Pozdrawiam
Zastanów się co będzie w rejestrze TIMSK po wykonaniu tych dwóch linii Twojego programu:
dondu napisał:Zastanów się co będzie w rejestrze TIMSK po wykonaniu tych dwóch linii Twojego programu:
Kod: cZaloguj się, aby zobaczyć kod
Nie definiuj F_CPU w kodzie z tych powodów: http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html
A jeszcze jedno pytanie, jaki impulsy zliczasz? z czego? jakie parametry ma impuls, czas trwania impulsu?
0sla198 napisał:Impulsy robię albo przyciskiem podpiętym z jednej strony do +5V a z drugiej do PB1 lub generatorem z karty muzycznej ale w obu przypadkach to sam czyli zero.
snnaap napisał:O faktycznie, to przeoczyłem
Jeszcze jedno pytanie pytanie.
Dlaczego mi się ciągle atmega resetuje ?? Efekt ten zauważyłem od kiedy podpiąłem wyświetlacz. Reset podpinałem przez 10kΩ i przez 4,7kΩ do +5V i nadal to samo.
Napięcie zasilania brane z portu USB lub z zasilacza zero różnicy.
Pokaż schemat, a przyczynę resetu ustal na podstawie rejestru MCUCSR.
0zmień
TCCR1B = (1<< CS12) |(1<< CS11); //żródło zewnętrzne - zbocze opadające
na zbocze narastające.
Wyłącz wewnętrzny rezystor podciągający.
Dodaj zewnętrzny rezystor do masy.