- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 29

Thema: Portexpander mit Schieberegister 4094

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75

    Portexpander mit Schieberegister 4094

    Hallo!
    Hab mich jetzt zum ersten Mal an den SPI-Bus getraut.
    Ich habe eine Porterweiterung mit 3 Schieberegistern 4094 aufgebaut.
    Die Programmierung der ersten beiden Schieberegister klappte wunderbar!
    Als ich das dritrte Schieberegister eingefügt habe, erscheinen alle Ausgänge, die auf den Expander 3 geschrieben werden auf dem Expander 1 und umgekehrt.
    Ich habe vieles probiert =9 nichts klappt. Bitte helft mir =)
    Danke

    Hier ein Programmausschnitt:

    Config Spi = Hard , Interrupt = On , Master = Yes , Clockrate = 16
    Spiinit
    Enable Spi
    ....
    Do
    ....
    ....
    Expander1 = Low(speicherwort)
    Expander2 = High(speicherwort)
    .....
    .....
    Expander3 = 0

    Spiout Expander1 , 1
    Spiout Expander2 , 2
    Spiout Expander3 , 3

    Loop


    habe den Expander 3 schon extra auf null gesetzt, trotzdem erscheinen die Ausgänge wie auf Expander 1.
    Die Expander1 und 2 sind natürlich als Bytes deklariert und im Programm bekommen sie ihre Wertzuweisung aus einem Word.
    hat wunderbar geklappt. Aber warum erscheint der erste auf dem dritten Expander?????

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    Die Schaltung habe ich aus diesem Tutorial =)

    http://www.rn-wissen.de/index.php/Portexpander_am_AVR

    Nur halt aufgebaut mit einem 4094!

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Spiout() erwartet als zweiten Parameter die Anzahl der zu sendenden Bytes, da muss also jeweils 1 hin und nicht 2 oder 3.
    Kannst Dir doch selbst denken, dass Du keine 2 oder 3 Bytes schicken kannst, wenn die Variable nur 1 Byte enthält.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    okay, aber wie kann ich es realisieren, dass der expander 1 das byte expander1, der expander 2 das byte expander2 , usw. erhält. wenn ich alle auf eins setze, bekommen doch alle expander die selben daten, oder??

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Wenn die Expander in serie (1, 2, 3) geschaltet sind, musst du (z.B)
    Code:
    DIM Expander1 as Byte             ' daten für expander 1
    DIM Expander2 as Byte             ' daten für expander 2
    DIM Expander3 as Byte             ' daten für expander 3
    
    
    spiout  Expander3, 1       ' exp3 daten im expander 1
    spiout  Expander2, 1       ' exp2 daten im expander 1  ==> exp3 daten im expander 2
    spiout  Expander1, 1       ' exp1 daten im expander 1  ==> exp2 daten im expander 1  ==> exp3 daten im expander 3
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    Code:
    DIM Expander1 as Byte             ' daten für expander 1
    DIM Expander2 as Byte             ' daten für expander 2
    DIM Expander3 as Byte             ' daten für expander 3
    
    
    spiout  Expander3, 1       ' exp3 daten im expander 1
    spiout  Expander2, 1       ' exp2 daten im expander 1  ==> exp3 daten im expander 2
    spiout  Expander1, 1       ' exp1 daten im expander 1  ==> exp2 daten im expander 1  ==> exp3 daten im expander 3
    [/QUOTE]

    Habe das probiert....
    Wenn ich das so in meinen µC lade, dann habe ich auf allen drei Expandern das selbe Byte.
    Wenn ich nur zwei expander betrieibe und dann

    spiout expander1 , 1
    spiout expander2 ,2

    im code schreibe, erscheinen alle bits richtig auf den beiden expandern.

    bei
    spiout expander1 , 1
    spiout expander2 , 2
    spiout expander3 , 3

    geben die ersten beiden expander die richtigen bytes und der dritte zeigt mir das byte vom ersten expander.
    wieso ist das so?

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von pete1612 Beitrag anzeigen
    bekommen doch alle expander die selben daten, oder??
    Nein. die werden durchgeschoben, vorausgesetzt die Verschaltung ist wie im verlinkten Bild.

    Jeweils QH* des vorigen geht in SER des nächsten Bausteins, wenn 3 x 1 Byte geschoben wurde, so hat jeder Baustein seine Daten.
    Ggf. solltest Du die zu sendenden Daten in ein Array aus 3 Elementen packen und auf einmal versenden, also:
    Code:
    Dim myArr(3) As Byte
    ' ... Array füllen
    Spiout myArr(1), 3

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    @MagicWSmoke: oops, sry
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Ähnliche Themen

  1. Portexpander an SPI
    Von chientech im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 13.02.2011, 17:29
  2. I²C-Portexpander-LED-Modul
    Von Pr0gm4n im Forum Robby RP6
    Antworten: 1
    Letzter Beitrag: 11.05.2008, 23:21
  3. LCD mit Portexpander
    Von davebastard im Forum C - Programmierung (GCC u.a.)
    Antworten: 11
    Letzter Beitrag: 15.06.2007, 18:00
  4. Antworten: 3
    Letzter Beitrag: 20.03.2007, 09:51
  5. 4094 manuell mit Tastern steuern
    Von Bastler5 im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 01.02.2006, 13:02

Berechtigungen

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

Solar Speicher und Akkus Tests