Autor Thema: CCP im Compare Mode  (Gelesen 2942 mal)

Offline AnyKey

  • Jr. Member
  • **
  • Beiträge: 50
    • Profil anzeigen
CCP im Compare Mode
« am: Juli 28, 2012, 16:36:53 Nachmittag »
Hallo,
ich komme nicht mit dem CCP2 in verbindung mit dem Timer1 klar.
Zurzeit verwende ich den Simulator, später soll es ein 16F886 werden.
Hier mein Code:
/*
 * File:   main.c
 * Author: robert
 *
 * Created on 27. Juli 2012, 18:41
 */
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
__CONFIG(FOSC_XT & WDTE_ON & PWRTE_OFF & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_ON & IESO_ON & FCMEN_ON & LVP_ON);
__CONFIG(BOR4V_BOR40V & WRT_OFF);
int PWMstate=0;
/*
 *
 */
int main(int argc, char** argv) {
    GIE=0;
    //Timer 1 für CCP2 Modul
    T1CONbits.TMR1ON=0;//Aus
    T1CONbits.TMR1CS=0;//Internal Clock(Fosc/4)
    T1CONbits.T1SYNC=1;// _Sync mit externem Clk
    T1CONbits.TMR1GE=0;// Gate Enable
    T1CONbits.T1OSCEN=0;//LPosc aus
    T1CONbits.T1CKPS=0b11;//  zwei bits - PS 1:8
    T1CONbits.T1GINV=0;//Output high active
    TMR1=10000;//Register laden

    //CCP Modul
    CCP2CONbits.CCP2M=0b1010;//Comparer mit SW Interrupt
    CCPR2=100;//Register laden

    //Interuptts
    PIE1bits.TMR1IE=1;//Timer Interrupt ein
    PIR1bits.TMR1IF=0;//Timer Interrupt Flag aus

    PIE2bits.CCP2IE==1;//Interrupt ein schalten
    PIR2bits.CCP2IF=0;//CCP Interrupt Flag aus
    T1CONbits.TMR1ON=1;//Timer Einschalten
    GIE=1;
    while(1);
    return (EXIT_SUCCESS);
}

void interrupt ISR(void){
    //CCP/PWM
    if((PIE2bits.CCP2IE==1) && (PIR2bits.CCP2IF==1)){
        if(PWMstate){
            PWMstate=0;
                CCPR2=100;
        }
        else{
            PWMstate=1;
            CCPR2=1000;
        }
        PIR2bits.CCP2IF=0;//Interrupt zurück setzen
    }
    //Timer 1
    if((PIE1bits.TMR1IE==1) && (PIR1bits.TMR1IF==1)){
        PIR1bits.TMR1IF=0;//Interrupt zurück setzen
    }
}
Das Problem ist nun das der Interrupt für den Timer ausgelöst wird, nicht aber der für CCP2.
Erwarten würde ich das CCP2 zu erst kommt.
Hat Jemand ne Idee was ich falsch mache?
Ziel des Ganzen ist die Realisierung eines Sofware PWM's da ich später sechs PWM Signale benötige.

Gruß Robert

Offline AnyKey

  • Jr. Member
  • **
  • Beiträge: 50
    • Profil anzeigen
Re:CCP im Compare Mode
« Antwort #1 am: Juli 28, 2012, 21:35:32 Nachmittag »
Hat sich erledigt.
War ein extremer Denkfehler.

Ich brauch dringend einen Reset.

 


* Recent Topics