PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega8 PWM - Timer2 - Pin17 ?



hellraider
22.05.2009, 01:34
Hallo,
ich bin jetzt langsam am verzweifeln.

Ich versuche verzweifelt den dritten PWM-Kanal vom Atmega8 am Pin 17
zum klaufen zum bringen.

Wenn ich das alles richtig verstanden habe, muss ich den über Timer2
einstellen. Doch irgendwie bekomme ich den dann mittels dem
compare - befehl nicht zum laufen.
bascom bringt mir immer eine Fehlermeldung.

Kann mir eventuell jemand die richtige initialisierung posten, und wie ich dann den Ausgang einfach setzen kann.

Wäre für jede Hilfe dankbar.

Gruß

pyr0skull
22.05.2009, 07:51
Was für eine Fehlermeldung bringt Bascom denn?

hellraider
22.05.2009, 10:22
Also mal genau:

Programmauszug :
---------------------------------------------------------------------------------------
Config Timer2 = Pwm , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1


'Die Timer freigeben
Enable Timer1
Enable Timer2

'Die Timer starten
Start Timer1
Start Timer2

'Die PWM-Register zuweisen
Led3 Alias Pwm0a
Led2 Alias Pwm1a
Led1 Alias Pwm1b


Led1 = 0
Led2 = 0
Led3 = 0

-----------------------------------------------------------------------------------

folgende Fehler bringt Bascom :

Assignment Error (PWM0A) für die Zeile mit " Led3=0"

-----------------------------------------------------------------------------------

Für Led1 und Led2 bekomme ich keine Errormeldung.

Schon mal danke für euere Hilfe

Gruß

for_ro
22.05.2009, 12:39
Hast du denn in der Bascom Hilfe oder im Manual des Mega8 nachgesehen, ob der Timer0 überhaupt PWM machen kann?

Gruß

Rolf

uwegw
22.05.2009, 13:19
PWM0A kann auf keine Fall richtig sein, da der PWM-Kanal zu Timer 2 und nicht zu Timer 0 gehört. Probier mal PWM2 aus.

pyr0skull
22.05.2009, 15:01
Da der Atmega8 nur einen Kanal für Timer0 hat wäre PWM0 richtig (und würde keine Bascom-Fehler provozieren).
Du möchtest aber Timer2 benutzen, deshalb solltest du dem Rat von uwegw folgen ;)

uwegw
22.05.2009, 15:34
Timer 0 hat gar keinen PWM-Kanal! PWM0 gibt es also nicht.

hellraider
23.05.2009, 00:34
Hallo,
erstmal danke für die Hilfe, leider war keiner auf dem richtigen Weg :-b

Der Fehler lag daran, das ich Timer2 nicht über pwm.. ansprechen kann,
sondern nur über orc2 ; hat mich sehr sehr langes suchen im Internet
gekostet. Da scheinbar mehr Leute das problem haben, hier die ultimative Lösung :
--------------------------------------------------------------------------------------
Blablabla wie üblich am Anfang

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


'Die Timer freigeben
Enable Timer1
Enable Timer2

'Die Timer starten
Start Timer1
Start Timer2

'PWM auf 0 setzen

Pwm1a = 0 'PWM1
Pwm1b = 0 'PWM2
Ocr2 = 0 'PWM3

- weiterer Programmcode

Pwm1a = A1
Pwm1b = A1
Ocr2 = A1

-----------------------------------------------------------------------------------

Vielleicht hilfts ja jemanden weiter, damit er nicht auch ewig suchen muss.

Gruß

Leon3770
27.05.2009, 19:24
Hallo Hellraider,
vielen Dank,mir hat diese Zeile

....Compare Pwm = Clear Up , Pwm = On ...

sehr geholfen.

viele Grüße

puttla
03.07.2011, 16:23
Hallo Hellraider,
mir hats auch sehr geholfen-Danke!!