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.
*.ino ist sehr schlecht zum ansehen. Du bedenkst in deinem Code schon das immer nur eine Led je Zeile leuchten darf.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.