Hallo, die Herren, ich verzweifel mal wieder. Und hoffe auf Erleuchtung durch Euch.
Habe eine Schaltung, bei der LEDs gemultiplext werden. Das Muster holt sich der uC aus einer Tabelle. Nacheinander werden 4 Bytes gelesen und auf PortA ausgegeben, der Transistor, der gegen gemeinsame Masse von je 8 LEDs zieht, hängt an PortB. Nun ist der tiny84 gerade so ausreichend und - bevor ich ihn mit meinem einfach-programmer nicht mehr proggen kann, wollte ich natürlich meinen PB3 nicht als Ausgang setzen. Das erst, wenn alles klappt. Es klappt aber gar nichts. Nicht einmal das Setzen der 1 LED in der Initialisierung klappt. Wo ist mein (offensichtlicher?) Fehler?
Code:
$regfile = "ATtiny84.DAT"
$crystal = 8000000 'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 10 ' default use 32 for the hardware stack
$swstack = 20 'default use 10 for the SW stack
$framesize = 20 'default use 40 for the frame
Const Runden = 10
Dim Daten As Byte ' auszugebendes Byte
Dim Datena As Byte
Dim Datenb As Byte
Dim Datenc As Byte
Dim Datend As Byte
Dim Schleife As Byte
Dim Wiederholungen As Byte
Dim Zaehler As Word
Config Portb = &B11110111 'Portb.3 als Reset -Eingang schalten
Portb = &B00001000 'keine Pullups zuschalten
Config Porta = Output ' einzelnes Byte (1..8,9..16,17..24,25..32)
Porta = 1
Portb = 1
Zaehler = 0
Waitms 5000
Do
For Wiederholungen = 1 To 10
Daten = Lookup(zaehler , Blinkmuster)
If Daten <> &B01010101 Then ' Wenn das erste Byte keine 01010101 ist, sind alle 4 Bytes gültig
Datena = Lookup(zaehler , Blinkmuster)
Incr Zaehler
Datenb = Lookup(zaehler , Blinkmuster) 'Zweites Byte holen
Incr Zaehler
Datenc = Lookup(zaehler , Blinkmuster) 'Drittes Byte holen
Incr Zaehler
Datend = Lookup(zaehler , Blinkmuster) ' Viertes Byte holen
Incr Zaehler
For Schleife = 1 To 33 ' 33x20ms = 2/3 Sekunde
Porta = Datena
Portb = 1
Waitms 5
Portb = 0
Porta = Datenb
Portb = 2
Waitms 5
Portb = 0
Porta = Datenc
Portb = 4
Waitms 5
Portb = 0
Porta = Datend
Portb = 8
Waitms 5
Portb = 0
Next Schleife
Else ' alles rum, dann reinitialisieren
Zaehler = 0
Porta = 0
Portb = 0
Waitms 1000 ' 1 Sekunde Pause
End If
Next Wiederholungen 'Das gesamte Muster 10x durchspielen, dann
Mcucr = &B000100000 ' Schlafsettings
sleep ' Schlafen
Loop
End
Blinkmuster:
Data &B00000000 , &B00000000 , &B00000000 , &B00000000
Data &B00000000 , &B00000000 , &B00000000 , &B10000000
Data &B00000000 , &B00000000 , &B00000000 , &B10000001
Data &B00000000 , &B00000001 , &B00000000 , &B10000001
Data &B00000000 , &B10000001 , &B00000000 , &B10000001
Data &B01000000 , &B10000001 , &B00000000 , &B10000001
Data &B01000100 , &B10000001 , &B00000000 , &B10000001
Data &B01000100 , &B10000101 , &B00000000 , &B10000001
Data &B01000100 , &B10000101 , &B00000000 , &B10010001
Data &B01000100 , &B10000101 , &B00000000 , &B10110001
Data &B01000100 , &B10001101 , &B00000000 , &B10110001
Data &B01100100 , &B10001101 , &B00000000 , &B10110001
Data &B01100100 , &B10001111 , &B00000000 , &B10110001
Data &B11100100 , &B10001111 , &B00000000 , &B10110001
Data &B11100100 , &B10101111 , &B00000000 , &B10110001
Data &B11100100 , &B10111111 , &B00000000 , &B10110001
Data &B11100100 , &B10111111 , &B00000000 , &B10111001
Data &B11100101 , &B10111111 , &B00000000 , &B10111001
Data &B11100101 , &B11111111 , &B00000000 , &B10111001
Data &B11100101 , &B11111111 , &B00000000 , &B10111011
Data &B11100101 , &B11111111 , &B00000001 , &B10111011
Data &B11100111 , &B11111111 , &B00000001 , &B10111011
Data &B11101111 , &B11111111 , &B00000001 , &B10111011
Data &B11111111 , &B11111111 , &B00000001 , &B10111011
Data &B11111111 , &B11111111 , &B01000001 , &B10111011
Data &B11111111 , &B11111111 , &B01000101 , &B10111011
Data &B11111111 , &B11111111 , &B01100101 , &B10111011
Data &B11111111 , &B11111111 , &B01110101 , &B10111011
Data &B11111111 , &B11111111 , &B11110101 , &B10111011
Data &B11111111 , &B11111111 , &B11110111 , &B10111011
Data &B11111111 , &B11111111 , &B11111111 , &B10111011
Data &B01010101 ' Endemarker '
Danke vorab,
Carsten