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
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?
Mit dem Code würde ich eigentlich erwarten, dass die Helligkeit der Anzeige zyklisch durchläuft. Passiert aber wie gesagt nicht.Code:DDRB |= (1 << DDB3); TCCR0A = (1 << WGM00) | (1 << COM0A0) | (1 << CS00) |(1 << CS02); TIMSK0 |= (1 << OCIE0A); sei(); while(1) { OCR0A++; _delay_ms(25); }
Oder ist da irgendwo ein Bit, das ich noch übersehen hab?
mfG
Geändert von Jaecko (26.03.2011 um 21:38 Uhr) Grund: Tippfehler/Formatierung
#ifndef MfG
#define MfG
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
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
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)
#ifndef MfG
#define MfG
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
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.
#ifndef MfG
#define MfG
Lesezeichen