Problem ATmega2561 PWM nur 2,5V Spitze

OP #1586539
Lesenswert?

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.
OP #1586593
Lesenswert?

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
Angehängte Dateien:
Gast #1586644
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren