eraser2704
06.02.2009, 00:22
Hallo zusammen,
ich bin relativ neu im Bereich Microcontroller, habe aber die letzten Tage echt gute Erfolgserlebnisse gehabt und es fängt an richtig Spaß zu machen.
Jetzt hänge ich aber fest:
Ich habe ein Programm, welches in einer Endlosschleife einen Maussensor ausliest und demensprechend einen Motor steuert.
Jetzt suche ich eine Möglichkeit mithilfe der Taster am RN-Control außerhalb dieser Schleife den Motor in beide Richtung drehen zu lassen, solange der jeweilige Taster gedrückt ist.
Ich habe etwas mit Interrupts herumgespielt, da ich dachte damit kann man das Problem lösen. Die Schleife soll während des Tastendrucks auf keinen Fall weiterlaufen.
Auf der anderen Seite hab ich versucht in dem Bascom Testprogramm die Logik zu verstehen, wie hier die Tasten abgefragt werden.
Beides für sich gesehen hat auch irgendwie funktioniert.
Ich denke mit dem Interrupt sollte mein Problem lösbar sein, allerdings verstehe ich nicht, wie ich das mit der Tastenabfrage kombinieren soll.
Mit einem externen Taster, der direkt zwischen GRD und einem Pin ist, würde ich klar kommen, aber ich möchte die vorhandenen Taster nutzen.
Im Moment sieht mein Code in etwa so aus:
Variablendefinition, Ports etc
Do
'Hauptprogramm (Sensorenabfrage, Motorsteuerung)
Loop
Unterfunktionen zum Hauptprogramm
Zum Interrupt wollte ich folgendes hinzufügen:
Enable Interrupts
Enable INT0
Config INT0 = Low Level 'damit sollte Interrupt solange gültig sein, wie Taster gedrückt?
On INT0 ISR_Motor
.
.
.
ISR_Motor:
If Taster1 = 1 Then
Portb.0 = 0 'Drehrichtung
Portb.1 = 1
Motor=1
Else
Return
End if
Motor und Taster sind vorher via Alias einem Pin zugeordnet.
Für die andere Drehrichtung alles nochmal in einem anderen Interrupt .
Meine 2 Fragen:
Funktioniert obiges Schema prinzipiell mit einem externen Taster?
Wie benutze ich einen der Taster des RN-Control?
(Was bedeuten Case, Adc, Getadc etc im Beispielprogramm und woher kommen diese Werte (420 to 450)? )
Vielen Dank für Eure Hilfe
Gruß
Manuel
ich bin relativ neu im Bereich Microcontroller, habe aber die letzten Tage echt gute Erfolgserlebnisse gehabt und es fängt an richtig Spaß zu machen.
Jetzt hänge ich aber fest:
Ich habe ein Programm, welches in einer Endlosschleife einen Maussensor ausliest und demensprechend einen Motor steuert.
Jetzt suche ich eine Möglichkeit mithilfe der Taster am RN-Control außerhalb dieser Schleife den Motor in beide Richtung drehen zu lassen, solange der jeweilige Taster gedrückt ist.
Ich habe etwas mit Interrupts herumgespielt, da ich dachte damit kann man das Problem lösen. Die Schleife soll während des Tastendrucks auf keinen Fall weiterlaufen.
Auf der anderen Seite hab ich versucht in dem Bascom Testprogramm die Logik zu verstehen, wie hier die Tasten abgefragt werden.
Beides für sich gesehen hat auch irgendwie funktioniert.
Ich denke mit dem Interrupt sollte mein Problem lösbar sein, allerdings verstehe ich nicht, wie ich das mit der Tastenabfrage kombinieren soll.
Mit einem externen Taster, der direkt zwischen GRD und einem Pin ist, würde ich klar kommen, aber ich möchte die vorhandenen Taster nutzen.
Im Moment sieht mein Code in etwa so aus:
Variablendefinition, Ports etc
Do
'Hauptprogramm (Sensorenabfrage, Motorsteuerung)
Loop
Unterfunktionen zum Hauptprogramm
Zum Interrupt wollte ich folgendes hinzufügen:
Enable Interrupts
Enable INT0
Config INT0 = Low Level 'damit sollte Interrupt solange gültig sein, wie Taster gedrückt?
On INT0 ISR_Motor
.
.
.
ISR_Motor:
If Taster1 = 1 Then
Portb.0 = 0 'Drehrichtung
Portb.1 = 1
Motor=1
Else
Return
End if
Motor und Taster sind vorher via Alias einem Pin zugeordnet.
Für die andere Drehrichtung alles nochmal in einem anderen Interrupt .
Meine 2 Fragen:
Funktioniert obiges Schema prinzipiell mit einem externen Taster?
Wie benutze ich einen der Taster des RN-Control?
(Was bedeuten Case, Adc, Getadc etc im Beispielprogramm und woher kommen diese Werte (420 to 450)? )
Vielen Dank für Eure Hilfe
Gruß
Manuel