TPS-4 mit COM-Input       

Elektronik-Labor  Projekte  AVR   Sparrow                 






Dank der neuen Möglichkeit, dem Sparrow serielle Daten zu senden, vereinfacht sich die TPS-Programmierung ganz erheblich. Die Eingabe ist nun wesentlich schneller und bequemer und passt genau zum Sparrow. Ich verwende die Hex-Tatstatur mit 300 Baud auf  der Seite http://tiny.systems/article/OnlineCompilerSoundUART.html



Alternativ ganz neu: http://tiny.systems/article/cheepitKeyboard.html

Durch die effektivere Eingabe war sogar noch etwas Platz im Tiny13, um einige weitere Kommandos einzubauen. Tatsächlich wurde hin und her probiert, welches die wichtigsten Befehle sind. Neu hinzugekommen sind der AD-Wandler und die PWM-Ausgabe, die Portausgabe über A, sowie das Inkrementieren und Dekrementieren.


1,       Portausgabe an Port B,  1=B1, 2=B3, 4 =B4
2,      Wartezeit 1ms bis 60 s
3,     relativer Sprung zurück
4,     A
5 2,  C=A
Neu: 5 4, Port = A
Neu: 5 9, PWM = A, verwendet B0
  gestrichen: 8,     AdrHi
  gestrichen: 9,     AdrLo, absoluter Sprung
Neu: 6 9, A = ADC(2)
Neu: 7 1, A = A + 1
Neu: 7 2, A = A - 1
A,     C-mal  
C 4,  Skip if S1=1
C 5,  Skip if S2 =1

Programmbeispiele:

Gegentaktblinker: 11 28 12 28 34
PWM-Ausgabe, Rampe: 71 59 25 33
AD->DA, 20 ms: 69 59 25 33
S1, S2, RS-Schalter: C5 12 C4 11 34
Zeitschalter S2, 1 min: C5 93 32 13 2F 10 36
Port = A: 71 54 27 33



Download: Sparrow_TPS4.zip
Direkt laden: http://tiny.systems/categorie/cheepit/TPS4.html



'Sparrow_TPS4.bas
'Eingabe über RS232 mit 300 Baud


$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 4
$framesize = 4

Led1 Alias Portb.1
Led2 Alias Portb.3
S1 Alias Pinb.0
S2 Alias Pinb.2
Config Portb = &B000011010

Dim D As Byte
Dim T As Byte
Dim B As Byte
Dim C As Byte
Dim A As Byte
Dim P As Byte

Dim Addr As Byte
Dim Eebyte As Byte
Dim Dat As Byte
Dim Kom As Byte
Dim Adrhi As Byte
Dim Adrlo As Byte
Dim Adrret As Byte
Dim Dd As Word
Dim Delaytime As Word


Dta:
Data 1% , 2% , 5% , 10% , 20% , 50% , 100% , 200% , 500% , 1000% , 2000% , 5000% , 10000% , 20000% , 30000% , 60000%



Open "comb.2:300,8,n,1" For Input As #1
'Open "comb.1:300,8,n,1,INVERTED" For Output As #2
Config Adc = Single , Prescaler = Auto

If S1 = 0 Then
A = 0
Do
Led2 = 1
Get #1 , D
D = D * 16
Led2 = 0
Waitms 30
Get #1 , C
C = C And 15
D = D + C
Writeeeprom D , A
' Put #2 , D
A = A + 1
Waitms 30
Loop Until D = 255
End If

Addr = 0
Do
Readeeprom Eebyte , Addr
Addr = Addr + 1
Dat = Eebyte And 15
Kom = Eebyte / 16
If Kom = 1 Then '1: Direkte Portausgabe
Led1 = Dat.0
Led2 = Dat.1
Portb.4 = Dat.2
End If
If Kom = 2 Then
Restore Dta
Delaytime = Lookup(dat , Dta)
Waitms Delaytime '2: Wartezeit
End If
If Kom = 3 Then '3: Sprung - relativ
Addr = Addr - 1
Addr = Addr - Dat
End If
If Kom = 4 Then 'A=
A = Dat
End If
If Kom = 5 Then
If Dat = 2 Then C = A 'C=A
If Dat = 4 Then 'Port = A
Led1 = A.0
Led2 = A.1
' Portb.4 = A.2
End If
If Dat = 9 Then
Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Up
Pwm0b = A * 16 'PWM=A
End If
End If
If Kom = 6 Then '6 9 , A = Ain1 (=B4)
Ddrb.4 = 0
Dd = Getadc(2)
Shift Dd , Right , 6
A = Dd
End If
If Kom = 7 Then
If Dat = 1 Then A = A + 1 'A=A+1
If Dat = 2 Then A = A -1 'A=A-1
End If
' If Kom = 8 Then
' Adrhi = Dat 'Oberes Nibble der Adresse
' End If
' If Kom = 9 Then
' Addr = Adrhi * 16 'Springe absolut 0...255
' Addr = Addr + Dat
' End If
If Kom = 10 Then
C = C - 1
C = C And 15
If C > 0 Then 'C-mal
Addr = Adrhi * 16 'Springe absolut 0...255
Addr = Addr + Dat
End If
End If
If Kom = 12 Then 'Skip if S1=1
If Dat = 4 Then
If S1 = 1 Then Addr = Addr + 1
End If
If Dat = 5 Then 'Skip if S2=1
If S2 = 1 Then Addr = Addr + 1
End If
End If
Loop





Elektronik-Labor  Projekte  AVR   Sparrow