PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM ist unterschiedlich



!*sascha*!
01.05.2011, 22:38
Hi,

ich habe 3 verschiedene Platinen für Atmega8 CPUs ...

1. 12 MHz
2. 4 MHz
3. 8Mhz



$regfile = "m8def.dat"

$crystal = 12000000
'$crystal = 8000000
'$crystal = 4000000

Config PortB = Output


Config Servos = 2 , Servo1 = Portb.1, Servo2 = Portb.2 , Reload = 10

Enable Interrupts


do

Servo(1) = 70
Servo(1) = 70
Print "step 1"
wait 1

Servo(1) = 70
Servo(1) = 70
Print "step 2"
wait 1

loop


Ich verwende immer den gleichen Prozessor.
Die Ausgabe auf dem SerialPort ist OK.

Aber wie PWM Signale sind auf allen Board unterschiedlich!

Hat jemand eine Idee?


Gruß,
Sascha

Bernd_Stein
02.05.2011, 08:43
Hi,

ich habe 3 verschiedene Platinen für Atmega8 CPUs ...

1. 12 MHz
2. 4 MHz
3. 8Mhz



$regfile = "m8def.dat"

$crystal = 12000000
'$crystal = 8000000
'$crystal = 4000000


Ich verwende immer den gleichen Prozessor.
Die Ausgabe auf dem SerialPort ist OK.

Aber wie PWM Signale sind auf allen Board unterschiedlich!

Hat jemand eine Idee?


Eigentlich schon. Die PWM-Frequenz wird ja von der Systemfrequenz sprich dem Quarz abgeleitet. Deshalb muß die PWM bei jedem anderen Quarz auch eine andere Frequenz haben.
Wundere mich nur das die RS232 funktioniert, oder nutzt Du sie nur zum Flashen ?
Habe wenig Ahnung von Basic, kenn ich nur vom alten Commodore C64.

Bernd_Stein

DanielSan
02.05.2011, 10:22
Das die RS232 Kommunikation funktioniert ist klar. An der Systemfrequenz erkennt Bascom wie er die RS232 Timen muss damit alles passt.

Das gleiche hätte ich jetzt eigentlich auch für den Servo Befehl erwartet!?

Gruß Daniel

Bernd_Stein
02.05.2011, 11:15
Das die RS232 Kommunikation funktioniert ist klar. An der Systemfrequenz erkennt Bascom wie er die RS232 Timen muss damit alles passt.

Das gleiche hätte ich jetzt eigentlich auch für den Servo Befehl erwartet!?

Gruß Daniel

Habe keine Ahnung von BASCOM. Klinke mich damit aus.

Bernd_Stein

DanielSan
02.05.2011, 11:47
Mir ist gerade noch eine Idee gekommen.

Hast du die Prozessoren denn auch passend gefused? Denn wenn der Systemtakt von Bascom nicht dem Systemtakt, den du mit den Fuses einstellst, entspricht kommt es zu falschen Timings.

Gruß Daniel

Richard
02.05.2011, 13:25
Na ja, die PWM Frequenz ist ja ein Teil der Quarzfrequenz z.B. 1/8 oder was halt eingestellt ist.
12 Mhz/8 oder 8 Mhz/8 oder 4 Mhz/8 da muss einfach immer etwas anderes heraus kommen.

Anders allerdings das Puls Pausen Verhältnis, das sollte immer zwischen 0 und 100% einstellbar sein. Nur die Widerholrate ändert sich natürlich.

Gruß Richard

DanielSan
02.05.2011, 14:11
Dann müsstest du es ungefähr so machen:
1. Timer configurieren! Damit du nachher den Prescaler anpassen kannst.

CONFIG TIMER0 = TIMER , PRESCALE= 1|8|64|256|10242. Dem Servobefehl einen Timer zuweisen:

Config Servos = 2 , Servo1 = Portb.1 , Servo2 = Portb.2 , Reload = 10 , Timer = Timer0So solltest du die abweichungen anpassen können. Natürlich ist das so keine fertige Lösung, ein bisschen musst du da noch selbst dran arbeiten.

Gruß Daniel

!*sascha*!
02.05.2011, 17:00
Hi *,

ah Antworten :-) Ich bin grade erst von der Arbeit gekommen.

Es war auch meine Erwartung, dass Bascom es an die eingestellte Quarzfrequenz anpasst!

Die RS232 Ausgabe habe ich für diesen Zweck eingebaut!
Da die Ausgabe funktioniert, dachte ich die Quarzfrequenz passt und damit auch die Fuse Bits richtig sind.

An die Fuse BITs habe ich auch schon gedacht.

Ich muss mal gucken, ob die richtig eingestelt sind.
Ich habe den Programmer von Ulrich Radig und muss die .hex und Fuse via "AVR Burn-O-Mat" in den AVR brennen.

Bin mir immer nicht sicher, ob die Fuse 100% passen!

Werde mal nach der Fuse Konfiguration googeln!

Danke schonmal für die Antworten....

Gruß,
Sascha

peterfido
02.05.2011, 17:56
Ich habe den Programmer von Ulrich Radig

Den habe ich auch. Läuft unter Bascom direkt als USBASP.

DanielSan
02.05.2011, 22:25
Den habe ich auch. Läuft unter Bascom direkt als USBASP.

Ich auch! Aber bei mir klappt es nicht mit USBASP. Kannst du mir da mal per PN sagen wie du das gemacht hast?