mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MPLAB Interrupt mit C18 Compiler


Autor: rapeur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> #pragma interruptlow high_isr

Was soll das 'low' dort ?

#pragma interrupt high_isr

Autor: rapeur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo holger,
trotzt korrektur funktionniert immer noch nicht.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die erste Fehlermeldung ist aber weg ?

Autor: rapeur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
nicht das zweite Fehler ist ein Warning und bleibt immer da.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann fehlt der Prototyp für      Interrupt_Timer1();

Autor: rapeur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nicht. ich habe noch überpruft.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>nicht. ich habe noch überpruft.

Dann ist der Compiler dümmer als du ;)

Autor: rapeur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum hat er mit low interrupt funktionniert und nicht mit high 
interrupt

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: rapeur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe gerade noh kontrolliert und es ist richtig. bei main Funktion 
habe ich einige #pragma definiert. Konnte es das Problem sein?

Autor: Matthias Werner (macho2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HAllo,

hier mal mein Code, welcher bei mit funktioniert!

folgende Zeilen konfigurieren die Interrupt Prio:
  INTCONbits.GIEH = 1;    // Enable all HighPrio Interrupt
  INTCONbits.GIEL = 1;    // Enable all LowPrio Interrupt


Gruß
MAtthias

nachfolgend ein Auszug aus meinem Programm:

#pragma code low_vector=0x18
#pragma interruptlow low_isr 
void low_interrupt (void)
{
  _asm GOTO low_isr _endasm
}
#pragma code
// Low Interupt Routine
void low_isr (void){
  
  INTCONbits.GIEH = 0;    // Disable all HighPrio Interrupt
  INTCONbits.GIEL = 0;    // Disable all LowPrio Interrupt 
  
  // Auswertung des Timer - Interrupt
  if (INTCONbits.TMR0IF == 1){


    WriteTimer0(0xFFFF - 3125);
    INTCONbits.TMR0IF = 0;
    }

  INTCONbits.GIEH = 1;    // Enable all HighPrio Interrupt
  INTCONbits.GIEL = 1;    // Enable all LowPrio Interrupt
}

Autor: rapeur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und was ist mit dem high interrupt. das low interrupt funktionniert bei 
mir ohne Problem

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>und was ist mit dem high interrupt. das low interrupt funktionniert bei
>mir ohne Problem

Wo ist dein kompletter Code ?

Autor: rapeur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das complet code ist ganz oben

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>das complet code ist ganz oben

Dann nagel den an die Wand und schmeiß den PIC weg.
Gute Nacht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.