Hallo zusammen, ich stecke gerade etwas fest. Ich habe eine Schaltung mit RFM12 und den ATmega8. Der µC versetzt den RFM12 in Sleep und geht selber schlafen (Power-Down). Nach ein paar Sekunden wacht der RFM12 auf, weckt den µC über INT0 der wiederrum Datet sendet, danach gehen beide wieder schalfen. Soweit, sogut. Es gibt noch ein Reed-Kontakt der an INT1 hängt und der ebenfalls den µC wecken soll. Damit soll er nur ein Bit setzten (Reed-Kontakt ausgelöst) und wieder schlafen gehen. Beim nächsten wecken vom RFM12 sendet er das gesetzte Bit und löscht es wieder. Dummerweise ist der Reed-Kontakt im Gut-Zustand geschlossen und auf Masse geschaltet. D.h. eigentlich soll der INT1 nur auslösen wenn der Pegel von 0 auf 1 geht. Nur laut Beschreibung der Sleep-Modi Power-Down, kann ich den µC nur über low-Pegel wecken. Da der Reed-kontakt aber im Gut-Zustand immer auf Low ist, hab ich ein Problem. Hab jemand eine Idee wie ich das lösen kann ohne in meinen fertigen Prototypen löten zu müssen ?
Peter F. schrieb: > Hab jemand eine Idee wie ich das lösen kann Einen ATmega88 nehmen. Der hat PCINTs an jedem Pin.
Rein in Software wird es wohl nix werden. Man braucht einen anderen AVR oder einen externen Inverter.
Peter F. schrieb: > D.h. eigentlich soll > der INT1 nur auslösen wenn der Pegel von 0 auf 1 geht. Nur laut > Beschreibung der Sleep-Modi Power-Down, kann ich den µC nur über > low-Pegel wecken. Der Patient wacht nicht auf, obwohl ich ihm noch mehr Narkosemittel verabreichert habe! Rein Softwaremässig nicht lösbar... das externe Signal zu invertieren dürfte jedoch eine ziemlich einfache Sache sein, benötigt ja kaum was. Aus Fehlern lernt man, beim nächsten mal erinnerst du dich daran und wirst daran denken! ;) Für dieses mal... shit happens x: Edit: Upps, da waren einige schneller D:
:
Bearbeitet durch User
Oder doch? Wenn der Schalter öffnet und wieder schließt, bevor der AVR durch das RFM12 aufgewacht ist, wird das entspechende Interrupt-Bit gesetzt. Das kann man echt per Interrupt auswerten oder auch nur das Bit abfragen. Wenn der Schalter öffnet und noch nicht wieder schließt, dann ist zumindest der Pin HIGH. Auch das kann man per Software auswerten. Geht also doch in Software, man muss nur ein wenig kreativ sein ;-)
Der Interrupt löst doch im Gut-zustand ständig aus, weil er ja auf Low-level gestellt sein muss.
Mal so eine blöde Frage. Wenn ich jetzt einen anderen Kontakt nehme der im Gut-zustand offen ist, wäre das Problem ohne großen Aufwand gelöst. Aber benutzt man nicht bei Tür - und Fensterüberwachung bei Alarmanlagen einen Reedkontakt der geschlossen ist sobald die Einrichtung geschlossen ist??? Zumindest ist das so bei den Teilen die ich fest verdrahtet hab. Wenn ich den Kontakt auf High lege und mit einem Pulldown auf Masse ziehe, fließt doch im Gut-zustand, welcher meist vorhanden ist, immer ein Strom auch wenn es nur ein sehr kleiner ist. Aber das ist doch genau das was man im Batteriebetrieb verhindern will.
Und noch was. Gibt es eine Möglichkeit den Controller nur zur wecken, wenn sich der Pegel ändert ? Sonst ist er ja immer wach sobald die Tür offen bleibt. Ich glaube das muss ich Hardwaremäßig lösen oder ?
Peter F. schrieb: > wäre das Problem ohne großen Aufwand gelöst Der geringste Aufwand wäre einfach den Atmega8 runterzulöten, zurück ins Museum bringen und stattdessen einen Atmega88 draufzupacken, das spart übrigens nicht nur Strom sondern auch Geld auf dieses fossile Museumsstück zu verzichten. Der Atmega88 kann laut Datenblatt vom PCINT aus allen Schlafmodi geweckt werden und die beiden INT0 und INT1 Pins liegen auf PCINT18 und PCINT19.
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.