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?