PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe gesucht: PWM funktioniert nicht bei Timern 0, 2, 5



NeroII
19.02.2010, 23:47
Hallo,

ich wollte für meinen neuen ATMega 2560 mal alle PWM-Kanäle durchprobieren. Dabei ist mir aufgefallen, dass das nur mit Timer 1,3 und 5 funktioniert. Es kommt beim Syntax-Check zu folgenden Fehlermeldungen:

1.: Gebe ich "Config Timer0 = Pwm , Pwm = 8 ..." ein, wird Timer0 automatisch blau und klein geschrieben (Normal ist rot und alles groß). Außerdem erkennt Bascom das Ganze irgendwie nicht an. Es kommt die Fehlermeldung: "Invalid Parameter for CONFIG parameter or value [8]".
Ändere ich zu Timer1 wird dieser automatisch rot und groß geschrieben und die Fehlermeldung taucht bei erneutem Syntax-Check nicht mehr auf. Der selbe Fehler tritt bei Timer2 auf.

Ich habe keinerlei Ahnung warum Bascom zwischen Timer0 und Timer1 unterscheidet und was den Unterschied ausmacht! Das wirk auf mich zutiefst unlogisch.

2.:Gebe ich nun Timer5 ein, wird das sofort erkannt und wird rot und groß geschrieben. Beim Syntax-Check erscheint jedoch folgende Fehlermeldung: Illegal character [expected (,got "[TCC53A]].
Wieder ist das für mich unerklärbar!

Kann mir irgendjemand helfen? Was geht da vor? Ist Bascom zu doof für die vielen Kanäle des ATMega 2560 oder ist das schlicht ein Bug?

Viele Grüße
Cornelius

Jaecko
20.02.2010, 00:46
Bei Config Timer0 ist die Zuweisung PWM = 8 nicht sinnvoll, da der Timer0 nur 8 Bit hat. Kann also sein, dass Bascom das da einfach nicht haben will.
Gleiches bei Timer2 (8-Bit-Timer).

NeroII
20.02.2010, 12:44
Danke für den Tip, leider hat es auch nicht so viel geholfen. Man kann zwar die Configs alleine Compilieren, das bringt einem aber wenig. Es fehlen die Compares. Auch da erkennt Bascom Timer 0 und 2 anders als 1,3,4 und 5. Bitte im Screeshot nachschauen!

Timer 5 ist ein Spezialfall, er ist als Bug schon bekannt und noch nicht behoben.

Warum aber Timer 0 und 2 andere Schriftart und Farbe bekommen verstehe ich absolut nicht!

Jaecko
20.02.2010, 12:49
Bei Timer 0 und 2 gibts auch nur 1 PWM-Kanal. Also nur 0 oder 2, nicht 0A, 2A.

Der letzte Fehler scheint noch ein Bug in Bascom zu sein; ebenso die Farbgebung. Da war man anscheinend nicht ganz konsequent.

linux_80
20.02.2010, 13:12
Hallo,

beim Mega2560 hätten aber auch Timer0 und 2 zwei PWM Kanäle !
Timer 1, 3, 4 und 5 wohl jeweils 3 PWMs.

NeroII
20.02.2010, 13:32
@Jaecko: Das stimmt so nicht. Timer0 und Timer2 haben jeweils 2 PWM-Kanäle: http://www.robotikhardware.de/download/rnmega2560.pdf auf Seite 7. Timer 1, 3, 4 und 5 wie schon gesagt jeweils 3.

Dennoch hab ich das ausprobiert und auf den Screenshots kann man sehen was rauskam. Bei Timer0 hilft das weglassen von A gar nichts. Bei Timer 2 aber sehr wohl! Fügt man dann ein A hinzu geht wieder gar ncihts mehr.

Meint ihr wirklich die Farbgebung hat keine Auswirkung auf das Resultat? Ich bin der Meinung der Bug sitzt tiefer, bin aber auch blutiger Anfänger.

Jaecko
20.02.2010, 14:00
Ah stimmt. Die "grossen" haben da wieder mehr; war da jetzt irgendwie noch beim Mega8.

Aber eigentlich sollte man meinen, dass Bascom in der letzten Zeit die Fehler was den M2560 angeht, ausgebessert hat. Zu der Zeit, als ich die Kombination das letzte Mal benutzt hab, gingen z.B. die ADC-Kanäle 8-15 nicht bzw. die Ports K, L nicht richtig.

Das mit der Farbgebung hat mich damals auch zeitweise "gestört". ABer irgendwann hab ichs einfach ignoriert.
Evtl geht die Farbgebung ja dann richtig, wenn du statt Compare** einfach PWM** schreibst. Ich glaub, dass die da einfach "vergessen" haben, den jeweiligen Text als Schlüsselwort darzustellen.

Du kannst ja auch mal in diese m2560def.dat schauen, ob da die jeweiligen Namen (z.B. Timer5) überhaupt drinstehen.

NeroII
21.02.2010, 13:06
Hallo,

danke für den PWM**-Tip, das wars! Ich konnte alle möglichen PWMs testen - sie funktionieren. Bin total überrascht, dass das so gut ging. Ich fange gerade mit AVR und Bascom an, hab davor noch nichts damit zu tun gehabt, sehr wohl aber mit Mikrocontrollern.

Hier der Code für alle die es interessiert:

$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus
$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44
$crystal = 16000000 'Quarzfrequenz

Config Portg.5 = Output
Config Porte.3 = Output
Config PortE.4 = Output
Config Porth.3 = Output
Config PortH.4 = Output
Config PortH.5 = Output
Config PortH.6 = Output
Config PortB.4 = Output
Config PortB.5 = Output
Config PortB.6 = Output
Config PortB.7 = Output

Config Pind.5 = Output
Led Alias Portd.5

Config Timer0 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 256
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Compare C Pwm = Clear Up , Prescale = 256
Config Timer2 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 256
Config Timer3 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Compare C Pwm = Clear Up , Prescale = 256
Config Timer4 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Compare C Pwm = Clear Up , Prescale = 256



Do
Led =0
Pwm0b = 160
Pwm1a = 160
Pwm1b = 160
Pwm1c = 160
Pwm2a = 160
Pwm2b = 160
Pwm3a = 160
Pwm3b = 160
Pwm4a = 160
Pwm4b = 160
Pwm4c = 160
Waitms 1000
Led = 1
Pwm0b = 80
Pwm1a = 80
Pwm1b = 80
Pwm1c = 80
Pwm2a = 80
Pwm2b = 80
Pwm3a = 80
Pwm3b = 80
Pwm4a = 80
Pwm4b = 80
Pwm4c = 80
Waitms 1000
Loop

End

Hat diese Forum im Moment eigentlich einen Bug? Wenn meine Antwort eine bestimmte Länge überschreitet springt die Ansicht ohne zutun immer nach ganz oben und dann wieder ganz runter wenn ich schreibe.

Viele Grüße
Cornelius

oratus sum
21.04.2010, 19:28
Und wo hast du jetzt dein Timer5 gelassen?

Wenn ich Timer5 schreibe dann kommt ein debug fehler