Irgendwie bekomme ich die PWM Initialisierung bei dem Attiny861 nicht hin. Nur OC1D liefert ein Ausgangssignal im Fast PWM Modus. Wär super wenn wer über meinen Code drüber schaun kann und den Fehler findet :). So langsam wirds frustrierend :/
1 | void timer1_init(void) |
2 | {
|
3 | //Mode + Output einstellung
|
4 | //Fast PWM mode 8 Bit Timer 1, OC1A, OC1B und OC1D auf non-inverting output setzen
|
5 | |
6 | TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<PWM1A) | (1<<PWM1B); |
7 | |
8 | TCCR1C = (1<<COM1D1) | (1<<PWM1D); |
9 | |
10 | TCCR1D = (0<<FPIE1) | (0<<FPEN1) | (0<<FPNC1) | (0<<FPES1) | |
11 | (0<<FPAC1) | (0<<FPF1) | (0<<WGM11) | (0<<WGM10); |
12 | |
13 | //Top setzen
|
14 | OCR1C = 0xFF; |
15 | |
16 | //PLL init und starten
|
17 | PLLCSR = (0<<LSM) | (1<<PCKE) | (1<<PLLE); |
18 | _delay_us(40); |
19 | _delay_us(40); |
20 | _delay_us(40); |
21 | |
22 | while(!(PLLCSR&0x01)) {} //stabilisierung der PLL abwarten |
23 | |
24 | OCR1A = 100; |
25 | OCR1B = 100; //Bestimmt den mittleren Strom durch die Spulen. |
26 | OCR1D = 100; |
27 | |
28 | //Timer aktivieren
|
29 | TCCR1B |= (1<<CS10); |
30 | }
|