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.

kompilator PIC nie "akceptuje" innej funkcji.

Bigfoot 28 Lut 2006 18:10 1098 4
  • #1 28 Lut 2006 18:10
    Bigfoot
    Poziom 25  

    Uzywam kompilatora HI TECHA dla PIC16. W podprogramie obslugi przerwania uzywam wczesniej zdefiniowanej funkcji do ustawiania portu, tak jak ponizej:
    void interrupt INT(void)
    {
    if (RBIF) //RB7 RB6 changed
    clr_pin(PIN_A4);
    }

    Jednakze wyskakuje mi blad kompilatora:(472) non-reentrant function "_clr_pin" appears in multiple call graphs: rooted at "_INT" and "_main"

    Uzycie "reentrant" nie pomaga. Czy moze ktos mi pomoc jak zmusic kompilator do zrozumienia funkcji clr_pin()?

    0 4
  • #2 28 Lut 2006 19:48
    UDMA
    Poziom 16  

    Tuż przed definicją funkcji clr_pin() dodaj:

    Code:

    #pragma interrupt_level 0

    Nigdy nie wywołuj tej samej funkcji jednocześnie w main() i ISR jeśli nie wiesz co robisz:). ISR może w dowolnym momencie przerwać wykonanie fukcji w main(), rozwali zmienne lokalne i NIE odtworzy ich po wyjściu. Niestety kompilatory Hitech nie obsługują software stack stąd funkcje nie są reentrant stąd nie można wykonać np. rekurencji;) (no chyba że funkcja nie posiada zmiennych lokalnych).

    0
  • #3 28 Lut 2006 21:07
    Bigfoot
    Poziom 25  

    Niestety kompilatory Hitech nie obsługują software stack


    czy to znaczy, ze te kompilatory sa nie zadobre? Jaki jest najlepszy dla PIC16??

    0
  • #4 28 Lut 2006 21:32
    UDMA
    Poziom 16  

    Bigfoot napisał:
    Niestety kompilatory Hitech nie obsługują software stack


    czy to znaczy, ze te kompilatory sa nie zadobre? Jaki jest najlepszy dla PIC16??


    Sprawę można ująć tak - to jest bez znaczenia, w 99% zastosowań można obejść się bez tego stosu. Nie jestem pewien czy w ogóle można użyć stos dynamiczny na PIC16, kompilatory IAR i Microchip mają ten bajer ale w wersji dla PIC18. Mi tam Hitech bardzo odpowiada ze względu na dobrej jakości kod wynikowy i niezłą bibliotekę standardową.

    0
  • #5 01 Wrz 2006 23:44
    Bigfoot
    Poziom 25  

    Odpowiedz UDMA pomogla. Temat zamkniety.

    Dziekuje

    BF

    0