Forum: Mikrocontroller und Digitale Elektronik Problem IO-Warrior/Arduino LED-Matix


von Fulli G. (fulligonzales)


Angehängte Dateien:

Lesenswert?

Sehr verehrte Mikrocontroller-Gemeinde,

ich stehe vor einem Problem/Rätsel und weiß nicht mehr weiter. Ich 
hoffe, ich bekomme von euch eine Anregung oder Idee, die mich irgendwie 
wieder in die Spur führt...

Folgende Situation:
Ich habe vor mir eine von einem Freund vor ca 8 Jahren konstruierte 
LED-Matrix liegen, welche von einem IO-Warrior im multiplexbetrieb 
kontrolliert wird. Angesteuert wird diese über Shiftregister. Bei den 
Shiftregistern handelt es sich um den MIC5891 als den Eingangs treiber 
und den MIC5821 als Ausgangs Treiber. Die Matrix wird mit einem externen 
12V Netzteil gefüttert. Hat bisher in dieser Konfiguration wunderbar 
funktioniert.(Der  Schaltplan ist der IO-Warrior Application Note 1 
entnommen, passt aber genau auf meine Konfiguration, ich habe ihn nur 
minimal angepasst)

Nun wollte ich den IO-Warrior gegen einen Arduino tauschen (warum soll 
hier bitte nicht gegenstand der Diskussion sein, gerne in einem anderen 
Thread). Ich mach mich also mit meinem Elektrotechnik(halb)wissen an die 
Aufgabe, nehme den IO-Warrior aus der Fassung und verdrahte probehalber 
die jeweiligen PINs vom Arduino mit der Fassung und shifte 4Byte rüber.

Dann passierte Folgendes:
Die erste LED leuchtete. Schalte ich eine zweite dazu, weden die LEDs 
dunkler. Bei einer dritten werden die noch mehr dunkel usw...
Wenn ich ein Muster anschalte und ein hohes delay wähle, leuchten die 
LEDs gut sichtbar, auch im richtigen Muster, aber sie flackern 
(logischer Weise). Verringere ich das delay, wird das flackern auch 
geringer, aber das Leuchten der LEDs auch.

Auf den ersten Blick sieht das ja nach dem klassischen Fehler aus, den 
Stom für die LED-Matrix falsch ausgelegt zu haben. ABER ich habe ja an 
der Stromversorgung nichts geändert! Und mit dem IO-Warrior als 
"Byte-rüber-shifter" funktioniert es bestens. Nur wenn der Arduino die 
Bits schickt läuft es nicht....

Wo liegt mein Denkfehler??? Warum kann ich nicht einfach den IO-Warrior 
durch den Arduino tauschen? Der Warrior schickt ja auch "nur" über eine 
serielle Verbindung Einsen und Nullen an die Micrel Shiftregister. Kann 
ein Arduino da überhaupt was anders machen? Ok, der IO-Warrior läuft mit 
6MHz und der Arduino mit 16MHz. Aber die Bits scheinen ja richtig an zu 
kommen, sonst würde das Muster ja nicht stimmen.
Ich verzweifle hier noch.... Ich hoffe Ihr könnt mir weiter helfen.

Anbei noch der fix gecodete Arduino-code zum Muster testen.

von Hubert G. (hubertg)


Lesenswert?

*.ino ist sehr schlecht zum ansehen.
Du bedenkst in deinem Code schon das immer nur eine Led je Zeile 
leuchten darf.

von Fulli G. (fulligonzales)


Angehängte Dateien:

Lesenswert?

Hallo,

Danke für deine Antwort und deine Anregung. Hänge den Arduino Code mal 
als *.h an, hoffe das passt besser.

Zu deiner Anregung:
Ich hatte das Anfangs gemäß dem LED-Matrix Artikel ausprobiert, das 
jeweils nur eine LED vom Arduino angesteuert wird. Waren aber die 
gleichen Symptome. Danach habe ich den Arduino Code dann dem IO-Warrior 
Code angepasst, um da eventuelle Unterschiede zwischen Arduino und 
IO-Warrior ausschließen zu können. Der angehängte Arduino Code 
entspricht dem des IO-Warriors.
Daran kann es also auch nicht liegen...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.