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-MODUL-3-5-V80-UA
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:
1 | $regfile = "m8def.dat"
|
2 | $crystal = 8000000
|
3 |
|
4 | $hwstack = 100 ' default use 32 for the hardware stack
|
5 | $swstack = 100 'default use 10 for the SW stack
|
6 | $framesize = 100
|
7 |
|
8 | $baud = 19200
|
9 | Baud = 19200
|
10 |
|
11 | On Int0 Bewegung 'Interrupt-Routine für Interrupt0 festlegen
|
12 |
|
13 | Config Portd.2 = Input 'PD2/INT0
|
14 | Portd.2 = 1 'PullUp von PD2/INT0 aktivieren
|
15 | Config Int0 = Low Level 'Externe Interrupts bei Low Level feuern '(RISING oder FALLING beendet PowerDown nicht!)
|
16 | Enable Int0 'Externen Interrupt0 einschalten
|
17 | Enable Interrupts
|
18 |
|
19 | Powerdown
|
20 |
|
21 | Do
|
22 |
|
23 | !NOP
|
24 |
|
25 | Loop
|
26 |
|
27 | End
|
28 |
|
29 | Bewegung:
|
30 |
|
31 | Rfdata(1) = 1 'Daten zum Senden
|
32 |
|
33 | Call Rf12_txdata(maxchar) 'Sendenfunktion
|
34 |
|
35 | Powerdown
|
36 |
|
37 | 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