ATMEGA4809 TCA0 Frequency Waveform Generation

Gast #7099120
Lesenswert?

Hallo Zusammen,

ich habe vermutlich noch ein Verständnis Problem und bekomme den TCA0 
meines ATMEGA4809 nicht zum laufen. Ziel ist an PC0 ca. 0,5Hz 
auszugeben. Am Pin passiert aber gar nichts.
1
#include <avr/io.h>
2

3
int main(void)
4
{
5
  // Select division by 2 for Prescaler: CLK_PER = CLK_MAIN / 2
6
  _PROTECTED_WRITE(CLKCTRL.MCLKCTRLB, 0x01);
7

8
  // Select OSC20M for the Main Clock (CLK_MAIN)
9
  _PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, 0x00);
10
    
11
  // Wait while OSC20M is undergoing a switch.
12
  while(CLKCTRL.MCLKSTATUS & (1<<0));
13

14
  // Set TCA0 pins on PC[5:0]  
15
  PORTMUX.TCAROUTEA = 0x02;
16
  
17
  // Set PC0  as Output
18
  PORTC.DIR |= PIN0_bm;
19

20
  // Set CMP0EN=1 (output WO0 will be available on PC0) and WGMODE=0x1 (FRQ)
21
  TCA0.SINGLE.CTRLB = 0x11;
22
  
23
  // Set Timer to ~1s (8.000.000 / (1024*0x1E84)
24
  TCA0.SINGLE.CMP0BUF = 0x1E84;
25
  
26
  // Clear Counter
27
  TCA0.SINGLE.CNT = 0x0000;
28

29
  // Set fCLK_PER/1024 and Enable TCA=
30
  TCA0.SINGLE.CTRLB = 0x0F; //
31
  
32
  while(1);
33
}
Ich entschuldige mich vorab schon mal für den dummen Fehler ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren