Forum: Mikrocontroller und Digitale Elektronik Interrupt Output compare PIC32


von Alex M. (alex_m83)


Lesenswert?

Hallo Zusammen

ich kämpfe gerade mit Output Compare Interrupt und weiß nicht mehr, was 
ich da noch machen kann.

PIC32 SystemClock 40 MHz.
Ziel ist am OC1 einen Takt von 4MHz zu erzeugen.
Für Initialisierung nutze ich OC1_Init() und für ISR _OC1Interrupt()
Außerdem nutze eich noch im Programm Timer1, INT1 und SPI Interrupts.


Nun sobald ich Priorität auf aktiv setze( 1 oder 7) hängt das ganze main 
Programm. Das OC1 Flag wird am Startup sofort gesetzt(leuchtet LED) und 
mein Programm läuft nicht weiter.

Hat jemand eine Idee, was da falsch abläuft?

Danke!


void OC1_Init(void)
{
    //timer2 settings
    T2CONbits.TCKPS = 0; // prescaler 1/2
    PR2 = 0x0009;        // Anzahl der Periode
    TMR2 = 0;            // timer counter

    // OC1 settings 25ns SysPeriode
    OC1CON = 0x0000;
    OC1CONbits.OCM = 5;   // Ouput Pulse
    OC1CONbits.OCTSEL = 0; // timer2 select


    OC1R = 0x0004;
    OC1RS = 0x0009;

    IFS0bits.OC1IF = 0;
    IEC0bits.OC1IE = 1;
    IPC1bits.OC1IP = 7;


    T2CONbits.TON = 1;
    OC1CONbits.ON = 1;
}


void __attribute((interrupt(ipl7), vector(_OUTPUT_COMPARE_1_VECTOR), 
nomips16)) _OC1Interrupt(void)
{

    IFS0CLR = _IFS0_OC1IF_MASK;
    LED1_IO = 1;

}

von iopstata (Gast)


Lesenswert?

>Ziel ist am OC1 einen Takt von 4MHz zu erzeugen.

Dann probier doch mal zuerst mit einem weniger ehrgeizigen Takt.

Läuft Dein main weiter, wenn Du nur 10kHz Interruptfrequenz hast?

Was schliesst Du daraus?

von Alex M. (alex_m83)


Lesenswert?

den Takt benötige ich für einen SPI ADC.

Ich habe auf 10 KHz runtergedreht, geht aber trotzdem nicht.

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
Noch kein Account? Hier anmelden.