-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 29

Thema: Portexpander mit Schieberegister 4094

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75

    Portexpander mit Schieberegister 4094

    Anzeige

    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.836
    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
    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

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

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von PicNick Beitrag anzeigen
    @MagicWSmoke: oops, sry
    Warum ?

    Weil schneller ? Kein Problem

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    okay, danke =) dann werde ich das heute abend mal ausprobieren.
    das heißt, die bytes werden praktisch von hinten nach vorne in die expander geschoben.
    also das letzte byte zuerst.
    gut =)
    und den strobe macht das programm dann bei jedem loop? oder wie setzten sich die register wieder auf 0?

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Den RCK-Strobe kriegen alle Expander gleichzeitig. (nach dem letzen der 3 SPIOUT's)
    Auf Null musst du die Expander "manuell" setzen, d.h. lauter 0-en reinschieben.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

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

Berechtigungen

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