Hallo, ich betreibe hier einen ATmega2561 mit der PWM (Timer0) und wundere mich gerade, warum der MOSFET so heiß wird (N-logic). Ich habe mit dem Oszilloskop nachgemessen und festgestellt, dass das PWM Signal des Controllers nur ca.2,5V Spitze hat. Leider auch ohne externen Anschluss. Ich habe den Tastgrad auf 100% gesetzt und nochmal mit einen Multimeter (DC-Spannung) nachgemessen. Ergebnis waren ebenfalls ca.2,5V. Dann hatte ich den PORTB als normalen Ausgang definiert und auf high gesetzt. Er hat dann auf 5V ausgesteuert. Initialisierung des Timer0: FAST PWM TCCR0A = (1<<WGM01) | (1<<WGM00) | (1<<COM0A1) | (0<<COM0A0); TCCR0B = (0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00); OCR0A = 255; Kann sich das jemand erklären und mir helfen? Danke.
Hier sind die Quelltexte. Ich hoffe da steigt jemand durch. Auf den Timer0 wird im gesamten Programm nicht zugegriffen (nur bei der Initialisierung halt). Aber das Problem scheint mit auf den ersten Blick von physikalischer Art. Der Controller kann doch nicht auf 2,5V aussteuern, oder? Der Pin vom Controller (PB7) ist nicht extern angeschlossen und die PWM mit Timer3 hat den richtigen high Pegel (0V oder 5V)... MfG
Hi Hast du alle VCC/GND-Pins auch angeschlossen? MfG Spess
Ja habe ich angeschlossen. Und wenn ich den Pin von Hand auf high setze, gibt er ja auch 5V raus...
Matthias Stottmeister schrieb: > Ja habe ich angeschlossen. Und wenn ich den Pin von Hand auf high setze, > gibt er ja auch 5V raus... Bitte?
Hallo, in der Routine "initpwm" hast du für Timer 3 die folgende Zeile programmiert: > DDRE |= (1 << PE3 ); // PWM Ausgang + PE0 als > Schaltausgang + PE1 für Lüfter Dies setzt den PWM-Pin auf Ausgang. Das Gleiche muss auch für Timer 0 und dessen Ausgangs-Pin gemacht werden. In der genannten Routine finde ich das aber nicht. So wäre bei einem High der PWM-Unit nur der interne PullUp-Widerstand eingeschaltet, da der Pin nicht als Ausgang programmiert wurde.
Nachtrag: Der PWM-Pin "OC0A" ist der Pin PB7, liegt also auf Port B, nicht auf Port E.
Jetzt funktioniert der Ausgang richtig. Lag vermutlich wirklich an der fehlenden Ausgangs-Deklaration. Vielen Dank, du hast mir sehr geholfen! Liebe Grüße. Matze
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.