PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tiny13



rolfw20
22.03.2007, 22:05
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.


' 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

Ratber
22.03.2007, 22:27
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

krulli
22.03.2007, 23:55
Null Fehler nach Ausbesserung.... Vergleich mal mit Deinem Code, ist aber trotzdem Spagetti...

' 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

rolfw20
23.03.2007, 10:10
Danke für die schnelle Hilfe.

An die Stacks habe ich überhaupt nicht gedacht.
](*,)
Gruß
Rolf