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

[Atmega128] INT6 powoduje reset uC

motorolae365ok 04 Wrz 2011 14:30 1197 11
REKLAMA
  • #1 9894176
    motorolae365ok
    Poziom 20  
    Witam,

    mam problem z obsługą przerwania INT6 w Atmedze128. Układ działa prawidłowo, ale w przypadku gdy dostaje impuls z RTC PCF8583 na przerwanie INT6 to resetuje się.

    Tu jest kod obsługi tego przerwania:

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


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


    Układ lutowałem już drugi raz bo myślałem że mam coś uszkodzonego, ale teraz sytuacja jest identyczna. Czy dobrze mam skonfigurowane te przerwanie? Co może być nie tak?
  • REKLAMA
  • #2 9894311
    michalko12
    Specjalista - Mikrokontrolery
    Zamiast

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


    napisz

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 9894385
    motorolae365ok
    Poziom 20  
    Pojawiają się błędy:

    linia RTC_INT_DDR &= ~(1<<RTC_INT);

    Error 3 '__vector_6' undeclared (first use in this function) D:\...\Test\mod_rtc_pcf8583.c 17 1 Test

    Error 4 each undeclared identifier is reported only once for each function it appears in D:\...\mod_rtc_pcf8583.c 17 1 Test
  • #5 9894417
    motorolae365ok
    Poziom 20  
    tak
  • #6 9894438
    michalko12
    Specjalista - Mikrokontrolery
    Zaraz bo się rozpędziłem...

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


    wstaw
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #7 9894450
    motorolae365ok
    Poziom 20  
    Teraz się kompiluje, ale dalej się resetuje.
  • #8 9894459
    kiziu13
    Poziom 17  
    michalko12, niedokładnie czytasz kod. W ISR stała użyta jako wektor to
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    czyli
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    . Stała, która kazałeś zmienić, używana jest jako numer pinu.

    EDIT: A jakie to ma znaczenie? SIG_ to stare nazewnictwo.
    iom128.h napisał:
    /* External Interrupt Request 6 */
    #define INT6_vect _VECTOR(7)
    #define SIG_INTERRUPT6 _VECTOR(7)


    motorolae365ok, rozumiem, że masz zewnętrzny pull-up na pinie, skoro postanowiłeś ustawić port w Hi-Z. Jak wygląda funkcja użyta w przerwaniu?
  • #9 9894518
    michalko12
    Specjalista - Mikrokontrolery
    kiziu13 napisał:
    michalko12, niedokładnie czytasz kod. W ISR stała użyta jako wektor to
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    czyli
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    . Stała, która kazałeś zmienić, używana jest jako numer pinu.

    EDIT: A jakie to ma znaczenie? SIG_ to stare nazewnictwo.
    iom128.h napisał:
    /* External Interrupt Request 6 */
    #define INT6_vect _VECTOR(7)
    #define SIG_INTERRUPT6 _VECTOR(7)


    motorolae365ok, rozumiem, że masz zewnętrzny pull-up na pinie, skoro postanowiłeś ustawić port w Hi-Z. Jak wygląda funkcja użyta w przerwaniu?


    No tak, ale namieszałem. Coś mi się skojarzyło że SIG_ jest nowym, a wiem że nie powinno w ISR korzystać z starych nazw wektorów. Dawno już na AVR nic nie robiłem ;) Przepraszam za zamieszanie.
  • #10 9894576
    motorolae365ok
    Poziom 20  
    Nie mam pull-up'a zewnętrznego, zmieniłem w kodzie żeby był ustawiony w programie, ale to też nie pomogło. Może przedstawię cały kod:

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


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


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



    ----------
    EDIT

    teraz widzę błąd, nie dołączyłem piku mod_rtc_pcf8583.h do maina. Czemu nowy AVR Studio nie wykrył tego jako błąd? Teraz działa
  • REKLAMA
  • Pomocny post
    #11 9894581
    michalko12
    Specjalista - Mikrokontrolery
    Sprawdź czy w projekcie masz ustawiony właściwy typ procesora
  • #12 9894582
    motorolae365ok
    Poziom 20  
    Tak jest właściwy, przeczytaj edita to mojego poprzedniego posta, już działa. Ale czemu to się skompilowało to ja nie wiem
REKLAMA