PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erstes Programm Atmega 8 und Zeitüberlauf Und error LED



Lordcyber
24.06.2007, 21:03
Hallo,
so fragen und Plane habe ich ja schon genug gestellt jetzt geht es ans eingemachte.
Also meine Feuertaufe wie man so schön sagt.

Habe als Grundlage ein Snugboard von Andree-HB mit Atmega 8

Geschaltet werden soll eine Förderpumpe welche 12V braucht.
Der Schalter ist in dem Fall ein Schwimmschalter.
Das ganze soll meine jetzige Schwellwertschaltung ablösen.

Also Funktion.
Sobald der Schwimmschalter anspringt also Wasserstand niedrig soll die Pumpe anspringen.
Sollte die Pumpe aber länger als 5 Sec laufen soll er auf Error schallten bis ich die Schaltung Resete. Also da ganze neu Starte per Resettaster.
Gut das könnte man auch per Taster lösen.
Mal sehen ist aber auch nicht das Problem.

Errorschalltung sollte ein Buzzer und LED sein.
LED an und Buzzer so alle 5 min 1 Sec anspringen.
Man ist ja nicht immer da.
Und die Katzen würden beim Dauerpiepen abdrehen.

Könnt Ihr mir sagen wie ich das mache das er wenn die Förderpumpe 5sec läuft in Sub geht.
Könnt ja auch mal sehen ob der Rest überhaupt stimmt.
Danke

Bisheriges Program:



'****Pegelregelung / Nachfüllautomatik****
'* (c) 2007 Michael Lavalle *
'* *
'*****************************************

'Fühler Pegel Filter an pind.2

'Förderpumpe Salzwasser an portd.5
'FERROR LED an portd.6
'ERROR Buzzer an portd.8


$regfile = "m8def.dat" 'definieren des verwendeten Chips

$crystal = 16000000 'definieren des verwendeten externen Quarz (8MHz)

Dim A As Byte 'dimensionieren der verwendeten Variablen
Dim B As Byte

Ddrd = &B11100000 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
Portd = &B00000000 'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)


Main: 'Hauptprogramm
Do
'Anfang des Schwimmerschalter
If Pind.2 = 1 Then 'Wenn an Pin 2 von Port D ein high level anliegt..

Portd.5 = 1 '...setze Pin 5 von Port D auf High, Pumpe läuft

Else Portd.5 = 0 '...setze Pin 5 von Port D auf low, Pumpe aus
End If 'Ende der Bedingung



Loop 'zum Anfang der Schleife

Error: 'Untermenü "Error ausgabe"

Portd.6 = 1 'Error LED leuchtet
Portd.7 = 1 'setzte den Pin 7 von Port D auf high
Wait 1 '1 Sec Buzzer an
Portd.7 = 0 'setzt den Pin 7 von Port D auf low
Wait 300 ' Warte 5 Min
Portd.7 = 1 'setzte den Pin 7 von Port D auf high
Wait 1 '1 Sec Buzzer an
Portd.7 = 0 'setzt den Pin 7 von Port D auf low
Loop
Return 'zurück zum Hauptmenü


'zurück zum Hauptmenü

Lordcyber
24.06.2007, 21:45
Hier der überarbeitet Code.
Aber irfgendwo ist immer noch ein fehler drin.
Nch meiner Logik sollte das doch gehen oder??


'****Pegelregelung / Nachfüllautomatik****
'* (c) 2007 Michael Lavalle *
'* *
'*****************************************

'Fühler Pegel Filter an pind.2

'Förderpumpe Salzwasser an portd.5
'FERROR LED an portd.6
'ERROR Buzzer an portd.8


$regfile = "m8def.dat" 'definieren des verwendeten Chips

$crystal = 8000000 'definieren des verwendeten externen Quarz (8MHz)

Dim T As Word

Ddrd = &B11100000 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
Portd = &B00000000 'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)


Main: 'Hauptprogramm
Do
'Anfang des Schwimmerschalter
If Pind.2 = 1 Then 'Wenn an Pin 2 von Port D ein high level anliegt..

Portd.5 = 1 '...setze Pin 5 von Port D auf High, Pumpe läuft
T = T + 1 'Zeit wo die Pumpe an ist
Else
Portd.5 = 0 '...setze Pin 5 von Port D auf low, Pumpe aus
T = 0 'Zeit reset
End If 'Ende der Bedingung

If T > 5 Then
Gosub Error

End If 'Ende der Bedingung

Loop 'zum Anfang der Schleife
End 'end program

Error: 'Untermenü "Error"
Do
Portd.6 = 1 'Error LED leuchtet
Portd.5 = 0 '...setze Pin 5 von Port D auf low, Pumpe aus 'setzt den Pin 7 von Port D auf low
Loop