' 1404-Blitz-beta (T13(A) und TA7642 an 1,5V; beta, nicht real getestet)
'
' Die Hardware ist weitestgehend aus 2013 bekannt.
' Der TA7642 wird quasi konstant mit 200uA gespeist.
' Ein 5cm <30cm-Stab verbessert die Rundempfangseigenschaften auf 360°.
' Der BC547 wird direkt vom TA möglichst weit in Sättigung gesteuert.
'
' Die Anzeige erfolgt durch Piezo und 3 Led's.
' Die Led's werden mit Spannungsverdoppler betrieben.
'-------------------------------------------------------------------------------
' /T13a|
' Res | | +Vcc
' Ad3/B3 | | B2/sck/Ad1
' Ad2/B4 | | B1/miso
' Gnd | | B0/mosi
' ----
'-------------------------------------------------------------------------------
$regfile = "attiny13.dat"
'$regfile = "attiny13a.dat"
'$prog &HFF , &H69 , &HFF , &H00 '4,8MHz/8 = 600kHz
'$prog &HFF , &H6A , &HFF , &H00 '9,6MHz/8 =1200kHz
'$prog &HFF , &H79 , &HFF , &H00 '4,8MHz/1
'$prog &HFF , &H7A , &HFF , &H00 '9,6MHz/1
$crystal = 600000
$hwstack = 20 '40
$swstack = 8 '16
$framesize = 16 '32
On Int0 I_impuls Nosave
Enable Int0 : Config Int0 = Change : Enable Interrupts
Ddrb = &B011110
B0 Alias Pinb.0 'Int0
B1 Alias Portb.1 : B2 Alias Portb.2 : B3 Alias Portb.3 : B4 Alias Portb.4
Dim Impulsdauer As Word , Pausendauer As Word
Dim Zeit As Word , Zeit2 As Word
Dim Impuls As Bit , Pause0 As Bit
Dim Piezo As Bit , Blitz As Bit , Stoer As Bit , Nebel As Bit 'Flags
'-------------------------------------------------
Do
If Impulsdauer > 0 Then
If Impulsdauer < 30 Then 'zu kurz
Stoer = 1
Else
If Impulsdauer < 100 Then 'richtig
Impuls = 1
Else 'zu lang
Nebel = 1
End If
End If
Impulsdauer = 0
Zeit = 0
End If
If Pausendauer > 0 Then
If Pausendauer < 30 Then 'zu kurz
Stoer = 1
Else
If Pausendauer < 100 Then 'richtig
Pause0 = 1
End If
End If
Pausendauer = 0
End If
If Pause0 = 1 And Impuls = 1 Then 'richtig
Blitz = 1
Zeit2 = 0
Pause0 = 0
Impuls = 0
End If
Incr Zeit '1s
If Zeit = 7000 Then
Piezo = 0
Stoer = 0
Nebel = 0
Incr Zeit2
Zeit = 0
End If
If Zeit2 = 900 Then '900s
Blitz = 0
Zeit2 = 0
End If
If Stoer = 1 Then Toggle B1 Else B1 = 0
If Nebel = 1 Then Toggle B2 Else B2 = 0
If Piezo = 1 Then Toggle B3 Else B3 = 0
If Blitz = 1 Then Toggle B4 Else B4 = 0
Loop
'-------------------------------------------------------------------------------
I_impuls:
Disable Interrupts
While B0 = 1 : Incr Impulsdauer : Wend
While B0 = 0 : Incr Pausendauer : Waitms 1 : Wend
Enable Interrupts
Return
'Ende