Hallo HeXPlore!
Vielen Dank für Deine Hinweise! Ich habe mal eine Else eingefügt und den Timer Takt mal auf sichtbar korrigiert. das takkert jetzt mit 1Hz und die Led's gehen an und aus wie sie sollen. Also dieser Teil funktioniert jetzt schonmal. Super!
Der Gesamte Code sieht jetzt so aus:
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
'-----Deklarationen fuer Drehimpulsgeber:
' Testprogramm für A3967 Platine mit Dir Step und Enable
$regfile = "attiny2313.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000 'Quarzfrequenz
$baud = 9600
Config Timer1 = Timer , Prescale = 256
Enable Timer1
Timsk.toie1 = 1
Dim Timer1_reload As Word
Portd.4 = 1 ' Pullup Widerstand ein für Enable - ****Enable =0 bedeutet Motor On!!!! ****
Enable Interrupts
' 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
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 Pin 6 - alles mit Pulldown - steht für Step/Takt
Config Portd.5 = Output
Portd.5 = 0 ' Pin 9 - der hier steht für Dir
Config Portb.4 = Output
Portb.4 = 0 ' Pin 16 - diese Led steht für Enable
Led_gelb Alias Portd.2
Led_gruen Alias Portd.5
Led_rot Alias Portb.4
On Timer1 Isr_timer1 'Deklaration der Timerroutine
Dim Wert As Word
Wert = 100 'willkürlich gewählter Startwert
Dim Zustand As Byte
'***********Hauptschleife:**********
Do
Zustand = Encoder(pind.0 , Pind.1 , Linksroutine , Rechtsroutine , 0)
If Wert > 100 Then
Led_rot = 1
Else
Led_rot = 0
End If
If Wert < 100 Then
Led_gruen = 1
Else
Led_gruen = 0
End If
Loop
End
Isr_timer1:
Timer1_reload = 34286 'Vorgabe für 400 / sec
Timer1 = Timer1_reload
Toggle Led_gelb '= Stepper_takt
Return
Linksroutine:
Decr Wert
Return
Rechtsroutine:
Incr Wert
Return
Wie könnte ich nun weiter kommen mit der "Verheiratung" der Funktionen?
Vielen Dank wieder für alle Hinweise!
Lesezeichen