-
Notifications
You must be signed in to change notification settings - Fork 6
C1612 IO Erweiterung
Verwendete Hardware: MCP23017-E/SP, 16 Bit I/O-Port-Expander mit I2C Schnittstelle
- 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).
- 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.
- 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
- 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
Hier der Schaltplan: io-expander32_eeprom_final_int.pdf
Hier der Schaltplan: io-expander64-4-osv.pdf
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.
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
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
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
Ist ein ports-Device konfiguriert, aber am Controllerboard nicht angeschlossen, so rebootet das Controllerboard und ist auch nur mit Angabe des Boardtyps erreichbar.
-
Tutorials
-
FAQ
-
Referenz
- Konzepte
- Hardware
- Software/PC
- Software/Firmware
- Patches
- EDS - EEPROM Data System
- HCAN Protokoll
- HCAN Protokoll - Referenz