Das klingt für mich nach PIC18, wo es Interrupts mit Low und High Priority gibt. PIC12 hab ich bisher nicht mit Interrupt betrieben, bei PIC16 benutze ich void interrupt tc_int(void) , wobei tc_int ein Platzhalter ist. Es gibt ja nur einen Interruptvektor. Probier doch einfach void interrupt name(void).
In den Headerfiles der (aller) PICs werden alle Control- und Statusbits als Bitfelder aufgedröselt und können daher im C-Code einzeln gesetzt werden. INTCONbits.T0IF = .... Daher hab ich mir abgewöhnt, solche Construkte wie "INTCON &= ~(1<<T0IF) " gedanklich nachzuvollziehen oder zu verwenden.Warum ist das in einem Beisp. INTCON &= ~(1<<T0IF); // clear timer0 overflow bit. wie ein Schuß von hinten durch die Brust ins Auge?
Ich kann da nur vermuten, daß es an #define _XTAL_FREQ 4000000 liegt. Die Zahl ist zu groß für ein Integer, es sollte #define _XTAL_FREQ 4000000UL heißen. Die Wirkung könnte sein, daß die delay-Routinen falsche Zeiten liefern.Was noch etwas bedenklich stimmt ist die beständige Meldung:
. . . mplab_ipe\xc8\v1.00\sources\ftmul.c:60: warning: (751) arithmetic overflow in constant expression
MfG Klebwax
Lesezeichen