- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 15

Thema: Input beim MCP23017

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68

    Input beim MCP23017

    Mahlzeit

    Ich experimentiere länger schon mit dem MPC 23017 herum.
    Inzwischen funktioniert er auch und ich kann die Ausgänge und Register schreiben.

    Leider bekomme ich das nicht hin, mir die Ports als Eingänge zu nutzen.
    Das ich die Register 0x00 und 0x01 dafür verwende, das weiss ich. im Grundzustand sind diese ja auch als Eingänge definiert.

    Leider komme ich auch aus dem Datenblatt da nicht so ganz schlau.
    wenn ich das richtig lese ist dafür 0x12 und 0x13 zuständig..jedoch stehe ich da irgendwie auf dem Schlauch..
    .ich möchte das die Pins im Grundzustand Low sind, das mache ich über Pull Down Widerstände.
    mir reicht es die Gesamte Information eines Bytes in eine Variable zu schreiben. (0-255)

    kann mir da jemand auf die Sprünge helfen.bzw hat das schonma in C Programmiert ?

    Gruss
    modtronic

  2. #2
    HaWe
    Gast
    die Gretchenfrage lautet: für welche Zielplattform?

    Für nackte Atmels sieht der Code völlig anders aus als für Arduinos und erst recht für Raspis, einfach weil die i2c-Libs völlig anders implementiert sind.

    Ich selber habe Tonnen von Code für den

    Raspi http://www.mindstormsforum.de/viewto...p=68574#p70059

    und Arduino: http://www.mindstormsforum.de/viewto...tart=75#p69287 .

  3. #3
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68
    Hallo

    Ich arbeite mit den klassischen Atmels AT Mega 8,16 und 32.
    Ich programmiere mit Codevision in der Sprache C.

    Gruss
    Patrick

    - - - Aktualisiert - - -

    Hallo

    Ich arbeite mit den klassischen Atmels AT Mega 8,16 und 32.
    Ich programmiere mit Codevision in der Sprache C.

    I2C Bus ist eine Routine von CV..

    ich spreche den BUs mit i2c_start an,,bzw i2c_stop.
    mit write und read kann man halt schreiben oder lesen

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    05.11.2009
    Ort
    Gerblingerode
    Alter
    58
    Beiträge
    207
    das hatten wir doch schon mal ...

    Register 0 /1 und 12/13 wie folgt schreiben ...

    Register 0 (A) DIR 0=OUT / 1=IN
    Register 1 (B) DIR 0=OUT / 1=IN

    Register 12 (A) Pull-UP 0=aus / 1=ein
    Register 13 (B) Pull-UP 0=aus / 1=ein


    und Register 18 /19 einlesen ...


    Register 18 (A) IO 0=LOW / 1=HIGH
    Register 19 (B) IO 0=LOW / 1=HIGH
    Gruß Ralf ... Projekt-Beschreibungen www.greinert-dud.de ... "Alle sagten: Das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht."

  5. #5
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68
    Zitat Zitat von Feuerring Beitrag anzeigen
    das hatten wir doch schon mal ...

    Register 0 /1 und 12/13 wie folgt schreiben ...

    Register 0 (A) DIR 0=OUT / 1=IN
    Register 1 (B) DIR 0=OUT / 1=IN

    Register 12 (A) Pull-UP 0=aus / 1=ein
    Register 13 (B) Pull-UP 0=aus / 1=ein


    und Register 18 /19 einlesen ...


    Register 18 (A) IO 0=LOW / 1=HIGH
    Register 19 (B) IO 0=LOW / 1=HIGH
    Vielen Dank

    ich möchte jedes der 8 Eingänge in eine Variable schreiben..
    da habe ich gerade irgendwie ein Problem..oder ich seh den Wald vor lauter bäumen nicht

    Gruss
    Patrick

  6. #6
    HaWe
    Gast
    du liest ja bytes, also 8 Eingänge als Bitmuster auf einmal.
    Ist dein Problem, wie du das Byte in ein Bitpattern auflösen kannst, wo jedes Bit einen diskreten Eingang repräsentiert?

    das wäre dann so etwas was du meinst...? (source ist dein Byte, funktioniert aber auch mit int)

    #define bitRead(source, bit) ( ((source) >> (bit)) & 0x01 )

    daneben kann man noch machen:

    #define bitSet (source, bit) ( (source) |= (1UL << (bit)) )
    #define bitClear(source, bit) ( (source) &= ~(1UL << (bit)) )
    #define bitWrite(source, bit, bitvalue) ( bitvalue ? bitSet(source, bit) : bitClear(source, bit) )

  7. #7
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68
    Hallo

    Nein..ich möchte einfach 1 Byte eines MCP23017 auf einen anderen Übertragen...relativ simpel.
    über eine Expander soll der Bus dann ca 10 - 15 Meter überwinden. Auf der Eingabeseite sollen dann 4 MCP sitzen mit der CPU und sender und auf der anderen Seite der Empfänger mit 4 MCP23017 als Ausgabe. also nix wildes. so spare ich mir halte viele Adern.

    Daher der Gedanke immer ein Byte in eine Variable Lesen z.b int data1, int data2..etc und einfach auszugeben.

    vom Programm her wäre das ub.
    data = i2c_read (0x12)..lesen vom MCP..aber irgendwie will er das nicht so machen

    Gruss
    Patrick

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Hast du jetzt schon zwei MCPs auf dem Bus? Falls ja, mit unterschiedlichen HW-Adressen?

Ähnliche Themen

  1. Mcp23017
    Von modtronic im Forum C - Programmierung (GCC u.a.)
    Antworten: 17
    Letzter Beitrag: 20.02.2017, 00:15
  2. MCP23017 mit Python steuern
    Von opc im Forum Raspberry Pi
    Antworten: 4
    Letzter Beitrag: 23.01.2015, 10:43
  3. [ERLEDIGT] MCP23017 - I2C ansprechen ohne Erfolg
    Von JoeM1978 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 07.01.2014, 08:15
  4. "Input" scheint nur beim ersten mal richtig erkannt zu werden?!
    Von Testus2K im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 06.06.2013, 23:09
  5. int2 am avr32 braucht beim input ein zusatzbefehl
    Von robbifan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 17.05.2007, 12:52

Berechtigungen

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

Labornetzteil AliExpress