Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe beim Atmega644p, Timer 2 PWM
Felix H.
28.08.2010, 16:51
Hi,
ich möchte gern beim atmega644p die beiden Ausgänge für PWM nutzen. Pin 20 und 21. Leider blick ich bei den ganzen Fusebits im Datenblatt mal überhaupt nicht durch...
mit dem einfachen "config timer2 = pwm......" geht es leider nicht.
Den wert setze ich im Programm mit dem Befehl "OCR2A = X"
Kann mir jemand helfen? Ich will einfach nur die beiden PWM Kanäle mit clear down benutzen.
Gruß
Felix H.
28.08.2010, 17:22
habe gerade nochmal ins datenblatt geschaut und gesehen, dass beim 644p die beiden TOSC anschlüsse auf timer2 gehen! nicht wie sonst auf timer1. D.h. Timer2 ist mit meinem UhrenQuarz schon belegt.
Ich habe jetzt alles auf timer1 umverdrahtet. Dort geht es aber auch nicht^^
Hallo Felix,
die TOSC Anschlüsse sind auf Pin 28+29, kommen deinem Timer2 also nicht in die Quere.
Zeig doch mal deinen Code, dann kann man besser helfen.
Felix H.
28.08.2010, 20:51
Hi,
die TOSC Anschlüsse gehen aber an Timer2. Da ich dort einen Uhrenquarz dran habe, blockiert dieser ja den Timer2 für weitere Verwendung. Daher habe ich es jetzt auf Timer1 ungekabelt. Pin 18+19.
Config Timer1 = Pwm , Pwm = 8 , Prescale = 256 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Tccr1a = &B10100001
Tccr1b = &B00000011
Timsk1 = &B00000111
und im code....
Ocr1ah = &B00000000
Ocr1al = dimmen1
Ocr1bh = &B00000000
Ocr1bl = dimmen2
Config Timer1 = Pwm , Pwm = 8 , Prescale = 256 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Tccr1a = &B10100001
Tccr1b = &B00000011
Timsk1 = &B00000111
Mit
Tccr1b = &B00000011
überschreibst du den Prescale auf 64. Ist das gewollt?
Mit
Timsk1 = &B00000111
enablest du Interrupts. Ist das gewollt? Hast du die entsprechenden ISRs erstellt und über
On <interrupt> isr
dem Controller mitgeteilt? Wenn nicht, wird er dauern resetten.
Felix H.
29.08.2010, 15:17
Hi,
ich dachte die interrupts sind nötig... ich hab halt alles mögliche durchprobiert aber nichts hat funktioniert...
ja der prescale soll auf 64 stehen. Wenn ich Timsk1 = &B00000111 hinter dem config timer.... stehen habe wird das ja überschrieben oder?
Hilfe ich blick da nicht durch....
ja der prescale soll auf 64 stehen.
Warum schreibst du dann nicht Prescale=64 in den Config Timer1 Befehl?
Wenn ich Timsk1 = &B00000111 hinter dem config timer.... stehen habe wird das ja überschrieben oder?
Ja schon, aber wenn du keine ISR anspringen willst, dann lass das Setzen von Timsk1 weg.
Felix H.
29.08.2010, 17:22
hi,
hab das jetzt rausgenommen... geht trotzdem nicht^^
Zeig doch mal deinen ganzen Code, dann kann man den mal im Simulator ausprobieren.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.