Hallo,
ich würde gerne ein 50% Duty Cycle erzeugen für zwei mosfet gates mit
einer Totzeit um einen KS zu verhindern. Taktrate 20, 50, 70 und 100
kHz.
Der TCD0 Timer des Attiny1614 sollte diese Funktion bieten, falls ich
das Datenblatt nicht falsch verstehe. Datenblatt im Anhang. Pin PA4 und
PA5 wären die Ausgänge. Leider bekomme ich es nicht hin...
Mein Versuch:
1 | int main(void) {
|
2 | PORTA.DIRSET |= 0b00110000;
|
3 |
|
4 | TCD0.CTRLA = 0b00001010; // 20 MHz; CNTPRES = 0x1; SYNCPRES = 0x1;
|
5 | TCD0.CTRLB = 0x01; // TWO RAMP 0x1
|
6 | TCD0.CTRLC = 0x00; // TCD_FIFTY_bm;
|
7 |
|
8 | TCD0.CMPASETL = 0b00000000;
|
9 | TCD0.CMPASETH = 0b00000000;
|
10 |
|
11 | TCD0.CMPBSETL = 0b00111111;
|
12 | TCD0.CMPBSETH = 0b00000000;
|
13 |
|
14 | TCD0.CMPACLRL = 0b00111110;
|
15 | TCD0.CMPACLRH = 0b00000000;
|
16 |
|
17 | TCD0.CMPBCLRL = 0b11111110;
|
18 | TCD0.CMPBCLRH = 0b11111111;
|
19 |
|
20 | TCD0.STATUS = TCD_ENRDY_bm;
|
21 | TCD0.CTRLA = TCD_ENABLE_bm;
|
22 | sei();
|
23 |
|
24 | while (1) {
|
25 |
|
26 | }
|
27 | }
|
Würde mich über Hinweise freuen.