mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fujitsu 8 Bit Microcontroller MB95120 - Compound Timer PWM Interrupt Problem


Autor: Oli (Gast)
Datum:

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

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.