AVR Touchsensor mit Powerdown

Gast #3071946
Lesenswert?

Hey Forum!

ich baue einen mobilen Aufbau: Attiny13 an einem GreenCap, der über eine 
kleine Solarzelle geladen wird. Der Attiny13 steuert eine LED und etwas 
Beschaltung, damit das Ganze bis 0,9V runter funktioniert.

Bisher habe ich Versionen gebaut, die bei Dunkelheit einfach angehen und 
Leuchten, bis die Spannung zu niedrig wird. Jetzt möchte ich, dass die 
LED leuchtet, sobald jmd eine Metallfläche berührt oder in die Nähe 
kommt.
Ich habe nun eine Frage bezüglich des Codes.

Dieser einfache Code in Bascom funktioniert super:
1
'DarlingtonStufe (2fach) an Pinb.3!
2

3

4
$regfile = "attiny13.dat"
5
$crystal = 1200000
6
$hwstack = 32                                               ' default use 32 for the hardware stack
7
$swstack = 10                                               'default use 10 for the SW stack
8
$framesize = 10
9
Declare Sub Blitz
10
Config Adc = Single , Prescaler = Auto , Reference = Avcc
11
Config Portb.0 = Output
12
Config Portb.3 = Input
13
'Pinb.3 = 1                                                   ' Achtung kein Pull-up!
14

15
Dim Messergebnis As Word
16

17
Do
18
Sbi Adcsra , 7
19
Messergebnis = Getadc(3)
20
cbi adcsra,7
21
If Messergebnis > 500 Then                                  'Achtung >!
22
Gosub Blitz
23
End If
24
Loop
25

26

27
Blitz:
28

29
Portb.0 = 1
30
Waitms 100
31

32

33
Return
34

35

36
End

Um Strom zu sparen,möchte ich jetzt gerne die Main-Loop nach dem Messen 
des Wertes am Sensor-Pin schlafen legen. Der Watchdog soll dann alle 2 
Sekunden wecken und es wird erneut gemessen und wieder in Power-down 
gegangen.
Habe es also mal so versucht:

[code:]

'[...]

Config Watchdog = 2048

Enable Interrupts
Stop Ac
Start Adc
Start Watchdog

Do

sbi adcsra,7
Messergebnis = Getadc(3)
cbi adcsra,7
If Messergebnis > 500 Then
Gosub Blitz
End If
Powerdown
Loop


Blitz:
Stop Watchdog

Portb.0 = 1
Waitms 100
sbi adcsra,7
Messergebnis = Getadc(3)
cbi adcsra,7
If Messergebnis > 500 Then
Goto Blitz
End If
Start Watchdog
Powerdown

Return

End
[/code]

Leider funktioniert dieser Code aber nur in einer geerdeten Schaltung 
(Entwicklungsboard-Umgebung) und nicht in der mobilen ungeerdeten 
Schaltung.
Weiß jemand von den Profis Rat, wie man so etwas doch realisieren kann?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren