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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.