Hallo Microfans, ich benötige Hilfe: Ich möchte mittels einer Fußtaste 4 Relais im Abstand von ca 50ms anziehen lassen, und beim loslassen der Fusstaste sollen diese Relais in umgekehrter Reihenfolge und in der gleichen Zeitverzögerung wieder abfallen. Im Prinzip klappt es, aber die Zeit spielt mir einen Streich. Wenn ich taste, oder loslasse dauert es immer einen Moment, bis die Zeitkette startet. Wie kann ich diesen Zeitfaktor umgehen?. Interrupts? Hier der Quellcode: 'Prozessor: ATMega 8-8 'Bascom-Version: 1.11.8.7 'Hardware: 'Fusstaster an PINB.0 '4 Relais an Port : C0,C1,C2,C3 'Poti an Port C5 '****************************************************** 'System-Einstellungen '====================================================== 'Definition für Mega 8 $regfile "m8def.dat" $crystal = 3686300 '====================================================== 'Konfigurationen Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Portd = Output Config Portb = Input Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Output Config Portc.5 = Input Portb = 255 '====================================================== 'Initialisierungen '====================================================== Fusstaste Alias Pinb.0 Relais1 Alias Portc.0 Relais2 Alias Portc.1 Relais3 Alias Portc.2 Relais4 Alias Portc.3 Portb = 255 Dim Zeit As Integer Dim Poti As Integer 'Zeitintervall Portc.0 = 1 '====================================================== 'Hauptprogramm-Schleife '====================================================== Do ' Abfrage der Tasten 'Analog Digital Wandler starten (Potiabfrage) Start Adc Poti = Getadc(5) If Poti <= 500 Then Zeit = 50 Elseif Poti > 500 Then Zeit = 100 End If Select Case Fusstaste Case 0 : Gosub Relais_ein Case 1 : Gosub Relais_aus End Select Loop '====================================================== ' Unterprogramme '====================================================== Relais_ein: Relais1 = 0 Waitms Zeit Relais2 = 1 Waitms Zeit Relais3 = 1 Waitms Zeit Relais4 = 1 Return Relais_aus: Relais4 = 0 Waitms Zeit Relais3 = 0 Waitms Zeit Relais2 = 0 Waitms Zeit Relais1 = 1 Return
Nimm den Capture-Eingang und warte auf eine fallende Flanke - diese löst dann einen Interrupt aus. So ist's zumindest beim PIC. >Wenn ich taste, oder loslasse dauert es immer einen Moment, bis die Zeitkette >startet. DAS ist irgendwie komisch. Was verstehst du denn unter einem Moment? Irgendwie riecht das danach, als ob der Microcontroller einen Reset macht. (BOR dann PUT bei POR). Poste bitte mal ein Layout wegen Relis + Microcontroller = muss man wissen wie.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.