Hallo zusammen,
noch mal Dank an Searcher für die Hinweise!
Ich habe das > und < eingefügt und siehe da: Jetzt funktioniert es endlich wie es soll: Der Schritti dreht - mit gedrosseltem Tempo los, kann schneller durch den DE gesteuert werden und bleibt nun auhc bei der jeweiligen Max. und Min.- Geschwindigkeit stehen. Super!
Etwas Feintuning an den Werten für den Timer und dem Wert asus dem Drehencoder, und jetzt passt alles.
Ich werde nun noch das Enable für gesteuerten Stop und das Dir für eine Hin und Her-Bewegung implementieren. Wahrscheinlich brauche ich dann noch mal Hilfe, aber ich schraube erst mal ein wenig herum, will ja auch was lernen...
Aktueller Code:
Code:
$regfile = "attiny2313.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
$baud = 9600
' BASCOM-Programm
' Stefan Hoffmann 2009
' Drehimpulsgeber/Encoder mit ENCODER-Befehl
'
' In: Drehimpulsgeber an d.0 und d.1 sowie Taster
' Testprogramm für A3967 Platine mit Dir Step und Enable
$regfile = "attiny2313.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000 'Interner Osz. 8 MHz
$baud = 9600
Config Timer0 = Timer , Prescale = 1024 'Timer1 Deklarationen für den Takt des Steppers
Enable Timer0
Dim Timer0_reload As Word
Portd.4 = 1 'Pullup Widerstand ein für Enable - ****Enable =0 bedeutet Motor On!!!! ****
Enable Interrupts
On Timer0 Isr_timer0 'Deklaration der Timerroutine
' Inputs: Drehimpulsgeber an d.0 und d.1 sowie Taster an d.3
'-----Deklarationen fuer Drehimpulsgeber:
Config Pind.0 = Input
Encoder_a Alias Pind.0 'Encoder Signal B an Pin 2
Config Pind.1 = Input
Encoder_b Alias Pind.1 'Encoder Signal A an Pin 3
Config Pind.3 = Input
Taster1 Alias Pind.3 'Taster
Pind.0 = 1 'Pullups für den Drehencoder
Pind.1 = 1
Pind.3 = 1
'LED-Outputs stellvertretend für Step, Dir, Enable
' In der endgültigen Hardware liegen: Step/Takt auf PD.2 / Taster auf PD.3 / Enable auf PD4 / Richtung auf PD5 /
Config Portd.2 = Output
Portd.2 = 0 'das ist Step/Takt - Pin 6 - alles mit Pulldown + LEd_gelb
Config Portd.5 = Output
Portd.5 = 0 ' Pin 9 - Dir - Richtungssignal
Config Portd.4 = Output
Portd.4 = 0 ' Pin 16 - Enable - generelles Ein-Ausschaltsignal
Motor_step Alias Portd.2
Led_gruen Alias Portd.5
Chip_enable Alias Portd.4
Dim Wert As Word
Wert = 2 'willkürlich gewählter Startwert
Dim Zustand As Byte
'***********Hauptschleife:**********
Do
Chip_enable = 0 'Enable ein
Led_gruen = 1 'Dir
Zustand = Encoder(pind.0 , Pind.1 , Linksroutine , Rechtsroutine , 0)
Loop
End
Isr_timer0:
Timer0_reload = 4 'Vorgabe für 38 / sec
Timer0 = Timer0_reload + Wert
Toggle Motor_step '= Stepper_takt
Return
Linksroutine:
Decr Wert
If Wert <= 1 Then
Wert = 1
End If
Return
Rechtsroutine:
Incr Wert
If Wert >= 230 Then
Wert = 230
End If
Return
Lesezeichen