Hallo zusammen, ich habe probleme mit Interrupt. ich hatte schon low interrupt probiert und geschafft aber mit high interrupt gibt immer Probleme. das sind meine Code #include <p18F4550.h> #include "zip.h" #include <delays.h> #pragma code low_vector=0x18 void interrupt_at_low_vector(void) { _asm goto low_isr _endasm } #pragma code /* return to default code section */ #pragma interruptlow low_isr void low_isr(void) { if(INTCONbits.TMR0IF) { Interrupt_Timer_isr(); INTCONbits.TMR0IF=0; } } #pragma code high_vector =0x08 void interrupt_at_high_vector(void) { _asm goto high_isr _endasm } #pragma code /*return to default code section*/ #pragma interruptlow high_isr void high_isr(void) { if(PIR1bits.TMR1IF) { Interrupt_Timer1(); PIR1bits.TMR1IF=0; } } C:\Users\admin\Desktop\user\HL_interrupt.c:38:Error [1111] undefined label 'high_isr' in 'interrupt_at_high_vector' C:\Users\admin\Desktop\user\HL_interrupt.c:47:Warning [2058] call of function without prototype
> #pragma interruptlow high_isr
Was soll das 'low' dort ?
#pragma interrupt high_isr
Hallo nicht das zweite Fehler ist ein Warning und bleibt immer da.
>nicht. ich habe noch überpruft.
Dann ist der Compiler dümmer als du ;)
warum hat er mit low interrupt funktionniert und nicht mit high interrupt
>warum hat er mit low interrupt funktionniert und nicht mit high >interrupt a) das Warning muss weg. Also Prototyp bekanntmachen b) Interruptprioritäten in IPR1 IPR2 RCON richtig einstellen
Ich habe gerade noh kontrolliert und es ist richtig. bei main Funktion habe ich einige #pragma definiert. Konnte es das Problem sein?
HAllo, hier mal mein Code, welcher bei mit funktioniert! folgende Zeilen konfigurieren die Interrupt Prio:
1 | INTCONbits.GIEH = 1; // Enable all HighPrio Interrupt |
2 | INTCONbits.GIEL = 1; // Enable all LowPrio Interrupt |
Gruß MAtthias nachfolgend ein Auszug aus meinem Programm:
1 | #pragma code low_vector=0x18
|
2 | #pragma interruptlow low_isr
|
3 | void low_interrupt (void) |
4 | {
|
5 | _asm GOTO low_isr _endasm |
6 | }
|
7 | #pragma code
|
8 | // Low Interupt Routine
|
9 | void low_isr (void){ |
10 | |
11 | INTCONbits.GIEH = 0; // Disable all HighPrio Interrupt |
12 | INTCONbits.GIEL = 0; // Disable all LowPrio Interrupt |
13 | |
14 | // Auswertung des Timer - Interrupt
|
15 | if (INTCONbits.TMR0IF == 1){ |
16 | |
17 | |
18 | WriteTimer0(0xFFFF - 3125); |
19 | INTCONbits.TMR0IF = 0; |
20 | }
|
21 | |
22 | INTCONbits.GIEH = 1; // Enable all HighPrio Interrupt |
23 | INTCONbits.GIEL = 1; // Enable all LowPrio Interrupt |
24 | }
|
und was ist mit dem high interrupt. das low interrupt funktionniert bei mir ohne Problem
>und was ist mit dem high interrupt. das low interrupt funktionniert bei >mir ohne Problem Wo ist dein kompletter Code ?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.