PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM läßt sich nicht getrennt regeln..



globe
19.02.2005, 13:33
Hallo!

Habe zu dem Thema Pwm schon eifrig die Suche bemüht, finde aber trotzdem meinen Fehler nicht





$regfile = "m8def.dat"
$crystal = 4000000
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Portd = Output


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



Portc.1 = 1
Portc.2 = 1

Dim X As Byte
Dim Vormitte As Integer
Dim Seitemitte As Integer
Dim Vor As Integer
Dim Seite As Integer

Do
For X = 0 To 255
Pwm1a = X
Pwm1b = 0
Waitms 20

Next
Loop

Eigentlich sollte ja jetzt der eine Motor stehen und der andere langsam beschleunigen. Tun sie aber nicht und drehen beide gleich.

Vielleicht findet ja von Euch jemand meinen Fehler.


Gruß Georg

x-ryder
19.02.2005, 14:55
enable interrupts fehlt auf jeden fall schonmal und dann schreib doch nochmal wo was an dem mega8 hängt

globe
19.02.2005, 15:10
Hi!

An enable interrupts liegt es schon mal net hab ich grad probiert

Also an Pb1 und Pb2 hängen je ein Motortreiber. Die schaltung an sich funktioniert auch nur leider lassen sich die Motoren komischer Weise nicht getrennt steuern (an beiden Pins kommt genau das selbe raus) und im obigen
Beispiel beschleunigen eben beide Motoren immer gleich. Wo es ja eigentlich logisch wäre wenn einer stehen bliebe....

globe
19.02.2005, 16:09
Oh hab gerade noch was seltsames festgestellt:

wenn ich

Pwm1a = 0
Pwm1b = x

schreibe geht es andersrum aber nicht...

harryup
20.02.2005, 12:04
hi,
mit der anweisung 'pwmxx=' hab ich schon meine überaschungen erlebt, probier mal die register direkt zu beschreiben, also 'ocr1a= und ocr1b=', das macht die sache deutlicher.
du kannst auch nit 'pwm1a=' beschreiben und anschliessen (wenn ein lcd angeschlossen ist) die register auslesen ('lcd ocr1a'), dann siehst du, was eingetragen ist und warum der so reagiert.
grüssens, harry