Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATmega32 - Licznik impulsów Timer0 i Timer1 ustawienie

sla198 28 Mar 2013 18:50 4422 15
  • #1 28 Mar 2013 18:50
    sla198
    Poziom 9  

    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

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 15
  • #2 28 Mar 2013 19:23
    snnaap
    Poziom 25  

    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

    0
  • #5 29 Mar 2013 13:49
    sla198
    Poziom 9  

    Tak próbowałem wyświetlić zmienna licznik jest ciagle 0.
    Nie mam rezystora zewnętrznego.
    Tak poprawiłem kod ale nadal jest to samo czyli 0.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #7 29 Mar 2013 13:59
    sla198
    Poziom 9  

    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.

    0
  • #8 29 Mar 2013 14:02
    snnaap
    Poziom 25  

    sla198 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.


    Jak z jednej strony do +5?
    Ma być do masy a nie do vcc.

    0
  • #9 29 Mar 2013 14:07
    Sparrowhawk
    Poziom 21  

    Skoro wejście masz podciągnięte do +5, i przycisk jest podłączony do +5, to nigdy na tym wejściu nie pojawi się nic innego niż +5V.

    0
  • #10 29 Mar 2013 14:14
    sla198
    Poziom 9  

    Zgadza się pomyliłem, do masy ;)
    Dziękuje za pomoc.
    Już wyświetla mi liczby.

    0
  • #12 29 Mar 2013 19:47
    sla198
    Poziom 9  

    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.

    0
  • #14 29 Mar 2013 21:56
    sla198
    Poziom 9  

    Dorzuciłem parę kondensatorów i już jest sytuacja opanowana :D
    Jak zmienić program żeby liczył impulsy +5 V a nie GND ?

    0
  • #16 29 Mar 2013 22:18
    sla198
    Poziom 9  

    No właśnie tego rezystora zewnętrznego mi brakowało bo tak zmieniałem tylko samo sobie dawało jakieś impulsy i pokazywało koło 50 :D
    Jakiej wartości rezystor z 1kΩ czy źle myślę?

    0