-
Tiny13
Hallo Leute,
mir ist ein Tiny13 in die Hände gefallen und wie ich nun mal bin habe ich versuch ein kleines Programm dafür zu schreiben.
Leider scheint Bascom nich damit zu arbeiten. Ich bekomme nur jede Menge Fehlermeldungen.
Code:
' einfache Zeitsteuerung mit ATTiny13
$regfile = "ATtiny13.DAT" 'ATTiny13-Deklarationen
$crystal = 1000000
Ddrb = &10001 'Bit 0 und 4 auf Ausgang alle anderen auf Eingang
Portb = & 01110 'alle eingänge mit Pullup versehen
Led Alias Portb.0
Dip2 Alias Pinb.1
Ein Alias Pinb.2
Dip1 Alias Pinb.3
Aus Alias Portb.4
Res Alias Pinb.5
Dim Z As Byte
Start1:
If Dip1 = 0 And Dip2 = 0 Then Z = 1 '1 Sekunde
'End If
If Dip1 = 1 And Dip2 = 0 Then Z = 2 '2 Sekunden
'End If
If Dip1 = 0 And Dip2 = 1 Then Z = 60 '1 Minute
'End If
If Dip1 = 1 And Dip2 = 1 Then Z = 120 '2 Minuten
'End If
Do
If Ein = 1 Then Goto Ablauf 'Warten auf Start
Loop
Ablauf:
Led = 1
Wait 500ms 'Led ein
Led = 0
Wait 500ms 'Led aus
Z = Z - 1
If Zeit = 0 Then Goto Ausgang 'prüfen ob Zeit abgelaufen
'End If
If Ein = 0 Then 'prüfen ob Start noch 1 ist
Led = 0 'wenn nicht dann Led aus
Goto Start1 'zurück zum Anfang
End If
Ausgang:
Aus = 1 'Ausgang auf 1
Led = 1 'Led einschalten
Do
If Ein = 0 Then 'prüfen ob Start noch 1 ist '
Aus = 0 'wenn nicht dann Led aus
Led = 0 'wenn nicht dann Led aus
Goto Start1 'zurück zum Anfang
End If
Loop
Meine Frage nun:
Kann man einen Tiny überhaupt in Bascom Programieren und wenn ja was mache ich falsch?
Gruß
Rolf
-
Aber sicher kann man das.
Der Tiny13 ist noch recht beliebt für Minischaltungen.
Zu den Fehlern.
ddrb-Befehle: Alle 8 Bit angeben und ein "B" für Binär dazu.(Siehe Befehlref.)
Waitbefehle: Siehe Befehlsref. ;)
"If Zeit = 0 Then Goto Ausgang"
Variable ist nicht definiert.
Out of Space:
Stacks nicht angegeben.
Siehe hier
https://www.roboternetz.de/phpBB2/viewtopic.php?t=28982
-
Null Fehler nach Ausbesserung.... Vergleich mal mit Deinem Code, ist aber trotzdem Spagetti...
Code:
' einfache Zeitsteuerung mit ATTiny13
$regfile = "ATtiny13.DAT" 'ATTiny13-Deklarationen
$crystal = 1200000
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 'default use 10 for the SW stack
$framesize = 40 'default use 40 for the frame space
Ddrb = &B00010001 'Bit 0 und 4 auf Ausgang alle anderen auf Eingang
Portb = &B0001110 'alle eingänge mit Pullup versehen
Led Alias Portb.0
Dip2 Alias Pinb.1
Ein Alias Pinb.2
Dip1 Alias Pinb.3
Aus Alias Portb.4
Res Alias Pinb.5
Dim Z As Byte
Start1:
If Dip1 = 0 And Dip2 = 0 Then Z = 1 '1 Sekunde
'End If
If Dip1 = 1 And Dip2 = 0 Then Z = 2 '2 Sekunden
'End If
If Dip1 = 0 And Dip2 = 1 Then Z = 60 '1 Minute
'End If
If Dip1 = 1 And Dip2 = 1 Then Z = 120 '2 Minuten
'End If
Do
If Ein = 1 Then Goto Ablauf 'Warten auf Start
Loop
Ablauf:
Led = 1
Waitms 500 'Led ein
Led = 0
Waitms 500 'Led aus
Z = Z - 1
If Z = 0 Then Goto Ausgang 'prüfen ob Zeit abgelaufen
'End If
If Ein = 0 Then 'prüfen ob Start noch 1 ist
Led = 0 'wenn nicht dann Led aus
Goto Start1 'zurück zum Anfang
End If
Ausgang:
Aus = 1 'Ausgang auf 1
Led = 1 'Led einschalten
Do
If Ein = 0 Then 'prüfen ob Start noch 1 ist '
Aus = 0 'wenn nicht dann Led aus
Led = 0 'wenn nicht dann Led aus
Goto Start1 'zurück zum Anfang
End If
Loop
-
Danke für die schnelle Hilfe.
An die Stacks habe ich überhaupt nicht gedacht.
](*,)
Gruß
Rolf