Forum: Mikrocontroller und Digitale Elektronik led cube Multiplexen Timer Interupt


von cuve (Gast)


Lesenswert?

Hallo,
ich baue gerade einen led cube und habe mich dabei an folgendem link 
orientiert: http://www.mikrocontroller.net/articles/LED_cube

Anstatt der Mosfets habe ich allerdings transistoren (PN2222) genommen.
Mein Aufbau ansich funktioniert, dass heißt ich bekomme die leds zum 
leuchten.

als nächsten schritt wollte ich den cube multiplexen.
Aber genau da ist das Problem.
Nehme ich den quellcode von der Seite 
(http://www.mikrocontroller.net/articles/LED_cube) sehe ich nur 
irgendein geflacker oder nichts.
an den transistoren liegt es glaub ich nicht, da ich auch keine 
ausgangsspannung am uC messen kann.

Ich würde das Problem eher auf den Timer und dem Interrupt eingrenzen,
allerdings fehlt mir da der richtige Lösungsansatz.
Habt ihr irgendeine Idee, wie ich den cube mit multiplexing zum laufen 
bekomme?

von Maddin (Gast)


Lesenswert?

...vielleicht ist deine Muxfrequenz zu niedrig. ggf das div8 Bit mal 
begutachten!?

M.

von cuve (Gast)


Lesenswert?

Danke das hat mich schon einen riesen Schritt vorangebracht.

Was mich nur jetzt wundert ist, dass nur ein Teil der Animationen 
abgespielt werden kann bzw. man sieht nur einen Teil, da beim rest keine 
led leuchtet.
Das heißt ich kann den schriftverlauf sehen und das männchen, welches 
geht geht.

Bei der Timereinstellung steht:

void cube_show_init( void )
{
  TCCR0 |= (1 << CS02) | (0 << CS00);
  TIMSK |= (1 << TOIE0);
}

wie sieht es dort mit cs01 aus?
1    0    0    CPU-Takt / 256 für 0<<cs01
1    1    0    Externer Pin TO, fallende Flanke für 1<<cs01

von Karl H. (kbuchegg)


Lesenswert?

cuve schrieb:

> wie sieht es dort mit cs01 aus?
> 1    0    0    CPU-Takt / 256 für 0<<cs01
> 1    1    0    Externer Pin TO, fallende Flanke für 1<<cs01


Steht in deinem Code irgendwo, dass CS01 gesetzt wird?
Wenn nein, dann hat dieses Bit immer noch den Zustand nach dem 
Einschalten der Versorgunsspannung und ist daher 0.

von Karl H. (kbuchegg)


Lesenswert?

> Was mich nur jetzt wundert ist, dass nur ein Teil der
> Animationen abgespielt werden kann bzw. man sieht nur
> einen Teil, da beim rest keine led leuchtet.

Eine Strategie, die sich bei mir extrem bewährt hat lautet:
Mach nicht gleich das komplexeste Beispiel, das du finden kannst, 
sondern fang erst mal mit einfachen Sachen an. Dabei fallen dann Dinge 
auf, die behoben werden müssen. Und beim nächsten, möglicherweise 
komplexeren Beispiel fallen dann wieder andere Dinge auf, die ebenfalls 
behoben werden.
Nach einigen Runden sind dann die Kinderkrankheiten alles beseitigt und 
siehe da, dann funktionieren auch die komplexen Beispiele alle auf 
Anhieb.

Im Falle eines LED-Cube wäre mein erstes Testprogramm ein Programm, 
welches nacheinander alle LED einschaltet. Zuerst jede LED einzeln, 
danach immer 1 LED mehr, damit ich sehe, ob die Spannungsversorgung in 
die Knie geht.
Und erst dann, wenn ich sicher bin, dass jede LED für sich alleine 
angesteuert werden kann und auch die Spannungsversorgung mitmacht, erst 
dann geh ich auf Animationen.

Edit:
Die Funktion "cube_full" hast du gesehen? Das ist mehr oder weniger 
genau eine der ersten Funktionen die ich benutzen würde. Ihr Zweck: Alle 
LED aufdrehen. Wenn dann nicht alle LED leuchten, gibt es ein 
Hardware-Problem, dem man nachgeht

von cuve (Gast)


Lesenswert?

Also ich hatte schon mal alle LEDs zum leuchten gebracht.
Ich kann mir vorstellen, dass es an den Transistoren liegt, die ich 
anstatt der Fets gewählt hatte.

Wie dimensiert man den Widerstand vor den Fets (habe den IRLIZ44N)?
http://www.irf.com/product-info/datasheets/data/irliz44n.pdf

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.