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.
Darüber habe ich nichts gefunden.Code:If W1 =< 1 Or W1 => 100 AND Timer1 = 1 Then Portc.3 = 1
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







Zitieren

Lesezeichen