Hat jemand ein Beispiel in C wie man den 8Bit-Timer vom ATMega32 als PWM ansteuert? Es geht erst mal um die Umsetzung des LCD-Dimmens aus dem Artikel aus dem Forum. Ich bin Neuling und bin etwas erschlagen mit dem ATMega32-Datenblatt. Mein Ziel ist trivial und dient lediglich der Einarbeitung in die Materie: Ich möchte ein RGB-LED mit unterschiedlichen Dimfrequenzen ansteuern, so dass eine Art Regenbogen-Effekt entsteht. Das Tutorial http://www.mikrocontroller.net/articles/LED-Fading habe ich bereits erfolgreich umgesetzt. Aber mir fehlt der Zugang zum Timer2 bzw. auch Timer0. Ich würde mich freuen, wenn jemand ein Beispiel posten könnte, den die Arbeit mit dem Datenblatt ist sehr Zeit intensiv. Schon mal Danke, Dieter
Ich meinte natürlich dir. Timer 1 ist der 16bit Timer und schwer zu initialisieren als Timer0/2, da dieser die doppelte Anzahl Register besitzt. Timer 0/2 sind 8bit Timer und haben entpsrechend weniger Register.
//Timer 2 #define TIMER2_PRESC_1 1 #define TIMER2_MODE_FAST_PWM 3 #define TIMER2_CLOCK_SELECT(Clock) { TCCR2 &= 0xF8; TCCR2 |= ((Clock) & 0x07); } #define TIMER2_WGM_MODE(Mode) { TCCR2 &= 0xB7; TCCR2 |= ((Mode) & 0x02) << 2; TCCR2|=((Mode) & 0x01) << 6; } int main(void) { TIMER2_WGM_MODE(TIMER2_MODE_FAST_PWM);//Modus: PWM TIMER2_CLOCK_SELECT(TIMER2_PRESC_1);// Clock: Ohne Prescaler für maximale Frequenz bei PWM OCR2=0x7F; //50:50 PWM while(1) { } }
Noch was: mit #define CLEAR_AT_MATCH 2 #define OC2_PIN_CONFIG(Mode) { if (Mode) DDRD|=0x80; else DDRD&=0x7F; TCCR2&=0xCF; TCCR2|=((Mode) & 0x03) << 4; } kannst du dann den OC2 Pin so konfigurieren, dass da die PWM auch rauskommt! int main(void) .. OC2_PIN_CONFIG(CLEAR_AT_MATCH); //Ausgang und PWM auf diesen Pin umgeleitet
Man oh man. Dieter Engelhardt ist Anfänger und nicht Profi. Dein Text ist selbst für einen Fortgeschrittenen schwer zu lesen. Aber wenigstens hast du ihm Text gegeben.
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.