Hallo Forengemeinde,
da ich mir rechtzeitig zum Uefa-Cup Spiel vom FC Bayern gegen Zenit ein kleines Schild gebastelt habe und das mit LEDs verziert habe,
aber mit dem Microcontrollerprogramm in Basic noch so meine Probleme habe, wollte ich hier mal fragen.
Es sollen verschiedene Lauflichter ablaufen, mit zwei Schaltern steuerbar.
Leider habe ich das ganze aber einmal auf dem Steckbrett aufgebaut und es funktionierte nicht so wie es soll.
Liegt es daran, dass ich keine Schalter in dem Probeaufbau verwendet habe? Wollte einfach mal schauen ob überhaupt das normale Lauflicht geht.
Das geht aber nur ohne diesen Timer-Zusatz.
Ist vielleicht der Timer falsch eingesetzt oder ein Fehler im Code? Bascom zeigt aber an "No errors found"
Muss man beide Timer verwenden und an beide die Schalter anschließen? Kann man die Schalter nicht an beliebige Ports anschließen?
Oder benötige ich Pull-Up Widerstände o.Ä. (Kenn mich damit aber nicht aus)
Code:
ZitatAlles anzeigen$regfile = "2313def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
Config Portb = Output
Config Pind.0 = Input
Config Pind.1 = Input
Config Timer0 = Timer , Prescale = 8
On Ovf0 Unterprogramm_isr
Enable Timer0
Enable Interrupts
Schalter1 Alias Pind.0
Schalter2 Alias Pind.1
Dim Warten As Byte
Dim Warten2 As Byte
Warten = 50
Warten2 = 15
Do
Portb = 00000000
Waitms Warten
Portb = 00000001
Waitms Warten
Portb = 00000011
Waitms Warten
Portb = 00000110
Waitms Warten
Portb = 00001100
Waitms Warten
Portb = 00011000
Waitms Warten
Portb = 00110000
Waitms Warten
Portb = 01100000
Waitms Warten
Portb = 11000000
Waitms Warten
Portb = 10000000
Waitms Warten
Loop
Unterprogramm_isr:
If Schalter1 = 1 And Schalter2 = 0 Then
Do
Portb = &B00000101
Waitms Warten
Portb = &B00001010
Waitms Warten
Portb = &B00010100
Waitms Warten
Portb = &B00101000
Waitms Warten
Portb = &B01010000
Waitms Warten
Portb = &B10100000
Waitms Warten
Loop
End If
If Schalter2 = 1 And Schalter1 = 0 Then
Portb = &B11111111
End If
If Schalter2 = 1 And Schalter1 = 1 Then
Do
Portb = &B00010001
Waitms Warten2
Portb = &B00100010
Waitms Warten2
Portb = &B01000100
Waitms Warten2
Portb = &B10001000
Waitms Warten2
Portb = &B00010001
Waitms Warten2
Portb = &B00100010
Waitms Warten2
Portb = &B01000100
Waitms Warten2
Portb = &B10001000
Waitms Warten2
Loop
End If
Return
End
So Erklärung:
Der Attiny2313 hat zwei Timer. T0 und T1. Es wurde nur mit T0 gearbeitet.
Nur kann ich aus dem Datenblatt nicht herauslesen, welcher der 8-und welcher der 16bit Timer ist.
Prinzip:
Es werden zwei Taster/Schalter an zwei im Code festgelegte I/O Ports angeschlossen und dann durch drei verschiedene IF-Abfragen
die jeweiligen Programme abgerufen.
Ich hoffe mir kann jemad helfen,
FloH