Hallo nutze einen Fujitsu 8 Bit Microcontroller genau den MB95120. Hoffentlich kennt sich mit dieser Sonderlocke jemand aus. Habe ein Problem mit der Interrupt Erzeugung eines Compound Timers im varialen PWM Modus. Frage Low und High Puls durch Timerüberlaufinterrupt ab. Leider bekomme ich nur einen einzigen Interrupt des Low Pulses und das wars dann, es kommt kein weiterer Interrupt. Irgend jemand eine Idee woran das liegen könnte. Oder ein Forum für Fujitsu Microcontroller. Nachfolgend ein Auszug aus dem Sourcecode: ========================================= void init_Compound_PWM_Timer1() { T01CR1_STA = 0; //Timer gestoppt (bei Start beginnt mit 0) T00CR1_STA = 0; //Timer gestoppt (bei Start beginnt mit 0) T00CR1_IF = 0; //Overflow Bit - Kein Effekt T00CR1_IE = 1; //Interrupt Request - Ein T00CR1_HO = 0; //Timer in run Mode (bei Start beginnt mit letzem Wert im Register) T01CR1_IF = 0; //Overflow Bit - Kein Effekt T01CR1_IE = 1; //Interrupt Request - Ein T01CR1_HO = 0; //Timer in run Mode (bei Start beginnt mit letzem Wert im Register) T00CR0_F0 = 0; //Modus Bit 0 - Variabler Zyklus T00CR0_F1 = 0; //Modus Bit 1 - Variabler Zyklus T00CR0_F2 = 1; //Modus Bit 2 - Variabler Zyklus T00CR0_F3 = 0; //Modus Bit 3 - Variabler Zyklus T00CR0_C0 = 0; //Clock Signal Bit 0 - mit 16 MHz T00CR0_C1 = 0; //Clock Signal Bit 1 - mit 16 MHz T00CR0_C2 = 0; //Clock Signal Bit 2 - mit 16 MHz T00CR0_IFE = 1; //Interrupt - an T01CR0_F0 = 0; //Modus Bit 0 - Variabler Zyklus T01CR0_F1 = 0; //Modus Bit 1 - Variabler Zyklus T01CR0_F2 = 1; //Modus Bit 2 - Variabler Zyklus T01CR0_F3 = 0; //Modus Bit 3 - Variabler Zyklus T01CR0_C0 = 0; //Clock Signal Bit 0 - mit 16 MHz T01CR0_C1 = 0; //Clock Signal Bit 1 - mit 16 MHz T01CR0_C2 = 0; //Clock Signal Bit 2 - mit 16 MHz T01CR0_IFE = 1; //Interrupt - an TMCR0_FE00 = 1; //Filter Bit 0 - H/L Einschwingen Filtern TMCR0_FE01 = 1; //Filter Bit 1 - H/L Einschwingen Filtern TMCR0_FE10 = 1; //Filter Bit 0 - H/L Einschwingen Filtern TMCR0_FE11 = 1; //Filter Bit 1 - H/L Einschwingen Filtern TMCR0_T01 = 1; //Timer Output Bit Channel 0 - Erster Teil TMCR0_T00 = 1; //Timer Output Bit Channel 0 - Zweiter Teil } void start_Timer1() { T00CR1_STA = 0; //Timer gestoppt (bei Start beginnt mit 0) T01CR1_STA = 0; //Timer gestoppt (bei Start beginnt mit 0) T00DR = 0x40; //Länge Low Puls T01DR = 0x80; //Periode des Signals T00CR1_STA = 1; //Timer starten (bei Start beginnt mit 0) T01CR1_STA = 1; //Timer starten (bei Start beginnt mit 0) } void main(void) { //Interupts An WICR = 0XFF; __set_il(31); // set global interrupt mask to allow all IRQ levels __DI(); __wait_nop; __EI(); // global interrupt enable InitIrqLevels(); // initialise Interrupt level register and IRQ vector table init_Compound_PWM_Timer1(); start_Timer1(); } __interrupt void PWM1_1_IRQHandler (void) { PDR4_P41 = ~PDR4_P41; T00CR1_IF = 0; } __interrupt void PWM1_2_IRQHandler (void) { PDR4_P43 = ~PDR4_P43 ; T01CR1_IF = 0; }
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.