PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Demux Problem



mize03
26.03.2010, 10:01
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

sast
26.03.2010, 10:36
Inhibit ist hoffentlich auf 0?

mize03
26.03.2010, 23:05
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

Martinius11
26.03.2010, 23:16
bist du sicher da die Software in ordunung (code wäre nett) ist?
und das sie auch richtig auf den microc. übertragen wurde ?

mize03
26.03.2010, 23:53
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

PICture
27.03.2010, 02:50
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

FriLu
28.03.2010, 00:10
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

mize03
28.03.2010, 12:39
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:

#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);
}


Im Moment schalte ich also nur die Ausgänge S0 - S4,
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

oZe
28.03.2010, 23:00
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 ;-) )

mize03
29.03.2010, 18:03
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

mize03
29.03.2010, 19:50
JUHU!!! \:D/

habs geschafft:)
warum auch immer,
haber jetzt alles einfach mal auf ne platine gelötet und hat sofort super funktioniert:)

Danke nochmal für die Hilfe :)

Grüße mize03