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

Attiny13 - Przerwanie dla Timer0, przepełnienie stosu

20rafalo 16 Lip 2012 22:19 5642 15
REKLAMA
  • #1 11113533
    20rafalo
    Poziom 19  
    Witam
    Kontynuuję zabawę z przerwaniami (Attiny13).
    Jednak mam pewne wątpliwości...
    Czy procedura jest ok?
    
    ISR(TIMER0_COMPA_vect)//chyba ok, ewentualnie: _COMPB
    {
    
    }
    

    Linkier daje ostrzeżenie...

    'TIMER0_COMPA_vect' appears to be a misspelled signal handler

    Nie widzę błędu... ;\
    Podczas symulacji dostaje błąd:
    AVR Simulator: Stack pointer below start of RAM

    Który świadczy o przepełnieniu stosu, a to dopiero "szkielet" programu- zajmuje kilka procent...

    kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Z góry dzięki...
  • REKLAMA
  • #2 11113567
    LordBlick
    VIP Zasłużony dla elektroda
    tutaj masz przykład:
    https://www.elektroda.pl/rtvforum/topic2077545.html
    Z grubsza to powinieneś użyć:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Tutaj masz po przewinięciu tabelkę kojarzącą µC z nazwami ISR (nie tylko Timer0 zresztą):
    http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html
  • #3 11113649
    20rafalo
    Poziom 19  
    Dzięki, znalazłem. Jakiś powód musiał być, że nazwa timera to 'TIM' a nie TIMER'..;/
    Zauważyłem że opcja "compare match" może wystąpić jako "A" lub 'B'

    TIM0_COMPA_vect 	Timer/Counter Compare Match A 
    
    TIM0_COMPB_vect 	Timer/Counter Compare Match B 

    Ty niedawno napisałeś w innym temacie:
    "Ogólnie najpierw ustawiasz WGM na CTC, preskaler, TCCR0A a potem przerwanie OCIE0A. Przecież pisałem, że w CTC Compare-B nie ma znaczenia..."

    Trochę się pogubiłem, jak by ktoś mógł rozwiać moje wątpliwości co do wstawiania"A" lub "B"-jako część rejestru.

    Dodam, że po poprawie nazwy timera, nadal występuje przepełnienie stosu- nie wiem jak sie ma to do rzeczywistości....
  • #4 11113730
    mirekk36
    Poziom 42  
    Przede wszystkim, to gdybyś korzystał np z ECLIPSE to zobacz sobie sam na obrazku ;) nie miałbyś nawet możliwości żeby się pomylić z nazwą wektora przerwania - bo w Eclipse masz od razu pod ręką wszystkie nazwy wektorów przerwań, rejestry ale też pliki nagłówkowe i wiele innych zobacz:

    Attiny13 - Przerwanie dla Timer0, przepełnienie stosu

    (nie musisz nawet sięgać do internetu)
  • REKLAMA
  • #5 11113761
    20rafalo
    Poziom 19  
    mirekk36 napisał:
    gdybyś korzystał np z ECLIPSE to zobacz sobie sam na obrazku

    Też tak myślałem, ale popatrz na mój screen:
    Attiny13 - Przerwanie dla Timer0, przepełnienie stosu
    CPU ustawione na Attiny13...
    I co z tym fantem... eclipse?
    Po czym monit:
    Attiny13 - Przerwanie dla Timer0, przepełnienie stosu

    Dla mnie dziwne.. najpier źle podpowiada, po czym zgłasza ostrzeżenie.
    dodam, że program zapisany przed kompilacją itd itp...

    PS korzystam z dwóch programów: Eclipse -z uwagi na dobry edytor (do dziś ;P) oraz AVRStudio z uwagi na symulator, który dodatkowo podpowie jakie są możliwości w ustawieniach np przerwań i co zostało ustawione (Imiennie oraz w postaci bitów) - to by się przydało w eclipse..)

    Dodano po 11 [minuty]:

    20rafalo napisał:
    TIM0_COMPA_vect Timer/Counter Compare Match A

    TIM0_COMPB_vect Timer/Counter Compare Match B

    PS2 i jak jest z COMPA oraz COMPB ?
  • #6 11113845
    mirekk36
    Poziom 42  
    Ja pokazałem przecież tobie też screen z Eclipse i mi dobrze podpowiada wektory dla ATtiny13 ... więc może coś po drodze gdzieś jeszcze źle poustawiałeś ? Jaką masz wersję Eclipse ? bo ja wersję "Juno" i polecam ci ją także. Oczywiście jeśli chcesz symulator w takiej postaci o jakiej piszesz to nic nie stoi na przeszkodzie aby mieć AVRS pod ręką.
  • REKLAMA
  • #7 11113892
    LordBlick
    VIP Zasłużony dla elektroda
    20rafalo napisał:
    PS2 i jak jest z COMPA oraz COMPB ?
    W trybie CTC B jest nieużywane.
    Co do stosu - przenieś zawartość led_inicial() do main(). Ogólnie unikaj używania wywoływania funkcji na tym µC.
  • #8 11113990
    20rafalo
    Poziom 19  
    Eclipse Ganymede - skonfigurowana przez Ciebie- z plyty.
    Eclipse Platform
    
    Version: 3.4.2
    Build id: M20090211-1700
    
    (c) Copyright Eclipse contributors and others 2000, 2009.  All rights 

    Może coś się posypało...
    PS Wersja, której teraz używasz jest do ściągnięcia już wstępnie skonfigurowana jak ta co teraz mam?

    LordBlick napisał:
    przenieś zawartość led_inicial() do main().

    nic nie zmieniło - w symulacji się "krzaczy"
    Symulator dojeżdża do "sei();//" i tak w kółko-i w koncu przepełnienie stosu; nigdy nie dochodzi do "while(1)"
  • #10 11114516
    LordBlick
    VIP Zasłużony dla elektroda
    Nie wiem o co chodzi, u mnie taki kod jest OK:
    Kod: text
    Zaloguj się, aby zobaczyć kod
    Dalej niż zaraz za sei nie zajdzie, bo już tam nic więcej nie ma.
  • #11 11115887
    20rafalo
    Poziom 19  
    LordBlick napisał:
    Dalej niż zaraz za sei nie zajdzie, bo już tam nic więcej nie ma.

    wydaje mi się że powinien wskoczyć w pustą pętlę - na logikę.
    mirekk36 napisał:
    wersję "Juno" i polecam ci ją także.

    http://www.eclipse.org/downloads/
    Które wybrać? ;>
  • REKLAMA
  • #12 11116071
    excray
    Poziom 41  
    Sam kiedyś walczyłem sporo czasu z podobnymi problemami aż w końcu przeinstalowałem AVR Studio (odinstalowałem i zainstalowałem tą samą wersję - 4.19) i problemy się skończyły.
  • #14 11224263
    20rafalo
    Poziom 19  
    LordBlick napisał:
    Eclipse IDE for C/C++ Developers

    Zainstalowałem to nowe środowisko- gorszej porażki nie widziałem...
    mirekk36 napisał:
    20rafalo napisał:

    PS Wersja, której teraz używasz jest do ściągnięcia już wstępnie skonfigurowana jak ta co teraz mam?


    Pewnie, że tak ;)

    Mirku nie wiem w który miejscu jest ona skonfigurowana...
    Miałem od Ciebie wersję Ganymede- w której wystarczyło skonfigurować sobie programator i do dzieła..
    Natomiast w Juno napisałem program mający 15 linijek i wyskoczyło 10 błędów - o zgrozo - nic tam nie ma- błędem jest nawet inkludowana podstawowa biblioteka.
    Natomiast w AVRStudio4 jak i 6 kompiluje się bez najmniejszego ostrzeżenia..
    Wgrałem najnowszy avr-toolchain, winavr..

    Attiny13 - Przerwanie dla Timer0, przepełnienie stosu

    Także Panowie nie dziwcie się, że z Eclipse korzysta tak mało początkujących osób- w konfiguracji puszczają nerwy.
    Ktoś powie- przecież to proste- wystarczy ustawić to, tamto i jeszcze skopiować to...

    Środowisko powinno być wstępnie przygotowane do działania, tak jak jest w AVRStudio.

    Dwa dni zmarnowane na ustawienia w eclipse i nic- przez ten czas już napisał bym program w AVRStudio i był bym do przodu... ale nic...
    Także nie polecam przesiadki na eclipse tym, którzy zawsze pisali w AVRStudio, chyba, że dostaną skonfigurowaną wersję eclipse od jakiegoś użytkownika- bo edytor jest lepszy niż w AVRStudio4.
  • #15 11224653
    McMonster
    Poziom 32  
    Eclipse jest uniwersalnym środowiskiem, a nie dedykowanym dla AVR, więc oczekiwanie, że z palca zacznie się pisać programy na AVR jest trochę niedorzeczne. Tak samo niedorzeczna jest ocena całego środowiska na podstawie samego faktu, że z palca nie da się pisać na AVR. To jakbym zainstalował AVRStudio i się oburzył, że nie można pisać w Javie, a podstawową zaletą Eclipse jest właśnie mnogość wtyczek, dzięki czemu nie trzeba używać osobnych programów.

    Natomiast nie wiem, skąd wywnioskowałeś, że z Eclipse korzysta mało osób.
  • #16 11226155
    20rafalo
    Poziom 19  
    Odpowiednie skonfigurowanie eclipse rozwiązuje problem. Polecam skorzystanie z gotowego-skonfigurowanego eclipse- edytor lepszy niż AVRStudio. A tego ostatniego używać do symulacji ;)
REKLAMA