PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pin-Zustand erkennen und schalten bei dauernd pin=1



mat-sche
20.02.2010, 14:23
Sooooo,
(und Hallo)
genug und schon wieder allzulang vielleicht über einer einfachen Sache gesessen und keine Lösung gefunden!

Mein Problem:
an einem Pin hängt eine Led, die zyklisch an und aus geht. Das einschalten der LED erkenne ich über den Port Change Interrupt. Wenn jetzt die LED aufhört zu blinken und dauernd an ist, soll eine Aktion ausgelöst werden.
Irgend wie habsch nen Brett vorm Kopf, finde irgend wie keinen Lösungsansatz...

Wer kann mir helfen?

Grüße MAT

Rofo88
20.02.2010, 14:38
Nimm einen entsprechenden Timer und setzt ihn in der PortChange Interrupt auf 0. Wenn der Timer dann überläuft wurde er wohl lange nicht zurückgesetzt und es blinkt nichts mehr

mat-sche
20.02.2010, 15:24
Hi Rofo,

Das ist eine gute Idee! Gibt es noch möglichkeiten ohne Timer?

PicNick
20.02.2010, 16:33
Na, du hast doch sicher irgendeine DO...LOOP Haupschleife. Wenn du da eine Zähler hochzählst, ist das genau genug. Ansonsten dir gleiche Logik a la @rofo88

mat-sche
20.02.2010, 17:44
An dem Hochzählen klemmt es eben halt. Habe diverse Möglichkeiten durchgespielt, komme aber jedoch nicht zum Erfolg, irgendwie hab ich nen Brett vorm Kopf. Hast Du ein Sample wie ich das mit dem Hochzählen lösen kann?

Rofo88
20.02.2010, 17:55
in deiner Hauptschleife



i=i+1
if i> 10000 then "mache was"


und in deinem Interrupt

i=0

mat-sche
20.02.2010, 18:52
ok, diese Form kann ich leider nicht nehmen. Ich weiß eben nicht wann die LED aufhört zu blinken (Akkuladeschaltung).
Aber ich probiere gerade was anderes aus, vielleicht geht das:


If Laden = 1 Then
Laden1 = Laden1 + 1
Reset Laden
Print "laden " ; Laden
Print "laden1 " ; Laden1

End If

If Laden1 > 1 And Pina.1 = 1 Then
Portd.5 = 0
Batladen = 0
Laden1 = 0
Print "Batladen " ; Batladen
Print "laden1 zurückgesetzt"
End If

'-----------------------
Akku_isr:
Set Laden
If Laden1 = 100 Then Laden1 = 0
Print "PCINT angesprungen"

Return

mat-sche
23.02.2010, 08:27
Moin,

Problem hat sich erledigt, ich habe einen bestehenden Timer verwendet. MAT