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.