www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bewegungsmelder + AVR - PowerDown Problem


Autor: Schlachter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich habe vor einen Bewegungsmelder mit einem AtMega8 zu verbinden und 
ein RFM12 Funkmodul zu integrieren. Bewegungsmelder ist von Conrad:
http://www.conrad.de/ce/de/product/172526/PIR-SMD-...

Soweit so gut: Platine gelötet, RFM12 funktioniert, Bewegungsmelder 
auch. Nur nun zum Problem:

Ich möchte das Modul gerne mit Batterien betreiben. Somit muss ich den 
AVR schalfen legen. Der Bewegungsmelder sendet einen Impuls (bei 
Bewegung) an den INT0 Eingang um ihn wieder aufzuwecken.. Doch genau das 
funktioniert irgendwie nicht. Wenn ich den PowerDown-Teil deaktiviere 
funkioniert alles wunderbar. Also: Die Erkennung von high und low läuft. 
Ich arbeite mit Bascom und hier der relevante Codeabschnitt:
$regfile = "m8def.dat"
$crystal = 8000000

$hwstack = 100                                              ' default use 32 for the hardware stack
$swstack = 100                                              'default use 10 for the SW stack
$framesize = 100

$baud = 19200
Baud = 19200

On Int0 Bewegung                                            'Interrupt-Routine für Interrupt0 festlegen

Config Portd.2 = Input                                      'PD2/INT0 
Portd.2 = 1       'PullUp von PD2/INT0 aktivieren
Config Int0 = Low Level       'Externe Interrupts bei Low Level feuern                     '(RISING oder FALLING beendet PowerDown nicht!)
Enable Int0       'Externen Interrupt0 einschalten
Enable Interrupts
  
Powerdown

Do

   !NOP

Loop

End

Bewegung:

   Rfdata(1) = 1 'Daten zum Senden

   Call Rf12_txdata(maxchar) 'Sendenfunktion

   Powerdown

Return
----------------------

Noch mal eine Frage: Wann genau wird ein INT-Interrupt ausgelöst? In 
meinem Fall bei einem Low - Level. Also wenn ein Low - Level anliegt, 
richtig?

Ich hoffe ihr wisst weiter!

Schlachter

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stell es mal um, dass INT0 bei einer fallenden Flanke getriggert wird. 
Ansonsten wiederholt sich der Interrupt die ganze Zeit...

Autor: Schlachter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort! Aallerdings habe ich folgendes gelesen:

RISING oder FALLING beendet PowerDown nicht!

Somit blieb nur "Low Level" übrig.. Ich werd wohl noch etwas 
experimentieren müssen :)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schlachter schrieb:
> Ich werd wohl noch etwas
> experimentieren müssen :)

Nicht experimentieren, sondern logisch denken:

Aufwachen geht nur mit Interrupt, also Schlafen innerhalb eines 
Interrupts geht schonmal garnicht!

Du machst in der Mainloop ständig nur den Sleep-Befehl.

Willst Du nicht schlafen, setzte den Sleepmode auf Idle oder garnicht.

Willst Du schlafen, setzte den Sleepmode auf Powerdown und erst danach 
enablest Du den Aufwachinterrupt.

Der Aufwachinterrupt setzt dann wieder auf Idle oder garnicht und 
disabled sich selbst.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.