-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Demux Problem

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.12.2009
    Beiträge
    24

    Demux Problem

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    47
    Beiträge
    497
    Inhibit ist hoffentlich auf 0?

    雅思特史特芬
    开发及研究

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    26.12.2009
    Beiträge
    24
    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

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    22
    Beiträge
    661
    bist du sicher da die Software in ordunung (code wäre nett) ist?
    und das sie auch richtig auf den microc. übertragen wurde ?
    MfG Martinius

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    26.12.2009
    Beiträge
    24
    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

  6. #6
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    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

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2006
    Ort
    Dresden
    Alter
    62
    Beiträge
    370
    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.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    26.12.2009
    Beiträge
    24
    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:
    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);
    }
    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

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2006
    Ort
    Dortmund
    Alter
    30
    Beiträge
    379
    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 )

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    26.12.2009
    Beiträge
    24
    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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •