Also erst mal muss ich einen ganz großen Danke aussprechen, das du dir die Zeit nimmst für mich.
Dann zu dem Takt. Ich weis auch nicht, wo er aktuell her kommt, ich denke durch die Schleife, die immer wieder abgearbeitet wird. Aktuell dreht sich der Motor mit ca. 30-40Hz.
Zum testen für die Richtung und die Stufen, war das ok, aber das muss noch irgendwie weg.
Mehr Probleme habe ich mit den Timern und die Einbindung in die Schaltung.
Gehen wir erst mal von einem Motor mit 2 Richtungen und 2 Geschwindigkeiten aus.
Das mit der Richtung läuft ja schon ganz gut. Nun kommt aber die Geschwindigkeit.
Wie kann ich:
A. Sagen, das der Timer seine Geschwindigkeit/Takt ändern soll?
oder
B. einen bzw dann 2 Timer in die Schaltung mit z.B. einer AND Anweisung einbinden.
Code:
If W1 =< 1 Or W1 => 100 AND Timer1 = 1 Then
Portc.3 = 1
Darüber habe ich nichts gefunden.
Aus der SPS Programierung kenne ich noch die Merker. Damit konnte man schön solche zusammenhänge realisieren.
Zur Struktur. Sorry, ich Kopiere/Schiebe/Lösche/Klammer,.. so viel rum. Da fällt das echt schwer. Aber ich werde mir mühe geben, das ordentlicher zu halten.
Nachtrag. Ich glaube ich habe da was gefunden. Das gucke ich mir morgen mal in Ruhe an.
Code:
$regfile = "m8def.dat"
$framesize = 24
$swstack = 32
$hwstack = 32
$crystal = 1000000
Config Pinb.1 = Output
Dim Timer1reload As Word
Timer1reload = 1
Config Timer1 = Timer , Prescale = 64
Timer1 = Timer1reload
Enable Timer1
On Timer1 Timer1_isr
Enable Interrupts
'TimerRelaod Werte mit "AVR Timer.exe" berechnet
Const Akku_leer = 63193 ****** ca. 0,3 Sekunden
Const Akku_halb_voll = 60849 'ca. 0,6 Sekunden
Const Akku_voll = 49911 ****** ca. 1 Sek
Dim Adc_wert As Word
Do
ADC_wert = Getadc(3) ****** Beispiel
Select Case ADC_wert
Case 800 to 1024
Timer1reload = Akku_voll
Case 700 to 799
Timer1reload = Akku_halb_voll
Case 0 to 699
Timer1reload = Akku_leer
End select
Loop
End
Timer1_isr:
Timer1 = Timer1reload
Toggle Pinb.1 ****** PIN anpassen
Return
Lesezeichen