- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: Multiplexer Schaltlogik vereinfachen

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    Anzeige

    Praxistest und DIY Projekte
    Hatte ich ja
    Led0 Alias A0 = 0 And A1 = 0 And A2 = 0 And A3 = 0

    Aber das ging nicht. Einfach:
    Led0 = A0 = 0 And A1 = 0 And A2 = 0 And A3 = 0
    oder?

    Im DB steht bei LE latch enable input (activ high)
    E enable input (activ Low)

    Dann muss E wohl auf GND sein damit er läuft (geht irgentwie aber auch ohne, nu LEDs sind schwächer, und er hängt sich manchmal auf).
    Einfach per Transistor hinterm µC auf GND schalten oder?

    Und LE werd ich dann wohl besser jedesmal setzen son läuft das Lauflich ja viel zu unsauber.

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Also so wie du das da machst geht das nicht.

    Nimm mal nur den 74HC4514

    An jeden der 16 Ausgänge hängt ne LED.
    Latch und Enable lassen wir malö weg.

    Bleiben die 4 Eingänge.

    Die 4 Bit stellen ja prima 16 Zustände dar also gehts streng Binär zu.

    0000 = LED 0 Leuchtet.
    0001 = LED 1
    0010 = LED 2
    0011 = LED 3
    ..
    ..
    ..
    ..
    1101 = LED 13
    1110 = LED 14
    1111 = LED 15

    Dh. die 4 Eingänge kommen an den Controller.


    Wenn du jedem Pin eine Variable zuordnest dann mußt du umständlich jede Variable einzeln setzen was nicht sinvoll ist.

    Nimm doch einfach den Port befehl.

    Aoso die 4 Leitungen zb. an Port B.0 bis 3

    Dann ist das Prrogramm recht einfach für ein einfaches Lauflicht.


    Config Portd = output
    ....
    ...
    ..
    .
    Do
    For X = 0 to 15
    Portd = x
    Waitms 200
    Next X
    Loop

    End


    Wenn du unbedingt noch Latch nutzen willst dann häng ihn zb. an Portd.4

    Das Programfragment dazu kann dann so aussehen.


    Config Portd = output
    ....
    ...
    ..
    .
    Do
    For X = 0 to 15
    Reset Portd.4
    Portd = x
    Set Portd.4
    Waitms 200
    Next X
    Loop

    End

    Schon biste fertig.


    Das ist aber nur ein ganz primitives Beispiel.
    Es gibt zig möglichkeiten das zu bewerkstelligen.
    Du kannst es auch noch mit Alias verknüpfen.
    Und wenn du weitere 74HC4514 an die gleichen 4 Pinne hängst und den jeweiligen LE an die noch freien D5-7 verteilst dann kannst du gleich mehrere 74HC4514 an einem Port betreiben.
    Oder du setzt die LE's über einen Dekoder an die oberen 4 Bit des Ports und schaffst dir so ein 16x16 Bit langes Lauflicht mit 256 LEDs
    usw. usw.

    Die Grenze liegt eigentlich nur in deiner Phantasie und bei der Rechenleistung des jeweiligen Controllers.

    Schau dir mal ruhig die Hilfe an und such mal nach Pin und Portbefehlen und die vielen Spielmöglichkeiten.
    Gruß
    Ratber

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    Hey,
    danke jetzt hab ich es verstanden.
    Bin grad in der Schule und kann es deshalb noch nicht testen.

    In Bascom funktioniert bei mir die Hilfe irgentwie nicht, ich kann die Themen nicht öffnen. Passiert einfach nichts.

    Portd = x
    ich dachte man kann immer nur Portd = 0 (low) bzw Portd = 1 (high) machen.

    Naja oky ich werd es nachher mal testen und noch was damit rumspielen, danke.

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    n Bascom funktioniert bei mir die Hilfe irgentwie nicht, ich kann die Themen nicht öffnen. Passiert einfach nichts.
    Ist auch nicht schade drum.

    Zieh dir mal das Handbuch als PDF das ist besser.


    Portd = x
    ich dachte man kann immer nur Portd = 0 (low) bzw Portd = 1 (high) machen.
    Nein,was du meinst ist Portx.y = n
    Nur mit Portx = n gibst du auf dem ganzen Port (Also alle 8 Bit) den Zahlenwert aus der dann Binär dargestellt wird.
    Logischerweise maximal ein Byte.

    Da der Expander in unserem Beispiel an den untersten 4 Bit hängt kann man schön mit 0 bis 15 die LED'S 0 bis 15 leuchten lassen.
    Gruß
    Ratber

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    Achsoo, danke jetzt hab ich es verstanden!
    Oky gut. Dann werd ich die Schaltung mal soweit aufbauen, und dann weiterschauen.
    Ich muss mir nochmal Interrupts angucken (Programm per IR unterbrechen).
    Und Software Pwm, dann müsste ich es eig. hinbekommen.

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    [EDIT] sorry hat sich schon geklärt

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    So, der Code fürs Lauflicht ist fertig.
    Aber ich noch bekomme Errors mit den Set/Reset Befehlen.

    "Variable can not be used with Set"
    bzw
    "Variable can not be used with Set"

    Code:
    $regfile = "m16def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    Waitms 50                                                   'Einschwingzeit
    
    Config Portd = Output
    Config Portc = Output
    
    Portd.4 Alias Enable1                                       'low = active
    Set Enable1
    Portc.4 Alias Enable2                                       'low = active
    Set Enable2
    
    Dim I As Integer                                            'Laufvariable
    I = O
    
    Dim Time As Integer
    Time = 200                                                  'Lauflicht Intervall
    
    
    'Hauptprogramm
    Print "Starte Hauptprogramm"
    Do
    
    Reset Enable1
    Print "Multiplexer 1 = an"
    Do
     For I = 0 To 15
      Portd = I
      Print I
      Waitms Time
     Next I
    Loop
    Set Enable1
    Print "Multiplexer 1 = aus"
    
    Reset Enable2
    Print "Multiplexer 2 = an"
    Do
     For I = 0 To 11
      Portd = I
      Print I
      Waitms Time
     Next I
    Loop
    Set Enable2
    Print "Multiplexer 2 = aus"
    
    Loop
    End

  8. #18
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Portd.4 Alias Enable1 'low = active
    Set Enable1
    Portc.4 Alias Enable2 'low = active
    Set Enable2
    ist falsch angewendet.

    Enable1 Alias Portd.4 'low = active
    Set Enable1
    Enable2 Alias Portc.4 'low = active
    Set Enable2

    so funktioniert es.

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    Ups *schäm*

    Danke

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    So Hardware ist fertig (bilder kommen noch), aber funktioniert irgentwie nicht *grml*

    Da ich den Fehler nicht finde, hier mal der Schaltplan und der Code (schon ganz simpel gemacht)

    Bild hier  

    Code:
    $regfile = "m16def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    Waitms 50                                                   'Einschwingzeit
    
    Config Porta = Output
    Config Portc = Output
    
    Portc.5 = 1                                                 'Elkos Masse
    Porta.4 = 0                                                 'Enable1 active = low
    
    Do
    
    Porta.0 = 1
    Porta.1 = 0
    Porta.2 = 0
    Porta.3 = 0
    
    Wait 1
    
    Porta.0 = 0
    Porta.1 = 1
    Porta.2 = 0
    Porta.3 = 0
    
    Wait 1
    
    Porta.0 = 0
    Porta.1 = 0
    Porta.2 = 1
    Porta.3 = 0
    
    Wait 1
    
    Loop
    Q1 Led (anstadt Q0) kann ich an/ausschalten (mit Enable) aber der Rest geht garnicht.
    Verstehe echt nicht was daran falsch ist, hab auch nochmal die Ausgänge am uC gemessen, alles OK.

    Der Multiplexer geht einfach nicht, aber warum?
    Auf dem Steckbrett hatte es noch funktioniert!

    Mfg

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen