Hallo, ich versuche gerade vier 8x8 LED Matrix-Module (rot/grün, gemeinsame Anoden) anzusteuern. Folgender Aufbau: Atmega32 Am PORT A und C sind jeweils ein UDN2981 angeschlossen. Damit steuere ich die Anoden der Matrixen an. Über HW-SPI werden vier 74HC595 mit ULN2803 gesteuert und schalten die Kathoden über Widerstände zu GND durch. Die Ansteuerung funktioniert und ich kann schon Schriften und Bilder anzeigen. Allerdings sind viele LEDs dabei, die ich eigentlich nicht ansteuere und die leicht glimmen. Kann es sein, dass der UDN2981 zu langsam abschaltet? Ich takte die PORTs A und C mit ca. 2kHz. Wie könnte ich den UDN am besten ersetzen? Ich hatte dieses Prinzip schon bei einer großen Sieben-Segment-Anzeige angewendet und damit keine Probleme gehabt. Gruß Gerd
@ Gerd (Gast) >Die Ansteuerung funktioniert und ich kann schon Schriften und Bilder >anzeigen. Allerdings sind viele LEDs dabei, die ich eigentlich nicht >ansteuere und die leicht glimmen. Bekannter Effekt. >Kann es sein, dass der UDN2981 zu langsam abschaltet? Kaum. > Ich takte die >PORTs A und C mit ca. 2kHz. Wie könnte ich den UDN am besten ersetzen? Es ist ein Softwarefehler. Deine Ansteuerung der Zeilen überlappen sich. Du musst so schalten Spalte aus neues Zeilenmuster ein neue Spalte ein MFG Falk
@Falk >Es ist ein Softwarefehler. Deine Ansteuerung der Zeilen überlappen sich. >Du musst so schalten >Spalte aus >neues Zeilenmuster ein >neue Spalte ein So habe ich es ja auch. Ist zwar nicht schön gemacht, weil es eine switch-case Anweisung in einer ISR ist, aber diese Reihenfolge ist da. So nach dem Motto:
1 | switch (col){ |
2 | case 1: PORTA=OFF; |
3 | SPI_DW( pixel_buffer[16], |
4 | pixel_buffer[48], |
5 | pixel_buffer[32], |
6 | pixel_buffer[0]); |
7 | PORTA=COL1; |
8 | break; |
9 | ...}
|
@crazy horse >Die Treiber sind schon recht lahm. Ein paar nops treiben den LEDs das >Glimmen aus. Ich werde zwischen dem Auschalten der UDN und dem Zeilenmuster mal mit nops experimentieren. Aber in dieser Nacht nicht mehr. Gute Nacht!
PORTA=OFF; switch (col){ case 1: SPI_DW( pixel_buffer[16], pixel_buffer[48], pixel_buffer[32], pixel_buffer[0]); PORTA=COL1; break; ...} sollte genügen.
Wollte nur ein Feedback geben. Die UDN2981 brauchen einige Zeit, bis sie ausschalten. Bei mir brauchte es ca. 30 NOPs (Quarz 14,7456 MHz). Vielen Dank für eure Hilfe. Gruß Gerd
@ Gerd (Gast) >Wollte nur ein Feedback geben. Die UDN2981 brauchen einige Zeit, bis sie >ausschalten. Klar, das ist ein eher langsamer Leistungstreiber, kein High Speed Digital IC. > Bei mir brauchte es ca. 30 NOPs (Quarz 14,7456 MHz). Das sind ~2us. Nicht viel für den AVR. Für den UDN2981 aber schon sehr flott. Der braucht laut Datenblatt 5..10us! MFg Falk
Naja, wenn man im Dunkeln bei einem Abstand von 10cm genau hinsieht, kann man ein Glimmen noch erahnen. Damit kann ich leben und weiß nun wo ich noch schrauben muss. ;-P Ich bin ja noch im Alpha-Stadium mit der Anzeige und werde noch einiges am Programm ändern. Momentan habe ich vier 8x8 Module im Einsatz und die komplette Anzeige wird 16 oder 20 Module haben. Da geht ja noch der Spaß mit der Vernetzung der einzelnen Steuerplatinen los. Mir war nur wichtig, dass ich heraus bekomme, was da schief läuft. Ich hatte damals schon mit Verzögerungen experimentiert, aber die hat der Compiler wieder weg optimiert. Sind halt Fehler, die man macht, wenn man nicht immer mit der Sache zu tun hat.
Au weiha... Man streiche nach belieben ein paar "noch" aus meinem vorherigen Posting...
Gerd wrote: > Folgender Aufbau: Schaltplan? > Die Ansteuerung funktioniert und ich kann schon Schriften und Bilder > anzeigen. Allerdings sind viele LEDs dabei, die ich eigentlich nicht > ansteuere und die leicht glimmen. Hoechstwahrscheinlich ein Reihenfolgeproblem.
Danke Michael, aber das Problem wurde gelöst. Es lag an den UDN2981 und meinem Timing. Gruß Gerd
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.