Forum: Mikrocontroller und Digitale Elektronik AVR - Aufwecken eine Attiny45 aus Powersleep (Rising event)


von Stefan S. (shirano)


Angehängte Dateien:

Lesenswert?

Also erstmal ein paar worte zu mir und dem mini Bastelprojekt.

Ich bin knappe 30 Jahre alt und hab beruflich mit elektronik nix am Hut, 
ausser dass ich natürlich einen PC Arbeitplatz hab und dieser Art 
Elektronik seit ich 12 zu meinem Leben gehört. Hab ein kleines Ambilight 
Bastelprojekt erfolgreich gemeistert und seid dem will ich irgendwie 
mehr.

Versuche mich nun langsam zu steigern ;)

Was ich machen will: Einen Türsensor an einem Kühlschrank nachrüsten. 
Dafür soll ein Attiny zum einsatz kommen diverse LEDs und ein Allegra 
A1120 Hallsensor (Dauermagnet an der Kühlschranktür), Dar Hallsensor ist 
am Kühlschrank befestigt und der Magnet liegt ihm gegenüber. Der A1120 
ist ein unipolarer Sensor welcher bei anwesendem Magnetfeld GND 
durchschaltet.

Angedacht war folgende funktionsweise. Bei geschlossener Kühlschranktür 
soll alles im Powerdown modus laufen, sobald die Tür sich öffnet und der 
Hallsensor keinen Magneten mehr detektiert soll der Attiny wieder 
aufwachen und LEDs blinken lassen und einen Buzzer piepen lassen. 
Schliesst sich die Tür wieder dann soll alles wieder in den Power down 
gehn.

Dies funktioniert bis jetzt auch recht gut auf umgekehrem wege. (Alarm 
geben bei geschlossener Tür und Sleep modus beim offnen)

Was ich schon verstanden hab, dass es nur 4 trigger zum aufwecken an 
INT0 port gibt (LOW, RISING, CHANGE, FALLING) Der A1120 schaltet laut 
datasheet mit magnetfeld auf LOW und ohne auf HIGH. Da ja bei geöffneter 
Kühlschranktür kein Magnet vorhanden ist, sollte dann HIGH anliegen, es 
gibt aber kein HIGH trigger, also müsste es der RISING trigger sein (LOW 
auf HIGH) dies funktioniert aber nicht. selbst wenn ich dies über einen 
normalen Schalter versuche antstatt den Hallsensor zu benutzen. versuche 
ich es mit dem LOW trigger (also mit Magnet vorhanen) dann 
funktionierts.

Zusammengeschrieben ist alles im Arduino editor und programmiert wird 
alles mit einen umprogrammierten Teensy (Arduino kompatibles device) 
über Arduino. Ich hoffe man kann mir trotzdem weiterhelfen oder mich in 
die richtige Richtung verweisen. Den Code habe ich mit angehangen. Falls 
ich hier überhaupt an der richtigen Adresse bin (Mikrocontroller oder 
Arduino forum ich war mir da nicht so sicher)

Vielen dank schonmal vorab
Stefan

von Sebastian Heyn (Gast)


Lesenswert?

Wenn ich mich recht entsinne ist aufwecken aus dem powerdown nur mit 
einem Level (Low/High level) event zu bewerkstelligen

von Alex S. (thor368)


Lesenswert?

Tach Stefan,

dein Problem ist folgendes und recht einfach zu beheben: INT0 ist ein 
synchroner interrupt heißt er braucht die I/O clock um edge zu triggern. 
Ohne clock also im power down kann er nur level triggern. Im speziellen 
aber nur low level. Ist bei dem Typ so.

Die Lösung ist einen PCInt(pin change int) zu nehmen. Der kann asynchron 
auf edge triggern. Du musst nicht mal deine Schaltung umlöten, denn der 
tiny45 hat auf jedem Pin einen PCInt(auch auf INT0).

Thor

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
Noch kein Account? Hier anmelden.