Hallo Robert,
frohes neues Jahr noch.
Eigendlich nur einmal. Beim Programmstart ist Int0 deaktiv und es wird Pind.2 direkt abgefragt. Wenn kein Alarm anliegt, kann ich über Taster1 und 2 div. Einstellungen vornehmen.Du passt zweimal auf den alarm pin auf. Einmal durch interrupt, gleichzeitig aber auch in der ersten do-Schleife. Den Interrupt startest du erst bei Zeit > 1800, aber die Abfrage Alarm = 0 immer, also auch sofort.
Erst wenn 3 min um sind, wird Int0 aktiviert, um Pind.2 via Interrupt zu überwachen.
Bei Alarm wird dann sofort Schleife2 angesprungen und die Abfrage in Schleife1 ist hinfällig.
Aus diesem Grunde habe ich einen externen Pullup Widerstand eingebaut.WENN (dreimal wenn) du einen Strom-aussetzer gehabt hättest und der Controller läuft wieder bei Null weg, prüft er SOFORT den Pin und verläßt DO. d.h. er gibt dem Pin keine Chance, Highpegel einzunehmen.
Wie du dann geschaut hast, war der Pegel ja dann hoch, nur eben ein paar Zyklen zu spät. Wenn das ein längerer Draht ist, hat er ja Kapazität.
Damit soll gewährleistet werden, dass der Pin schon auf High liegt, bevor der Prozessor anfängt zu arbeiten.
Das wäre eine Möglichkeit.Auf jeden Fall solltest du ERST die Zeit checken, und dann erst Alarm = 0 abfragen, sonst hat's ja keinen Sinn mit dem enable-Delay.
Nach dem Powerdown wird im Alamfall ja wieder in Schleife1 weiter gemacht und die Variable Zeit müsste noch auf einem Wert > 1800 stehen. Wenn nicht, würde der Alarm ja erst nach 3 min gemeldet werden.
Wohl kaum. Die meisten "preiswerten" Alarmanlagen arbeiten mit primitiven Logikgattern. Da ich mehr Komfort wollte (Alarmmeldung via Handy e.t.c) war das der Grund, warum ich einen AVR verbaut habe.Frag in der Umgebung. Vielleicht sind ja noch 57 andere Alarmanlagen losgegangen
Lesezeichen