#fritz#
23.06.2013, 13:55
Hallo,
folgendes Problem:
Ein Atmega 16 steuert eine LED-Matrix mit 7 Spalten und 18 Zeilen = 126 LED`s
im Multiplex-Betrieb.
Bei der Multiplex-Anzeige wird der Byte-Array Anzeige(126) ausgewertet.
Die Info, welche LED zu leuchten hat, bekommt er seriell von einem Atmega 328
in Form eines 126-Zeichen langen String`s.
Die Baudrate ist 9600, wenn höher treten zu viele Fehler auf.
Zuerst habe ich den seriellen Eingang mit 126 Zeichen (0 und 1) durch die Funktion "mid" und "val"
in den Byte-Array Azeige(126) übetragen.
Das funktioniert im Prinzip, aber während des Datenempfanges und der Übertragung in den Byte-Array
flackert die Anzeige, weil das ganze den kontinuierlichen Ablauf der Multiplexanzeige unterbricht.
In der Hoffnung, dass alles schneller abläuft habe ich mit der Funktion "split" den empfangenen String in
den Array übertragen. Brachte aber keinen Vorteil, da bei "split" Trennzeichen erforderlich sind und deshalb doppelt soviele Zeichen übertragen werden müssen. Außerdem konvertiert "split nur in einen Text-Array. Dann sind wieder Umwandlungen in die Zahlen 0 und 1 notwendig.
Bisher laufen die Atmegas mit 10 MHz. Wenn ich auf 16 MHz umrüste, wird das Flackern geringer werden.
Seht Ihr eine Möglichkeit, das ganze per Software schneller zu machen?
Ich danke für jeden Hinweis.
folgendes Problem:
Ein Atmega 16 steuert eine LED-Matrix mit 7 Spalten und 18 Zeilen = 126 LED`s
im Multiplex-Betrieb.
Bei der Multiplex-Anzeige wird der Byte-Array Anzeige(126) ausgewertet.
Die Info, welche LED zu leuchten hat, bekommt er seriell von einem Atmega 328
in Form eines 126-Zeichen langen String`s.
Die Baudrate ist 9600, wenn höher treten zu viele Fehler auf.
Zuerst habe ich den seriellen Eingang mit 126 Zeichen (0 und 1) durch die Funktion "mid" und "val"
in den Byte-Array Azeige(126) übetragen.
Das funktioniert im Prinzip, aber während des Datenempfanges und der Übertragung in den Byte-Array
flackert die Anzeige, weil das ganze den kontinuierlichen Ablauf der Multiplexanzeige unterbricht.
In der Hoffnung, dass alles schneller abläuft habe ich mit der Funktion "split" den empfangenen String in
den Array übertragen. Brachte aber keinen Vorteil, da bei "split" Trennzeichen erforderlich sind und deshalb doppelt soviele Zeichen übertragen werden müssen. Außerdem konvertiert "split nur in einen Text-Array. Dann sind wieder Umwandlungen in die Zahlen 0 und 1 notwendig.
Bisher laufen die Atmegas mit 10 MHz. Wenn ich auf 16 MHz umrüste, wird das Flackern geringer werden.
Seht Ihr eine Möglichkeit, das ganze per Software schneller zu machen?
Ich danke für jeden Hinweis.