Zitat Zitat von juppkk Beitrag anzeigen
Sei es drum, das Einzige was mich noch drückt ist die Interrupt Routine.
Im XC8 wird von __interrupt . . . geschrieben.
Ich bin durch Zufall und probieren bei "void interrupt lowISR(void)" gelandet.
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).

Warum ist das in einem Beisp. INTCON &= ~(1<<T0IF); // clear timer0 overflow bit. wie ein Schuß von hinten durch die Brust ins Auge?
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.

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
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.

MfG Klebwax