Hallo Leute, ich versuche gerade Fast PWM mit Timer 1 zum laufen zu bringen. Der Controller ist ein ATMega16 mit externem 16MHZ Quarz. Ziel ist einen Servotester (Modellbau) zu bauen. Ausgabe PWM auf OC1A (PD5) mit 50Hz. High - Zeit des Signals für Mittelstellung 1,5ms Zur Theorie: 50Hz => 20ms bei 16MHz-> t = 62,5ns ergibt 320.000 für prescaler 1 also prescaler auf 8 --> Overflow bei 40.000 (ICR1) OCR1A (Compare match): 1,5ms * 40000 / 20ms = 3000 Folgendes hab ich dann programmiert: DDRD = (1 << PD5); // Enable fast PWM mode 14 (table 47 page 113 ATMega16 Doc): TCCR1A = (1 << COM1A1) | (1 << WGM13) |(1 << WGM12) |(1 << WGM11); // Set prescaler 8 TCCR1B = (1 << CS11); // Set PWM ICR1 = (uint16_t)40000; OCR1A = (uint16_t)3000; aber an PD5 kommt leider nix raus ....... ich habs dann auch mal mit for (;;) { PORTD ^= (1 << PD5); for (i = 0; i < 3000; i++) asm ("NOP"); } probiert, was wunderbar funktioniert. Muss ich für den Timer1 auch noch die Ints freigeben, denn ISR's brauch ich eigentlich nicht .... Bin für jeden Tipp dankbar ! Grüße, Michael
Hallo Leute, hab den Fehler! So gehts: // Enable fast PWM mode 14 (table 47 page 113 ATMega16 Doc): TCCR1A = (1 << COM1A1) |(1 << WGM11); // Set prescaler 8 TCCR1B = (1 << CS11) | (1 << WGM13) |(1 << WGM12); // Set PWM ICR1 = (uint16_t)40000; OCR1A = (uint16_t)3000; Die WGM13 und WGM12 Bits waren im falschen Register gesetzt worden ! Grüße, Michael
Servotester? Dazu brauchts keinen Mega16 und auch keine 16MHz Takt: http://www.hanneslux.de/avr/mobau/7ksend/7ksend02.html Ein Mega48 mit 1MHz internem Takt reicht für bis zu 6 oder 7 Servos. Man muss nicht immer mit Kanonen auf Spatzen schießen... ...
Hallo Hannes, ist schon klar, aber das Teil ist nur als "Gimmick" mit in einem anderen Gerät, in dem die hohe Taktrate benötigt wird!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.