Es liegt daran, dass du nicht nachgeschaut hast, welche Konfigurations-Bits in welchem Register sind.Woran kann das liegen?
Hallo,
ich möchte 2 Leds dimmen an einen mega32.
Nur leider ist meine Rote LED am OCR1B ständig an.
die grüne am OCR1A wechselt wunderbar ihre Helligkeit.
Woran kann das liegen?
Code:void init_pwm (void) { DDRD |= (1<<PD4); //PWM ROT DDRD |= (1<<PD5); //PWM Blau TCCR1A = (1<<WGM10)|(1<<WGM11)|(1<<COM1A1) |(1<<COM1B1)|(1<<WGM12)|(1<<WGM13); //16 Fast PWM nicht invertiert TCCR1B = (1<<CS11)|(1<<CS10); //CLK F_CPU/64 }Code:void set_blue (uint16_t pwm) { OCR1A = pwm; }danke für eure HilfeCode:void set_red (uint16_t pwm) { OCR1B = pwm; }
Gruß deko
Es liegt daran, dass du nicht nachgeschaut hast, welche Konfigurations-Bits in welchem Register sind.Woran kann das liegen?
MfG
Stefan
http://www.atmel.com/dyn/resources/p...ts/doc2503.pdf ab Seite 107
WGM12 und 13 befinden sich nicht im TCCR1A!
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
so hab ich es jetzt abgeändert aber leider keine Besserung... (hatte es zwischenzeitlich auch mal so)Code:void init_pwm (void) { DDRD |= (1<<PD4); //PWM ROT DDRD |= (1<<PD5); //PWM Blau TCCR1A = (1<<WGM10)|(1<<WGM11)|(1<<COM1A1)|(1<<COM1B1); //16 Fast PWM nicht invertiert TCCR1B = (1<<CS11)|(1<<CS10)|(1<<WGM12)|(1<<WGM13); //CLK F_CPU/64 }
nun kann ich die Leds garnicht mehr dimmen und sie sind Leuchten auch ohne das ich was an OCR1A oder OCR1B mache mit voller Leuchtstärke...
sieht jemand noch einen Fehler?
Du hast einen untauglichen Modus ausgewählt. Wie willst du mit OCR1A den Duty-Cycle einstellen, wenn das der TOP-Wert ist?
MfG
Stefan
das ist etwas fälschlich in dem datenblatt merk ich gerade, was du gemacht hast ist ebenfalls CTC Modus nicht Fast PWM! Er läuft bei ocr1a über und ignoriert ocr1b, versuch mal OHNE WGM10 (Mode 14 laut Tabelle) und setz dein gewünschten top-Wert mit ICR1, aber ACHTUNG, wenn dein OCR1A/B GRÖSSER als ICR1 wird, passiert garnichts!!!
ich vermute eigentlich schon fast, dass du eigentlich eher einen festen Top-Wert brauchst und besser den mode 5,6 oder 7 wählen solltest!
FALLS du vorhaben solltest eine RGB-Steuerung zu machen, empfehl ich dir (weil du nurnoch 8bit-Timer-PWM für grün hast) Mode 5 (WGM12 und WGM10) 8bit Fast PWM, dann lassen sich deine Timer auch gleich ansteuern
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Quatsch. Das ist Fast-PWM mit einem variablem TOP-Wert (also variabler Frequenz).das ist etwas fälschlich in dem datenblatt merk ich gerade, was du gemacht hast ist ebenfalls CTC Modus nicht Fast PWM!
MfG
Stefan
ist bei CTC doch genauso, nur dass updaten der Register passiert zu einem anderen Zeitpunkt ?!
Jedenfalls hab ich die Erfahrung gemacht, dass bei der Verwendung des OCR1A-Register zum einstellen des TOP der PWM Output nicht richtig funktioniert, darum der Vorschlag das ganze über den ICR1 zu machen oder gleich einen festen TOP-Wert zu nehmen.
Wobei mir immer noch nciht einleuchtet, wieso die eine LED die Helligkeit ändert, obwohl er beim setzen von OCR1A doch nur die Frequenz ändert und nicht das Tastverhältnis!?
MOOOMENT: er schreibt was von Rot und Grün, im Programm steht red und blue, ja was denn jetzt bitte ? Ich vermute nur mal ganz leicht, dass beim Ändern des OCR1A-Register sich die Helligkeit der LED an OCR1B ändert, da sich indirekt das Tastverhältnis ändert! Und hier vielleicht nur ein Trugschluss besteht ?! Keine Ahnung ich Begreif nicht wie das sonst funktionieren kann ^^ klär mich bitte einer auf
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Und? Nur weil dieser PWM-Mode dem CTC ähnelt, ist es noch lange kein CTC-Mode. Zeitpunkt des OCR-Updates, Bedeutung der COM-Bits, es ist in jeglicher Hinsicht ein PWM-Mode. Zu behaupten das Datenblatt wäre hier falsch, ist totaler Quatsch.ist bei CTC doch genauso, nur dass updaten der Register passiert zu einem anderen Zeitpunkt ?!
Konkretes Beispiel? Vermutlich hast du nur irgendetwas falsch gemacht. Ich konnte jedenfalls noch kein Fehlverhalten des Timers in dem Mode feststellen.Jedenfalls hab ich die Erfahrung gemacht, dass bei der Verwendung des OCR1A-Register zum einstellen des TOP der PWM Output nicht richtig funktioniert
Tut sie doch gar nicht. Er sagt doch, dass jetzt keine LED mehr die Helligkeit ändert. Und vorher hatte er (versehentlich) einen ganz anderen Mode ausgewählt.Wobei mir immer noch nciht einleuchtet, wieso die eine LED die Helligkeit ändert, obwohl er beim setzen von OCR1A doch nur die Frequenz ändert und nicht das Tastverhältnis!?
MfG
Stefan
ahso, ja klar das leuchtet ein, hoffentlich ham wir ihm trotzdem helfen können ^^
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Lesezeichen