Tag ich bin der Neue hier!
Also ich hab folgendes Problem:
Ich hab mir einen 5x5x5 Würfel gebaut, Java Prog geschrieben zum entwerfen von Mustern auf graphischer Oberfläche und n Bascom Code auf den 5x5x5 "angepasst"(Danke Fightclub ;-)).
Hier der Bascom-Code:
$regfile = "m32def.dat"
$hwstack = 32
$swstack = 32
$framesize = 40
$crystal = 8000000
'-------------------------------------------------------------------------------------------------
' Ports auf Ausgang setzen
'-------------------------------------------------------------------------------------------------
Config Porta = Output
Config Portb = Output
Config Portc = Output
Ddrd = &B00111111
'-------------------------------------------------------------------------------------------------
' Variablen deklarieren
'-------------------------------------------------------------------------------------------------
Dim Bild As Integer ' Aktuelle Bildnummer
Dim Maxbild As Integer ' Nummer des letzten Bildes (=Zahl der Bilder in der Animation)
Dim Ebene As Byte ' Ebenen-Zähler
Dim Dauer As Integer ' Anzeigedauer des Bildes
Dim Temp As Byte ' für Berechnungen
Dim Offset As Integer ' Position der zu holenden Daten
Dim Laenge As Integer ' Position der Zeit
Dim Nextt As Integer ' Positions counter der Zeit
'-------------------------------------------------------------------------------------------------
' Hauptprogramm
'-------------------------------------------------------------------------------------------------
Do
Maxbild = Lookup(0 , Muster) ' Anzahl der gespeicherten Bilder holen
Maxbild = Maxbild - 1
Nextt = 0
For Bild = 0 To Maxbild ' Bilder durchzaehlen
Laenge = Lookup(nextt , Rtime)
For Dauer = 0 To Laenge ' Dauer des Bildes, pro Durchlauf aus txt holen
For Ebene = 0 To 4 ' 5 Ebenen durchmultiplexen
Offset = Bild * 20 ' Offset Berechnen, 20 Byte pro Bild
Temp = Ebene * 4 ' 4 Byte pro Ebene
Offset = Offset + Temp
Offset = Offset + 2
Porta = Lookup(offset , Muster) 'PortA ausgeben
Offset = Offset + 1 'in .txt einen Schritt weiter gehen
Portb = Lookup(offset , Muster) 'PortB ausgeben
Offset = Offset + 1
Portc = Lookup(offset , Muster) 'PortC ausgeben
Offset = Offset + 1
Portd = Lookup(offset , Muster) 'PortD ausgeben
Waitms 5 ' diese Ebene fuer 5 ms anzeigen
Next Ebene
Next Dauer
Nextt = Nextt + 1 'nächste Zeit
Next Bild
Loop ' Programm von vorne beginnen
End
'-------------------------------------------------------------------------------------------------
Muster:
'-------------------------------------------------------------------------------------------------
$include "Muster.txt" ' Datei mit Mustern einbinden
Rtime: ' Datei mit der Anzeigedauer einbinden
$include "Time_Delay.txt"
Alles anzeigen
In der Muster.txt steht folgendes:
DATA 125%
DATA 0,0,0,62
DATA 1,0,0,54
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 2,0,0,54
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 4,0,0,54
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 8,0,0,54
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 16,0,0,54
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 32,0,0,54
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 64,0,0,54
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 0,0,0,62
DATA 128,0,0,54
.
.
.
.
Alles anzeigen
Die Ausgabe soll sein, dass er alle LEDs nacheinander ein und wieder aus schaltet... Das klappt auch wunderbar, bis zum Bild 51. Das bekommt er noch hin und in Bild 52 vertauscht er Port D mit Port A und läuft weiter. Also genau dann, wenn die Variable Offset den Wert 1024 überschreitet. Das passiert bei allen Animationen, die mehr als 51 Bilder haben. Die Werte in der Muster.txt hab ich auch schon als Bytes gehabt, das hat auch nich geholfen! Das scheint wie schon gesagt ein absolut Software seitiges Problem zu sein, da er das am realen Würfel und in der BAscom Simulation gleichermaßen macht. Ich sitz hier schon ewig dabei und hab echt keine Einfälle mehr... wenn ich die Muster.txt in mehrere txts aufteile (jeweils 50 Bilder) und den offset wieder auf 0 setze geht es... aber wenn ich (übertrieben) 1000 Animationen machen will, hab ich keine Lust 200 txts anzulege. Kann mir da BITTE einer helfen!? Ich schmeiss das Ding sonst bald aus dem Fenster!
Angesteuert wird das Ding mit dem Atmel Evaluations-Board V2.0.1 mit nem ATMega32 druff!