Hallo, ich möchte mit einem atmega32 einen Servo ansteuern. Ich habe dazu einen Code in bascom basic geschrieben. Ich habe den atmega32 schon ungefähr 100 mal beschrieben. Mein Servo dreht sich dummerweise höchstens 3 mal und wird dabei jedesmal langsamer. Habt ihr eine Idee, woran das liegen kann? Kann es sein, dass der Controller bereits "Altersschwäche" hat? Danke, Tim $regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud = 9600 Config Pinb.1 = Output Enable Interrupts Config Servos = 1 , Servo1 = Portb.1 , Reload = 10 Dim Zahler As Integer Zahler = 10 Print "SMh eingeschaltet" Do Servo(1) = 50 Wait 2 Servo(1) = 150 Wait 2 Zahler = Zahler - 1 Loop Until Zahler = 0 End
Nein, ich habe den Mikrocontroller und den Servo an einem Netzteil. Also, suche ich weiter nach Ideen für diese Problemlösung... Tim
>Wait 2
Welche Zeit beschreibt "2"? Sekunden? Oder eher kleinere Einheiten?
>gibt es weitere Ideen? Löse dich von den Bascom-Blackboxen und programmiere das von Hand! Es sollte auch in Bascom möglich sein, den Timer manuell einzustellen. Dazu ist das Datenblatt und etwas Hirnschmalz notwendig. Den Timer kann man im Überlaufmodus betreiben, so dass er bei jedem Überlauf von 65535 nach 0 ein Interrupt auslöst. Dann kann man ihn noch so konfigurieren, dass er bei diesem Überlauf einen Pin auf 1 setzt und bei Erreichen einer Grenze (OnCompare) diesen Pin wieder auf 0 zurücksetzt. Das funktioniert dann ganz automatisch. Zum Einstellen der Servo-Position braucht man dann nur noch die OC-Grenze zwischen 1 und 2ms variieren. Wie das in C (und vielleicht noch in Assembler) geht, weiß ich - wie man das in Bascom macht, nicht... >Kann es sein, dass der Controller bereits "Altersschwäche" hat? Nö.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.