// --- AVR128DB64 --- #include #include #include void initPins (void); void initTCA0 (void); void deleteTCA0 (void); int main (void) { deleteTCA0(); initPins(); initTCA0(); while(1) { } } void initPins (void) { PORTMUX.TCAROUTEA = PORTMUX_TCA0_PORTB_gc; // TCA0 WO-x umrouten VPORTB.DIR = VPORTB.DIR | _BV(0); // PB0 / TCA0-WO Output } void initTCA0 (void) { const uint16_t value = 65535; TCA0.SINGLE.CMP0BUF = value; // TOP TCA0.SINGLE.CTRLA = TCA_SINGLE_CLKSEL_DIV1_gc; // CLK_PER divider TCA0.SINGLE.CTRLB = TCA_SINGLE_WGMODE_FRQ_gc | TCA_SINGLE_CMP0EN_bm; // Frequency Generation Mode TCA0.SINGLE.CTRLA = TCA0.SINGLE.CTRLA | TCA_SINGLE_ENABLE_bm; // Enable TCA } void deleteTCA0 (void) { TCA0.SINGLE.CTRLA = 0; TCA0.SINGLE.CTRLB = 0; TCA0.SINGLE.CTRLC = 0; TCA0.SINGLE.CTRLD = 0; TCA0.SINGLE.INTCTRL = 0; TCA0.SINGLE.CNT = 0; }