logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[bascom][atmega8] Problem z przerwaniami od przepelnienia

zuraf 02 Lis 2009 17:54 1122 2
REKLAMA
  • #1 7206520
    zuraf
    Poziom 14  
    Witam. Mam nastepujacy problem... napisalem programik generujacy przerwania od przepelnienia licznika.

    $crystal = 16000000
    
    $regfile "m8def.dat"
    
    
    Config Portd.5 = Output
    
    
    Config Timer0 = Timer , Prescale = 8
    On Timer0 Intr
    Enable Interrupts
    Enable Timer0
    Portd.5 = 0
    
    
    Do
    
    Loop
    End
    
    Intr:
    Load Counter0 = 5
    Toggle Portd.5
    
    Return


    Problem w tym ze nie reaguje on na wartosci wpisywane do licznika. jakby przepelnial sie liczac do 256. Potrzebuje by to przerwanie bylo wywolywane co ok 500ns i mozna bylo tym regulowac... Gdzie tu jest blad?
  • REKLAMA
  • #3 7206736
    dawid512
    Poziom 32  
    Krauser napisał:
    Dziwne, że Bascom nie zgłosił błędu. Moim zdaniem powinno być:
    Load Timer0, 5

    albo

    Brakuje również Start Timer0, ale może Bascom i tak go uruchamia.


    Jedna jak i druga forma jest poprawna choć działa trochę inaczej.
    Po za tym komenda start timer0 jest zbędna gdyż ustawienie preskalera samo w sobie już startuje licznik.

    :arrow: Do autora:

    Tak na szybko:

    :arrow: jeszcze przed pętlą wpisz wartość do licznika np. counter0 = 248
    :arrow: radzę zmienić preskaler na 1 a wartość do licznika wpisać tak:

    counter0 = counter0 + 248
REKLAMA