Ok, danke. Welcher Timer 8 Bit bzw. 16 Bit hat, habe ich im Datenblatt gefunden. Mir fällt allerdings kein Beispiel ein, wann ich den 8 Bit Timer bzw. den 16 Bit Timer verwenden soll. Kann mir jemand ein Beispiel nennen?
Ok, danke. Welcher Timer 8 Bit bzw. 16 Bit hat, habe ich im Datenblatt gefunden. Mir fällt allerdings kein Beispiel ein, wann ich den 8 Bit Timer bzw. den 16 Bit Timer verwenden soll. Kann mir jemand ein Beispiel nennen?
Das kommt drauf an was für Zeiten du erreichen willst. Ein 16-Bit Timer kann (dadurch das er ein 16-Bit Timerregister hat) weiter zählen und braucht dem entsprechend länger um einen Überlauf zu bekommen als ein 8-Bit Timer.
Für eine Pause von 1 Sekunde nimmst du z.B. einen 16-Bit Timer bei 16MHz. Für kurze Pausen (im ms Bereich) reicht der 8-Bit Timer. Du kannst aber den 8-Bit Timer durch eine Zählerschleife erweitern, sodass du damit auch längere Pausen erzeugen kannst.
Bei der PWM ist das ähnlich. Wenn du ein 16-Bit PWM-Register hast, kannst du die PWM viel feiner einstellen als mit 8 Bit.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Ein 16Bit Timer ermöglicht eine höhere Auflösung der PWM Schritte ( 65536 ), das bedeutet die Schritte sind feiner.
Ein 8 Bit Timer macht nur 256 Schritte ist also gröber.
Haben beide die gleiche Taktquelle wird die Ausgabefrequenz des 8 Bit Timers um den Faktor 256 über der des 16 Bit Timers liegen.
Es kommt also drauf an, was Du willst. Höhere Auflösung oder höhere PWM Wiederholfrequenz.
Die 10, 12 und 14 Bit Stufen sind dann mögliche Kompromisse aus den beiden Extremen.
Bei der PWM Ausgabefrequenz kann man noch mal einen drauf setzen, idem man FAST PWM verwendet, was aber wieder andere Nachteile hat.
Letztlich entscheidest Du und Deine Anwendung welche PWM Einstellungen Du verwendest.
Also, ich möchte einen Motor steuern und habe mich zur Zeit entschieden mit 10 Bit zu arbeiten:
Der Motor soll die Achse eines Roboters antreiben. Wenn das Programm funktioniert werde ich sehen ob die Drehzahl so in Ordnung ist. Allerdings dreht sich im Moment noch nichts. Ich bin grad unterwegs auf Dienstreise und habe kein LED dabei, sonst könnt ich testen, ob von dem Pin der das PWM-Signal wiedergibt, Strom kommt.Code:'PWM Testprogram $regfile = "m2560def.dat" $hwstack = 82 $framesize = 68 $swstack = 68 $crystal = 16000000 'Quarzfrequenz Config Pinc.0 = Output ' Stiftleiste JP 2; Pin 3; PC0 Motorboard_reset Alias Portc.0 Config Pinc.1 = Output ' Stiftleiste JP 2; Pin 4; PC1 Motorboard_dir Alias Portc.1 ' Timer 3 ist ein 16 Bit Timer und kann auch auf 10 Bit gesetzt werden => Pwm = 10 => 2 hoch 10 = 1024 bzw. 0 bis 1023 Config Timer3 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 8 ' Stiftleiste JP 1; Pin 5 ' --------------------------------------------------- Dim P As Word Motorboard_reset = 1 ' Stiftleiste JP 2; Pin 3; PC0 Enable Timer3 Motorboard_dir = 1 ' Stiftleiste JP 2; Pin 4; PC1 => gibt die Drehrichtung vor Do Pwm3b = 102 ' Motor hat bei 102 90% Leistung ' Stiftleiste JP 1; Pin 5 Loop End
Eine Frage habe ich allerdings noch: Auf Seite 6 von meiner Motortreiberdoku http://www.robotikhardware.de/downlo...eiber18V15.pdf steht, dass auf beiden Seiten des Boards V+ und GND Anschlüsse sind. Zur Zeit habe ich V+ und GND nur auf der Seite von OUTA und OUTB angeschlossen. Bevor ich das Board zerstöre, frage ich lieber nach: Muss ich die beiden anderen Pins auch mit V+ und GND verbinden?
Lesezeichen