Skip to content

C1612 IO Erweiterung

RealMerlin edited this page Jan 23, 2019 · 12 revisions

C1612-Controllerboard IO-Erweiterung (ports-Device)

Verwendete Hardware: MCP23017-E/SP, 16 Bit I/O-Port-Expander mit I2C Schnittstelle

Es gibt zwei Board-Typen:
  • A: IO-Exp32-Board mit zwei MCP23017 und somit 32 Aus- oder Eingaben
  • B: IN-Exp64-Board mit vier MCP23017 und somit 64 Eingaben

Ein I2C-Strang hat maximal 8 MCP23017-IC's (= 16 MCP23017-Ports).

Die Boards können als Eingaben oder Ausgaben konfiguriert werden:
  • MCP23017-IC's mit den Adressen 0,1,2,3 werden als Ausgaben initialisiert.
  • MCP23017-IC's mit den Adressen 4,5,6,7 werden als Eingaben initialisiert.
Ausgänge:
  • Mit A: IO-Exp32-Board durch A2=0, A1=0 (0: switch ON) -> Adressen 0,1
  • Mit A: IO-Exp32-Board durch A2=0, A1=1 (0: switch ON) -> Adressen 2,3
Eingänge:
  • Mit B: IN-Exp64-Board durch A2=1 (Jumper nicht gesteckt) -> Adressen 4,5,6,7
  • Mit A: IO-Exp32-Board durch A2=1, A1=0 (0: switch ON) -> Adressen 4,5
  • Mit A: IO-Exp32-Board durch A2=1, A1=1 (0: switch ON) -> Adressen 6,7

A: IN/OUT-Erweiterung für den Hutschienengehäuseboden (Erweiterung um 32 Ein-/Ausgänge)

Hier der Schaltplan: io-expander32_eeprom_final_int.pdf

B: IN-Erweiterung für den Hutschienengehäusedeckel (Erweiterung um 64-Eingänge)

Hier der Schaltplan: io-expander64-4-osv.pdf

in-erweiterung_64eingaenge

Pinbelegung/Index-Belegung (Port-Index 16 ... 79). Die MCP23017-IC's liegen unter der Wannensteckerstiftleiste (Ausrichtung der Platine wie im Bild):

  |--- Adr 7, Port B ---| |--- Adr 6, Port B ---|    |--- Adr 5, Port B ---| |--- Adr 4, Port B ---|
+-----------------------------------------------------------------------------------------------------+
| 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64    47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32  | 1 
| 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48    31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  | 2 
+-----------------------------------------------------------------------------------------------------+
  |--- Adr 7, Port A ---| |--- Adr 6, Port A ---|    |--- Adr 5, Port A ---| |--- Adr 4, Port A ---|
      ->A-IC4-B<-		    ->A-IC3-B<-		        ->A-IC2-B<-	        ->A-IC1-B<-
      ->A-IC4-B<-		    ->A-IC3-B<-		        ->A-IC2-B<-	        ->A-IC1-B<-   
      ->A-IC4-B<-		    ->A-IC3-B<-		        ->A-IC2-B<-	        ->A-IC1-B<-
      ->A-IC4-B<-		    ->A-IC3-B<-		        ->A-IC2-B<-	        ->A-IC1-B<-
      ->A-IC4-B<-		    ->A-IC3-B<-		        ->A-IC2-B<-	        ->A-IC1-B<-
      ->A-IC4-B<-		    ->A-IC3-B<-		        ->A-IC2-B<-	        ->A-IC1-B<-
      ->A-IC4-B<-		    ->A-IC3-B<-		        ->A-IC2-B<-	        ->A-IC1-B<-
      ->A-IC4-B<-		    ->A-IC3-B<-		        ->A-IC2-B<-	        ->A-IC1-B<-

Sollte ein MCP23017-IC mit der Initialisierung beim Systemstart des C1612-Controllers als nicht erreichbar gemeldet werden, so kann mit der obigen Adressbelegung das ggf. defekte IC gezielt ausgetauscht werden.

Konfigurationsmöglichkeiten der 32er IN/OUT Erweiterung

