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

Jak obsłużyć przerwanie od T0 w mikrokontrolerze AT90S2313?

pawel1963 08 Lip 2003 23:14 1457 2
  • #1 281274
    pawel1963
    Poziom 2  
    Posty: 4
    mam problem z obsługą przerwania od T0 w at90s2313.
    oto programik:
    ;program

    .nolist
    .include "c:\avrtools\appnotes\2313def.inc"
    .list

    .def temp=r16
    .def counter=r17
    .def time=r18
    .def one=r19
    .def zero=r20
    .def tim_reg=r21

    .cseg
    .org $000
    rjmp reset
    .cseg
    .org OVF0addr
    rjmp intrpt

    reset: rjmp init

    intrpt: ;obsługa przerwania
    in r22,SREG
    push r22
    inc counter
    pop r22
    out SREG,r22
    reti

    init: ;ustawienia początkowe
    ldi one,15
    ldi zero,0

    ldi counter,0
    ldi temp,ramend
    out spl,temp

    ldi temp,255 ;port b jako wyjście
    out ddrb,temp

    ldi temp,0b11111111 ;ledy wyłączone
    out portb,temp
    rjmp timer

    timer: sei ;ustawienia timera
    ldi tim_reg,timsk
    ori tim_reg,0b00000010
    out timsk,tim_reg

    ldi tim_reg,tccr0
    ori tim_reg,0b00000101 ;1024
    out tccr0,tim_reg
    rjmp loop

    wait: ldi counter,0 ;
    ldi time,15 ;ok. 1sek
    rjmp count

    count: cpse counter,time ;pętla czasowa
    rjmp count
    ret

    loop: rcall wait
    out portb,zero ;ledy włączone
    rcall wait
    out portb,one ;ledy wyłączone
    rjmp loop

    czy ktoś mi może powiedzieć dlaczego to nie chodzi????????????
    układ jest ok i programator też - inne programy chodzą bez problemu.
  • #2 283534
    marchewa101
    Poziom 17  
    Posty: 301
    Pomógł: 2
    Ocena: 8
    Mozesz powiedziec co to ma wogole robic??

    na pierwszyz zut oka to:
    1. Mie masz zdefiniowanego stosu No jednak masz
    2. Nie masz Glownego programu
    3. po co wpisales dwa razy .cseg ??

    I jeszcze pytanie co daj komenda .nolist??

    Postaram sie przerobic ten program by dzialal

    Zmieniony

    To juz przegladnelem ten programik i go troszke pozmienialem... w symulatorze dziala (AVRStudio)

    Radze porownac ze swoim poprzednim programem.
    Porady:
    1.Uzywaj "tab" by sie niezgubic w programie i robic odstepy
    2.Widac ze pisales programy w jezyku wysokiego poziomu...
    nie musisz robic czegos takiego:

    rjmp etykieta

    Etykieta:

    bo program bez tego rjmp etykieta tez bedzie dzialal
    3.Wiecej porad masz w zalaczniku
    Załączniki:
    • Poprawione.rar (775 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
    • Poprawione.rar (775 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
  • #3 287525
    pawel1963
    Poziom 2  
    Posty: 4
    Dzięki za parę cennych uwag.
    Sorry, że tak długo nie odpowiadałem ale byłem trochę zajęty.
    Program który mi podesłałeś też nie działał, choć na symulatorze w AVR Studio 4 działał poprawnie. Dopiero po zamianie:

    ldi temp,timsk
    ori temp,(1<<TOIE0)
    out timsk,temp
    na:
    ldi temp,0b00000010
    out timsk,temp

    ruszył i nie wiem dlaczego???
    Jeszcze raz dzięki.
    Paweł
REKLAMA