PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellengröße



marius2
24.08.2014, 19:04
Hallo

Ich habe eine Frage an diesem Artikel :
http://www.dieelektronikerseite.de/uC%20Ecke/Lections/Matrixanzeigen%20-%20LEDs%20in%20Reih%20und%20Glied.htm

Ich steuere meine Matrix über Schieberegister und SPI-Modul.

Im gezeigten Programm für den Zeichengenerator wird eine Tabelle für die Zeichen benutzt. So mache ich das auch. An dieser Stelle tritt bei mir ein Problem auf. In der Tabelle sind mehr als 256 Werte enthalten. Wenn ich nun ein Zeichen haben möchte, was über dem 256. Wert liegt, kommt es zu einem fehlerhaften Muster, das Muster ist völlig willkürlich. Bis zum R funktioniert alles einwandfrei, nur ab dem S funktioniert es nicht mehr, da die Tabellenadresse über 255 geht.

Gibt es bei Bascomtabellen eine Begrenzung der Anzahl der Werte? Und wieso scheint es dann beim Autor zu klappen?

In der Bascom-Hilfe (http://avrhelp.mcselec.com/index.html?lookup.htm) zu steht zu Lookup:
The maximum index value to use is 65535


Gruß Marius

malthy
24.08.2014, 19:53
Hi,

es wäre ggf sinnvoll, wenn Du den Code posten würdest, der nicht funktioniert, und nicht nur auf einen ähnlichen verweist. Ich habe mir den Beispielcode aus dem Link deshalb nicht näher angesehen, aber wenn ein Fehler selektiv auftritt, wenn ein Wert > 255 wird, spricht das dafür, dass Dir irgendwo eine Byte-Variable überläuft.

Gruß
Malte

marius2
24.08.2014, 22:38
Hallo

Danke, genau das war der Fehler

Gruß Marius

HeXPloreR
25.08.2014, 10:22
Hallo,

also lag es an der falsch Dimensionierung des Chradr als Byte statt als Word (?)
Oder doch noch eine andere?

Welches Schieberegister nutzt du? Und wäre das schnell genug um z.B. auch einen LED-Globe damit entsprechend anzusteuern?

Viele Grüße
Jörg

marius2
25.08.2014, 14:56
Hallo

Ja genau, Charadr hatte ich als Byte definiert. Word ist nicht nötig, Integer reicht auch schon.

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Ansteuerung_per_SPI-Modul

Ich benutze 74HC595. 800 ns für 8 Bit über SPI. Meine Matrix ist nur 5x7 groß, aber ich denke, dass sie auch für größere Matrixen noch schnell genug sind.


Gruß Marius

HeXPloreR
25.08.2014, 15:08
okay, super vielen Dank ... auch für den Link.

Viele Grüße
Jörg

peterfido
25.08.2014, 18:30
Word ist nicht nötig, Integer reicht auch schon.

Die sind beide "gleich groß". Integer hat das höchste Bit als Vorzeichen, Word ist immer positiv. Kann nichts Negatives auftreten, oder braucht man höhere Zahlen als 32767, dann ist "Word" ist die bessere Wahl. "Versteckte" Fehler kommen sonst evtl. bei Zwischenberechnungen wie z.B. mal 6 geteilt durch 5.