Diese kleine Sparrow-Sirene kann
z.B. ein kleines Spielzeugauto "aufwerten." Der µP befindet sich im
Powerdown-Mode. Hier nimmt er ca. 5µA (!) auf.
Aktiviert man den Brownout- Detector so kommt man in den Bereich um
1µA. Das ist weniger als die Batterieselbstentladung. Eine Knopfzelle
CR2032 rückt somit ins Blickfeld der Stromversorgung. Ein Druck auf S2
löst einen, sog. Pin- Change- Interrupt aus und startet die Ton- und
auch die Blinksequenz. Ist diese vorbei, fällt er wieder in o.g. Mode.
Alle nicht benutzten Komponenten werden abgeschaltet. Ein Schalter
erübrigt sich also. Man kann den Wert der Durchläufe in der
For-Next-Schleife individuell anpassen.
'******************************************************************************'
' POLIZEI- Sirene - "Der Sparrow tönt und blinkt"--------------
'******************************************************************************'
' Taster2 / S2 an PB2 ( PCINT0) löst einen Pin- Change- Interrupt aus.
' Der µP wacht auf. Der Alarm (Ton) beginnt und LED1 /LED2 blinken abwechselnd.
' Nach 6 Durchläufen fällt der µP in den Powerdown- Mode .
' (Stromaufnahme bei 3V nur 1µA)!
' Aus diesem Zustand kann ihn nur ein Interrupt PCINT0 wecken
' An PB0 kann OPTIONAL eine PIEZO- Buzzer angeschlossen werden.
' Ein Ausschalter ist nicht erforderlich!
'******************************************************************************'
$regfile = "ATtiny13.dat" 'µP - Typ
$crystal = 1200000 'Taktfrequenz
$hwstack = 16
$swstack = 8
$framesize = 8
Config Portb.1 = Output 'Led1
Config Portb.3 = Output 'Led2
Config Portb.0 = Output 'Piezo
Config Portb.2 = Input 'Taste S2
Config Portb.4 = Output 'festes Potential
Stop Adc 'Stop AD- Wandler
Stop Ac 'Stop Analog.Komp.
Stop Watchdog
Dim H As Byte ' Zählvariable
'Timer für Tonerzeugung konfiguriert.
Config Timer0 = Timer , Compare A = Toggle , Prescale = 8 , Clear Timer = 1
'Pin- Change - Interrupt aktivieren
On Pcint0 Pcint0_isr
Enable Pcint0 'enable PCINT2
Pcmsk.2 = 1 'Taster an PB2
Main:
Enable Interrupts 'Interrupt freigeben
Do
Powerdown 'Stromsparen
Loop
Pcint0_isr: 'Interuppt- Routine
For H = 0 To 5
Ocr0a = 161 'ca 440 Hz
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 50
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 200
Ocr0a = 122 'ca 585 Hz
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 50
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 200
Next H
Return
Goto Main
End