PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 74HC595: OE-Pin nicht PWM-Fähig? Oder Fehler bei Mega644-Code?



Jaecko
26.03.2011, 21:33
Moin.

Ein 7-Segment-Display wird über ein Schieberegister 74HC595 und ein ULN2803 als "Treiber" angesteuert. Der OE-Pin (Output Enable) des 595 hängt an einem ATMega644 an PB3 (OCR0A). Der Plan dahinter: Die Helligkeit der LEDs steuern.

Wenn ich in einer While-Loop den Pin mit z.B. 200 Hz "manuell" mit verschiedenen Pulsweiten an- und abschalte, dann wirds schon dunkler. Versuch ich das ganze mit PWM, leuchten die LEDs mit voller Helligkeit weiter.

Hackts da jetzt beim Code für die PWM-Init (siehe unten) oder ist der OE-Eingang für "echte" PWM einfach zu lahm?



DDRB |= (1 << DDB3);
TCCR0A = (1 << WGM00) | (1 << COM0A0) | (1 << CS00) |(1 << CS02);
TIMSK0 |= (1 << OCIE0A);
sei();

while(1)
{
OCR0A++;
_delay_ms(25);
}
Mit dem Code würde ich eigentlich erwarten, dass die Helligkeit der Anzeige zyklisch durchläuft. Passiert aber wie gesagt nicht.
Oder ist da irgendwo ein Bit, das ich noch übersehen hab?

mfG

Searcher
26.03.2011, 22:21
Hallo,
die CS00 und CS02 Bits befinden sich im TCCR0B Register. Wenn ich C richtig interpretiere, wird in Deinem Code der Prescaler dann nicht gesetzt und der Timer läuft nicht los.

Gruß
Searcher

Jaecko
26.03.2011, 22:35
Heidenei... Thx.
Stimmt tatsächlich, dass die Bits im anderen Register sind.
Hab die Bits in den Tabellen im Datenblatt sogar mehrmals angeschaut und verschiedene WGM/CS-Kombinationen durchprobiert und immer wieder nachgeprüft.
Aber dass die im B-Register sind, ist mir nie aufgefallen.
(Mal wieder typischer Copy&Paste-Fehler)

Unregistriert
25.02.2014, 11:07
Jeacko,
ich hätte da eine Frage an dich:
Ich baue eine ähnliche Schaltung, und frage mich ob ich zwischen dem 74HC595 und dem ULN2803 Pull-Down-Widerstände brauche. Oder kann ich die direkt verbinden ohne Schnickschnack (wenn ich OE als PWM verwende)? Wie verhält sich da der Tri-State-Ausgang?
LG
Peter

Klebwax
25.02.2014, 13:23
Ich baue eine ähnliche Schaltung, und frage mich ob ich zwischen dem 74HC595 und dem ULN2803 Pull-Down-Widerstände brauche.
Was spricht gegen einen Blick ins Datenblatt?

27611


Wie verhält sich da der Tri-State-Ausgang?
So wie sich Tri-State nun mal verhält, er wird hochohmig.

MfG Klebwax

Jaecko
25.02.2014, 13:37
Genau diese Reihenfolge 74HC595 => ULN2803 hab ich in dieser Schaltung auch verbaut.
Einfach direkt verbinden ohne Pulls dazwischen. Fehlt durch OE = High das Ausgangssignal des 595, zieht die interne Beschaltung des ULN2803 jeden Eingang nach GND (siehe Schaltung im vorherigen Beitrag) und die Ausgänge des 2803 werden nicht nach GND gezogen.