PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer2 und PWM mit Mega8 (bzw.Timer1)?



Roberto
02.11.2004, 00:10
Hallo Leute

Spiele mich gerade ein bischen mit PWM und dem Mega8 herrum.

PWM mit Timer1 läuft gut, aber wie bekomme ich das mit Timmer2 hin ?

folgender Code:
------------------------------------------
$regfile = "m8def.dat"
$crystal = 4000000

Config Pinb.3 = Output 'Pin 17

Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1

Do

Timer2 = 100

Loop

End
----------------------------------------

Habe so aber keinen Ausgang am Pin 17 ??!


PWM = 8, wie beim Timer1, geht nicht, nur PWM=ON..... dürfte also so passen.

Wie spreche ich dann den Compare von Timer2 an ?

Bei Timer1 geht es ja mit Compare1a oder 1b=100.
Beim Timer2 geht kein Compare = 100 oder compare2= 100
(Da komt dann ein Error)

Bei der Schreibweise : Timer2=100 kommt zumindest kein Error ;-) ,
weis aber nicht, ob ich so den Compare von Timmer2 anspreche ?

Wie bekomme ich das PWM vom Timer2 auf den Pin17

Habe diesen Beitrag durchgelesen:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=2017&highlight=timer2+pwm
Kenne mich aber nicht so bei den Registern aus, um das uaf den Mega8 anzuwenden ?

Ist das ein Bug von Bascom ???

Wer kann mir da helfen ?!
-----------------------------------

Ps.: nochwas: zu Timer1

folgender Code:
---------------------------------
$regfile = "m8def.dat"
$crystal = 4000000


Config Timer1 = Pwm , Pwm =8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale =1

Do
Compare1a = 100
Compare1b = 100
Loop

End
-------------------------------

Wenn ich den PWM von Timer1 auf den Pin 15 ausgeben will, reicht eigentlich der obere Code.
Angeblich braucht man die Pins nicht extra definieren oder auf Output schalten.

Leider geht das aber nur mit Compare1a, also Pin 15
Sobald ich aber den Compare1b auf Pin 16 verwenden will, geht es nur, wenn ich vorher den Pin auf Output schalte! ?!
Also : Config Pinb.2 = Output

Ist das ein Bug von Bascom oder ist das OK ?

Mit freundlichen Grüssen, aus Österreich :-)

Michael
02.11.2004, 16:53
Hallo Roberto,


Wie spreche ich dann den Compare von Timer2 an ?

mit < Ocr2 = Variable >


geht es nur, wenn ich vorher den Pin auf Output schalte! ?!
Also : Config Pinb.2 = Output

ja, ist bei mir genauso. Ich finde es aber ok., daß die Datenrichtung vorher festgelegt wird. Deswegen wäre es eher ein Bug, wenn du es nicht machen mußt.
Gruß, Michael

Roberto
02.11.2004, 21:04
Hallo Michael.
Toll, super , juhuuuuuu.
Es geht ! :cheesy:

Kann ich dann für den PWM mit allen Timern immer das OCR..
verwenden ?!

Üblich ist es ja mit Compare1a= Variable (für Timer1)



Danke :-)

Michael
02.11.2004, 21:16
Hallo Roberto,


Kann ich dann für den PWM mit allen Timern immer das OCR..
verwenden ?!

pühh, weiß nicht, ist doch egal? Hauptsache es funktioniert! ;)


Üblich ist es ja mit Compare1a= Variable (für Timer1)

ja, aber nur für Timer1. Du kannst aber statt Compare1a(b) auch Pwm1a(b) nehmen. Das läßt sich schneller schreiben :)
Gruß, Michael

Roberto
02.11.2004, 21:23
Hallo

Habe es jetzt das ocr mit Timer1 probiert, geht aber nicht.
Komisch ....

(Du warst aber beim Antworten jetzt schneller ;-) )

Ja, PWM1a könnte ich auch nehmen :-)

Woher weisst du das eigentlich mit dem OCR ?
Steht das irgendwo?! (kann leider kein englisch)

harryup
05.11.2004, 16:24
hi,

beim mega8 hab ich auch schon festgestellt, dass die pwm-ausgabe mit prescale=1 nicht geht, nimm spasseshalber mal 'nen anderen wert.
wenn's dann geht stimmt was mit bascom nicht, d.h. er setzt die falschen register oder die richtigen mit falschen werten. abhilfe: das register direkt beschreiben, hat bei mir gefuntzt.
gruss, harry

Roberto
05.11.2004, 21:13
Bei mir geht Prescale=1 schon.