Gast
#2388483
Hi, ich versuche die 16-Bit Timer im Fast-PWM Mode 14 zu benutzen. AVR-Studio 4.19, AVR-Toolchain 3.2.3.579. Hier mal auf das absolut notwendige eingedampfter Test-Code mit dem ich das gerade ausprobiere: --- #include <avr/io.h> // target device register definitions int main(void) { // DDRB = (1<<PB5); // OC1A auf Ausgang DDRA = (1<<PA6); // OC1A auf Ausgang TCCR1B = 0x00; // stop TCCR1A = (1<<WGM11) | (1<<COM1A1); ICR1 = 600; // TOP-Wert OCR1A = 510; TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS11); // mode = Fast-PWM, prescaler = 8 -> 2 MHz while(1) { } } --- Eigentlich bin ich auf einem 90CAN32 unterwegs -> PB5. Zum Vergleich habe ich jetzt mal einen Tiny44 benutzt -> PA6. ICR1A kann ich setzen wie ich will, kein Problem, da funktionieren die vollen 16 Bit. Mit dem µC auf 16 MHz und ICR1A auf 40000 erhalte ich mit dem eingestellten Prescaler von 8 auch 50 Hz. Aber OCR1A haut nicht hin, ich kann nur Werte bis 511 nutzen. Für 520 sieht das in der .lss so aus (Tiny44): --- OCR1A = 520; 46: 88 e0 ldi r24, 0x08 ; 8 48: 92 e0 ldi r25, 0x02 ; 2 4a: 9b bd out 0x2b, r25 ; 43 4c: 8a bd out 0x2a, r24 ; 42 --- Sag mir doch mal bitte jemand, was ich falsch mache.