Sven Löffler
06.04.2013, 13:54
Hallo zusammen,
ich habe ein großes Problem und finde einfach keine Lösung dazu. Ich möchte mit einem Tiny13 einen Servo ansteuern. Es gibt 2 Stellungen - auf und zu. Diese werden durch 2 Taster angefahren. Nun soll es aber so sein, dass wenn das Servo die Position erreicht hat, das Servo Signal weg sein soll, damit es nicht brummt.
Ich habe mir überlegt, es mit Enable und Disable Interrupts zu machen. Nach dem ersten Einschalten funktioniert das auch einwandfrei. Das Servo fährt in die Position ( hier 66 ) und ich kann es von Hand bewegen. Sobald ich jedoch die Abfrage der Taster einbaue, funktioniert das Ausschalten des Servo Signals nicht mehr. Das Servo Signal ist IMMER da. Ich weiß bald nicht mehr weiter .... :( Es muss noch eine möglichkeit geben, das Signal mittels Software auszuschalten.
Vielen Dank im Voraus !!! ;)
'************************************************* ************************************************
'* *
'* Servo Tiny Kieswerk *
'* *
'* Controller ist ein Tiny13 *
'* *
'************************************************* ************************************************
$regfile = "Attiny13.dat" ' Controller ist ein Tiny13
$crystal = 4800000 ' 4,8 Mhz Takt
$hwstack = 10
$framesize = 10
$swstack = 20
Config Pinb.0 = Input ' Ein- / Ausgänge definieren
Config Pinb.1 = Input
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
Taster_zu Alias Pinb.0
Taster_auf Alias Pinb.1
Gruen Alias Portb.3
Rot Alias Portb.4
Enable Interrupts
Config Servos = 1 , Servo1 = Portb.2 , Reload = 10
Portb.0 = 1 ' Interne Pullups ein
Portb.1 = 1
Portb.3 = 1
' Werte von 40 - 75 = 90° Drehung
Servo(1) = 66
Gruen = 0
Waitms 100
Disable Interrupts
Taster_abfrage_zu:
Do
If Taster_auf = 0 Then
Enable Interrupts
Servo(1) = 66
Rot = 1
Gruen = 0
Waitms 100
Disable Interrupts
Else
Goto Taster_abfrage_auf
End If
Loop
Taster_abfrage_auf:
Do
If Taster_zu = 0 Then
Enable Interrupts
Servo(1) = 95
Rot = 0
Gruen = 1
Waitms 100
Disable Interrupts
Else
Goto Taster_abfrage_zu
End If
Loop
End
ich habe ein großes Problem und finde einfach keine Lösung dazu. Ich möchte mit einem Tiny13 einen Servo ansteuern. Es gibt 2 Stellungen - auf und zu. Diese werden durch 2 Taster angefahren. Nun soll es aber so sein, dass wenn das Servo die Position erreicht hat, das Servo Signal weg sein soll, damit es nicht brummt.
Ich habe mir überlegt, es mit Enable und Disable Interrupts zu machen. Nach dem ersten Einschalten funktioniert das auch einwandfrei. Das Servo fährt in die Position ( hier 66 ) und ich kann es von Hand bewegen. Sobald ich jedoch die Abfrage der Taster einbaue, funktioniert das Ausschalten des Servo Signals nicht mehr. Das Servo Signal ist IMMER da. Ich weiß bald nicht mehr weiter .... :( Es muss noch eine möglichkeit geben, das Signal mittels Software auszuschalten.
Vielen Dank im Voraus !!! ;)
'************************************************* ************************************************
'* *
'* Servo Tiny Kieswerk *
'* *
'* Controller ist ein Tiny13 *
'* *
'************************************************* ************************************************
$regfile = "Attiny13.dat" ' Controller ist ein Tiny13
$crystal = 4800000 ' 4,8 Mhz Takt
$hwstack = 10
$framesize = 10
$swstack = 20
Config Pinb.0 = Input ' Ein- / Ausgänge definieren
Config Pinb.1 = Input
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
Taster_zu Alias Pinb.0
Taster_auf Alias Pinb.1
Gruen Alias Portb.3
Rot Alias Portb.4
Enable Interrupts
Config Servos = 1 , Servo1 = Portb.2 , Reload = 10
Portb.0 = 1 ' Interne Pullups ein
Portb.1 = 1
Portb.3 = 1
' Werte von 40 - 75 = 90° Drehung
Servo(1) = 66
Gruen = 0
Waitms 100
Disable Interrupts
Taster_abfrage_zu:
Do
If Taster_auf = 0 Then
Enable Interrupts
Servo(1) = 66
Rot = 1
Gruen = 0
Waitms 100
Disable Interrupts
Else
Goto Taster_abfrage_auf
End If
Loop
Taster_abfrage_auf:
Do
If Taster_zu = 0 Then
Enable Interrupts
Servo(1) = 95
Rot = 0
Gruen = 1
Waitms 100
Disable Interrupts
Else
Goto Taster_abfrage_zu
End If
Loop
End