Inhibit ist hoffentlich auf 0?
Hallo Leute,
als erstes will ich mich hier im Forum bedanken,
da ich fast mein ganzes Wissen über Microconroller und elektronischen Bauteilen aus diesem Forum mir geholt habe
zu meinem Problem:
Ich will einen LED-Cube bauen, welcher über ein ATmega 32 gesteuert wird.
Um Ports zu sparen habe ich mich dazu entschlossen den Demultiplexor 4514 zu benutzen(Datenblatt:http://www.jaycar.com.au/images_uploaded/CD4514BC.PDF)
Egal was ich für ein Eingangsignal dem Decoder geben, es kommt kein Ausgangssignal
An Vcc habe ich 5V anliegen, an Vss sind 0V und mir ist bewusst, dass ich um ein Signal zu verarbeiten den Strobe auf high setzten muss
aber es geht trotzdem nicht
Kann mir einer von euch bitte helfen?
Grüße mize03
Inhibit ist hoffentlich auf 0?
雅思特史特芬
开发及研究
Job,
Inhabit ist auf low.
Aber an was kann es sonst liegen?
Kann es sein das der Demux defekt ist,
gibt es dann eine Möglichkeit ihn zu überprüfen?
Danke für eure Hilfe
Grüße mize03
Ich habe den Demux noch gar nicht verbaut,
sondern auf nem Steckboard mal ausprobieren wollen.
Macht es einen großen Unterschied,
ob der Demux von einem Controller oder von mir manuel angesteuert wird?
Grüße mize03
Hallo!
@ mize03
Auf der 2.Seite des Datenblattes ist eine Wahrheitstabelle ("Truth Table"). Wenn sie bei dir nicht stimmt, dann ist das IC defekt.
Wenn die Logikpegel stimmen, ist es egal womit der Demux angesteuert wird.
Wegen Latch findet die Änderung des Ausgangs jedesmal erst nach dem Strobe statt.
MfG
Hi,
wenn der IC auf einem Steckbrett steckt, hängen die Eingänge vermutlich "in der Luft". Cmos braucht aber definiertes Potenzial an allen Eingängen- also Pullup/pulldown-Widerstände, je nach Funktion.
MfG Lutz
Wir haben so viel mit so wenig solange versucht, das wir jetzt qualifiziert sind, fast alles mit fast nichts zu bewerkstelligen.
Hey Danke,
die Eingänge hingen wirklich in der Luft ;P
Habe es endlich geschafft dem IC Leben einzuhauchen
Steuer den Demux jetzt mit nem ATmega32 an,
und verwende folgendes Programm:
Im Moment schalte ich also nur die Ausgänge S0 - S4,Code:#include <avr/io.h> #include <stdint.h> int #define F_CPU 512000UL #include <util/delay.h> #include <avr/interrupt.h> void main() //Schaltet LED 1 - 5 { DDRD = (1 << PD5) | (1 << PD6) | (1 << PD7); //Ausgänge definieren DDRC = (1 << PC0) | (1 << PC1); while ( 0 < 1) { int dauer = 10; LED(1); Sleep(dauer); LED(2); Sleep(dauer); LED(3); Sleep(dauer); LED(4); Sleep(dauer); LED(5); Sleep(dauer); } return(0); } void Sleep(int dauer) { TCNT1H=0; // Timer Daten Register Timer1 High auf 0 Setzen TCNT1L=0; // Timer Daten Register Timer1 Low auf 0 Setzen TCCR1B |= (1 << CS00) | (1 << CS02); int zaehler= 0; while ((TCNT1 < 500) | (zaehler < dauer)) { zaehler++; } return(0); } void E(int w) //EINGÄNGE { switch(w) { case 1: PORTC |= (1 << PC0); // DEMUX Eingang A break; case 2: PORTD |= (1 << PD7); // DEMUX Eingang B break; case 3: PORTD |= (1 << PD6); // DEMUX Eingang C break; case 4: PORTD |= (1 << PD5); // DEMUX Eingang C break; } return(0); } void LED(int n) //siehe Tabelle Demux 4514 { switch(n) { case 1: Str(); break; case 2: E(1); Str(); break; case 3: E(2); Str(); break; case 4: E(1); E(2); Str(); break; case 5: E(3); Str(); break; } return(0); } void Str() //Strobe: damit der Demux Eingänge verarbeitet { PORTC |= (1 << PC1); //Strobe an Sleep(1); // Ohne zu schnell für IC(komisch?) PORTC &= ~(1 << PC1) | ~(1 << PC0); //Strobe und alle anderen Eingänge aus PORTD &= ~(1 << PD5) | ~(1 << PD6) | ~(1 << PD7); return(0); }
es werden die Ausgänge aber komischerweise in folgender Reihenfolge geschaltet:
S0, S2 und S3.
Mehr geht nicht.
S1 und S4 lässt er einfach aus
Dort ist auch keine Zeitverzögerung festzustellen.
Hat einer von euch ne Idee?
Bin auf jeden Fall schonmal richtig happy das das jetzt geklappt hat
Vielen Dank,
Grüße mize03
Also micht würde mal interessieren was genau das IC tut? Du erweiterst damit scheinbar die Ports deines Controllers aber wie genau funktioniert dieses IC? Ich überlege einen Cube über Schieberegister aufgrund mangelnder ports am Controller zu realisieren aber da wird die Software dann recht groß werden und zudem ist dann die Frage ob das ganze noch schnell genug ist. Daher wär ich dir dankbar wenn du kurz beschreiben könntest wie genau deine Lösung funktioniert (bzw. später funktionieren soll )
Hey,
ein Demultiplexer wird mit 4 Bit angesteuert und kann somit 16 Ausgänge schalten,jedoch immer nur einen Ausgang.
(was aber bei deinem Led-Cube ja reicht)
wikipedia: http://de.wikipedia.org/wiki/Demultiplexer
aber schau dir einfach mal das Datenblatt an(Wahrheitstabelle)
Grüße mize03
Lesezeichen