Die Adresse der MCP23017 IC's wird über die Ports A0, A1 und A2 bestimmt:

  • Alle drei auf GND (Binär 000) = Adresse 0
  • A0 von VCC und die anderen auf GND (Binär 001) = Adresse 1

Die Funktion der Ports wird dann in der Konfiguration bestimmt:

  • set expander0 0 bedeutet alle 32 Ports sind als Output geschaltet
    • Adresse 0 GPA0-GPA7 = OUT (Port12 - Port19)
    • Adresse 1 GPA0-GPA7 = OUT (Port20 - Port27)
    • Adresse 0 GPB0-GPB7 = OUT (Port35 - Port28)
    • Adresse 1 GPB0-GPB7 = OUT (Port43 - Port36)
  • set expander0 1 bedeutet 24 Ports sind als Output geschaltet und 8 als Input
    • Adresse 0 GPA0-GPA7 = IN (Port16 - Port23)
    • Adresse 1 GPA0-GPA7 = OUT (Port12 - Port19)
    • Adresse 0 GPB0-GPB7 = OUT (Port27 - Port20)
    • Adresse 1 GPB0-GPB7 = OUT (Port35 - Port28)
  • set expander0 2 bedeutet 16 Ports sind als Output geschaltet und 16 als Input
    • Adresse 0 GPA0-GPA7 = IN (Port16 - Port23)
    • Adresse 1 GPA0-GPA7 = IN (Port24 - Port31)
    • Adresse 0 GPB0-GPB7 = OUT (Port19 - Port12)
    • Adresse 1 GPB0-GPB7 = OUT (Port27 - Port20)
  • set expander0 7 bedeutet 8 Ports sind als Output geschaltet und 24 als Input
    • Adresse 0 GPA0-GPA7 = IN (Port16 - Port23)
    • Adresse 1 GPA0-GPA7 = IN (Port24 - Port31)
    • Adresse 0 GPB0-GPB7 = IN (Port39 - Port32)
    • Adresse 1 GPB0-GPB7 = OUT (Port12 - Port19)
  • set expander0 15 bedeutet alle 32 Ports sind als Input geschaltet
    • Adresse 0 GPA0-GPA7 = IN (Port16 - Port23)
    • Adresse 1 GPA0-GPA7 = IN (Port24 - Port31)
    • Adresse 0 GPB0-GPB7 = IN (Port39 - Port32)
    • Adresse 1 GPB0-GPB7 = IN (Port47 - Port40)

Die Nummerierung der Ports:
Bei base 128 beginnen die Out Ports immer bei 12 und die Input Ports immer bei 16

EDS Konfiguration (Beispiel 1)

Konfiguration am C1612-Controllerboard mit einer 32er-Out-Erweiterung:

create ports
set base 128       # Umwandlung auf Ingos Zaehlung der Pins
set expander0   0  # MCP-IC mit Adr 0 und 1: 32er Out-Erweiterung  ist "aus"
set expander1 255  # MCP-IC mit Adr 2 und 3: 32er Out-Erweiterung existiert nicht
set expander2 255  # MCP-IC mit Adr 4 und 5: 64er Teil a) IN-Erweiterung existiert nicht
set expander3 255  # MCP-IC mit Adr 6 und 7: 64er Teil b) IN-Erweiterung existiert nicht
exit

EDS Konfiguration (Beispiel 2)

Konfiguration am C1612-Controllerboard mit einer 64er-IN-Erweiterung:

create ports
set base 128       # Umwandlung auf Ingos Zaehlung der Pins
set expander0 255  # MCP-IC mit Adr 0 und 1: 32er Out-Erweiterung existiert nicht
set expander1 255  # MCP-IC mit Adr 2 und 3: 32er Out-Erweiterung existiert nicht
set expander2  15  # MCP-IC mit Adr 4 und 5: 64er Teil a) IN-Erweiterung ist "an"
set expander3  15  # MCP-IC mit Adr 6 und 7: 64er Teil b) IN-Erweiterung ist "an"
exit

Hinweis

Ist ein ports-Device konfiguriert, aber am Controllerboard nicht angeschlossen, so rebootet das Controllerboard und ist auch nur mit Angabe des Boardtyps erreichbar.

Schaltpläne

eagle-io-Expander.zip

Clone this wiki locally