Forum: Mikrocontroller und Digitale Elektronik ATMEGA4809 TCA0 Frequency Waveform Generation


von buz (Gast)


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 ;-)

von buz (Gast)


Lesenswert?

Gelöst: TCA0.SINGLE.CTRLB = 0x0F; -> TCA0.SINGLE.CTRLA = 0x0F;

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
Noch kein Account? Hier anmelden.