xMega 32bit Timer/Counter

OP #3920248
Lesenswert?
• ▲
▼
Hallo erst mal

Ich möchte mit dem ATxMega128A3U einen 32 Bit counter initialisieren. 
Ich verwende TCE0 als untere 16bit, über Eventchannel 0 tackte ich TCE1. 
Der Code sieht wie folgt aus. Funktioniert aus irgend einem Grund aber 
noch nicht.
1
//#################################### Timer
2
#define IMPULSE_TIMER0 TCE0
3
#define IMPULSE_TIMER1 TCE1
4

5
//####################################################### Int Timer
6
ISR(TCE1_CCA_vect)                        // Top 16 Bit Capture
7
{
8
  put_Nr(0,pageBreak(),0,0,BLACK,IMPULSE_TIMER1.CNT,HEX);
9
  IMPULSE_TIMER1.CTRLA = 0x00;                // Turnoff Timer 1
10
  IMPULSE_TIMER1.CNT = 0;
11
  IMPULSE_TIMER1.INTCTRLB = 0x00;
12
  IMPULSE_TIMER0.PER = (uint16_t)((CommandPtr->Time)*4);
13
  IMPULSE_TIMER0.CNT = 0;                    // Reset Timer
14
  IMPULSE_TIMER0.INTCTRLA = TC_OVFINTLVL_HI_gc;        // Interrupt when low 16 bit Value is reached. 
15
}
16

17
ISR(TCE0_OVF_vect)
18
{
19
  IMPULSE_TIMER0.CTRLA = 0x00;                // Turnoff Timer 0
20
  IMPULSE_TIMER0.CNT = 0;
21
  IMPULSE_TIMER0.INTCTRLA = 0x00;  
22
  SWITCH_HW_PORT.OUT ^= CommandPtr->SwitchNr;          // Invert Output
23
    ExternalClick();
24
}
25

26
void startTimer(TC0_t * Timer0, TC1_t * Timer1, uint32_t Compare)
27
{ 
28
  Timer0->CTRLA = TC_CLKSEL_DIV8_gc;
29
  Compare *= 4;
30
  if (Compare > 0xFFFF)
31
  {
32
    EVSYS.CH0MUX = EVSYS_CHMUX_TCE0_OVF_gc;
33
    Timer1->CTRLA = TC_CLKSEL_EVCH0_gc;
34
    Timer1->CTRLB = TC1_CCAEN_bm;
35
    Timer1->CCA = (uint16_t)(Compare>>16);
36
    Timer0->CNT = 0;                  // Reset Timer
37
    Timer1->CNT = 0;
38
    Timer1->INTCTRLB = TC_CCAINTLVL_HI_gc;        // IntLVL HIGH
39
  }
40
  else
41
  {
42
    Timer0->CTRLB = 0;
43
    Timer0->PER = (uint16_t)Compare;
44
    Timer0->CNT = 0;                  // Reset Timer
45
    Timer0->INTCTRLA = TC_OVFINTLVL_HI_gc;        // IntLVL HIGH
46
  }
47
}

Vielleicht kann mir ja einer helfen.

Schon mal danke im Voraus.
Jérôme

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.