PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programierhilfe gesucht



bbs00
23.09.2007, 23:08
Hallo,

hier erstmal den Code, den ich bisher habe:


' -------------- RN-Control übliche _____________________
Declare Function Tastenabfrage() As Byte

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 64

$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1

Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Dim Taste As Byte
Dim Ton As Integer

I2cinit
Start Adc

' -------------- Ende RN-Control übliche _____________________


Config Pina.0 = Output
Stepper_enable Alias Porta.0

Config Pina.1 = Output
Stepper_richtung Alias Porta.1

Config Pina.2 = Output
Stepper_takt Alias Porta.2

Dim I As Integer


Stepper_enable = 1


Do
Taste = Tastenabfrage()
If Taste <> 0 Then

Select Case Taste

Case 1 'Schaltet Motorstrom ein
Stepper_enable = 1

Case 2
Toggle Stepper_richtung
For I = 1 To 400
Stepper_takt = 0 : Waitus 1 : Stepper_takt = 1 'Bewegt Motor genau 400 Halbschritte (1 Umdrehung bei den meisten Motoren)
Waitms 30
Next


Case 3
For I = 1 To 400
Stepper_takt = 0 : Waitus 1 : Stepper_takt = 1
Waitms 5
Next


Case 4
Toggle Stepper_richtung

Case 5 'Schaltet Motor aus
Stepper_enable = 0


End Select
Sound Portd.7 , 400 , 500 'BEEP
End If

Waitms 100
Loop

End




' Diese Unterfunktion fragt die Tastatur am analogen Port ab
' Sollte beim betätigen einer Taste kein Quittungston kommen, dann
' muss die die Tastenabfrage (Select Case Anweisung in Funktion )
' an ihr Board angepaßt werden. Widerstandstoleranzen sorgen in
' Einzelfällen manchmal dafür das die Werte etwas anders ausfallen
' Am besten dann den WS wert mit Print für jede Taste ausgeben lassen

Function Tastenabfrage() As Byte
Local Ws As Word

Tastenabfrage = 0
Ton = 600
Ws = Getadc(7)
' Print "ws= " ; Ws
If Ws < 1010 Then
Select Case Ws
Case 400 To 455
Tastenabfrage = 1
Ton = 550
Case 335 To 380
Tastenabfrage = 2
Ton = 500
Case 250 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 100 To 130
Tastenabfrage = 5
Ton = 350
End Select
Sound Portd.7 , 400 , Ton 'BEEP
End If

End Function



Ist eigentlich der Beispielcode nur ein wenig verändert.

Was ich nun erreichen will:
1. Die Tastenabfrage soll durch anlegen an Masse an z.B. PortA.3 - PortA.7 geschehen. Pullup ist zwar für die Taster schon eigeschaltet aber ich brächte den ja für die Ports zum abgefragt oder?
2. Würde gerne, dass sie der Motor durch einen Taster in eine fest definierte Richtung dreht. Also z.b. PortA.3=0 soll sich der Motor linksrum drehen und PortA.4=0 rechtsrum. Mit "Toggle Stepper_richtung" komme ich nicht weiter.
3. Solange sich z.b. PortA.4 im Zustand 0 befindet soll sich der Motor drehen. Wäre wichtig, um den Motor manuell noch ein wenig mit einer voreingestellten Geschwindikkeit bewegen zu können.
4. Wie verbinde ich, dass z.b. bei Signal der Motor dreht und dabei aber eine Led leuchtet? Quasi mehrere Aktionen miteinander verbinden.

Vielen Dank schonmal!

Edit: ganz Vergessen: Betrieben wird das ganze im RN-Control in verbindung mit RN-Stepp297

bbs00
24.09.2007, 08:32
Also Punkt 1 habe ich hinbekommen.