Im Forum und im Wiki
-
Thread
SPI mit Attiny 841 und MCP23S17
[i]); // MCP23S17_byteWrite(i,IODIRB, mpxdirb[i]); // MCP23S17_byteWrite(i,OLATA, statusa[i]); // MCP23S17_byteWrite(i,OLATB, statusb[i]); // } MCP23S17_byteWrite(0,IODIRA, 0 ); // PORT_a auf Ausgang
_byteWrite(0,OLATB, 0); // | MCP23S17_byteWrite(0,IOCON, SEQOP | HAEN ); // MCP23S17_byteWrite(1,IOCON, HAEN ); // MCP23S17_byteWrite(2,IOCON, HAEN ); // MCP23S17_byteWrite(2,IODIRA, mpxdira[2]); // Direction"A" // MCP23S17
-
Thread
kennt jemand sich aus mit MC23017 IO-Board
Arduino-Library https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library/blob/master/examples/mcp23xxx_blink/mcp23xxx_blink.ino
LED_PIN 0 // MCP23XXX pin LED is attached to // only used for SPI //#define CS_PIN 6 // uncomment appropriate line //Adafruit_MCP23X08 mcp; Adafruit_MCP23X17 mcp; void setup() { Serial.begin(9600);
-
Thread
MSP23S17 Adresspins Verhalten
temp sbi MCP23S17_SS_PORT, MCP23S17_SS ret mcp23s17_rd: ; temp= geles.Daten, temph=slave address, temp3=IC-Reg cbi MCP23S17_SS_PORT, MCP23S17_SS lsl temph ori temph, (1<<MCP23S17_RW)|(1<<6) ;0b0100xxx1
3 =temp3: IC-reg-adr ldi temph, @2 ldi temp3, @3 rcall mcp23s17_regzeigen .endm MCP23S17_REGLCD 1,8, 0, MCP23S17_IOCON MCP23S17_REGLCD 1,0, 0, MCP23S17_OLATA MCP23S17_REGLCD 0,8, 0, MCP23S17_OLATB [/avrasm] Auch A2 wirkt. Nur A0 und A1 ohne
-
Thread
Problem MCP23S17 und avr-gcc
data) { SPDR = data; while(!(SPSR & (1<<SPIF))); return SPDR; } [/c] [c] /* * mcp23s17.h */ #ifndef MCP23S17_H_ #define MCP23S17_H_ #include "spi.h" #define MCP_OPCODE 0x40 #define MCP_WRITE 0x00 #define MCP_READ 0x01 #define MCP_BANK 0x40 #define
hwaddr, uint8_t reg, uint8_t data); uint8_t mcp_read(uint8_t hwaddr, uint8_t reg); #endif /* MCP23S17_H_ */ /* * mcp23s17.c */ #include "mcp23s17.h" void mcp_write(uint8_t hwaddr, uint8_t reg, uint8_t data) { SPI_PORT &= ~(1<<SPI_SS); spi_transfer(MCP_OPCODE | ((hwaddr<<1
-
Thread
MCP23S17 (RPi) per Python schalten
/gpio-mcp23s08.c (allerdings weis ich nicht, wie man den benutzt..) [EDIT] Es gibt auch eine fertige Python-Bibliothek: http://wiringpi.com/extensions/spi-mcp23s08-mcp23s17/
der Thread schon recht alt sein sollte. Ich habe ein Pythonmodul bei PyPi eingecheckt, das einen MCP23S17 abstrahiert: https://pypi.python.org/pypi/RPiMCP23S17/0.2.2
-
Thread
120 I/Os an Raspberry Pi
Hi! Mit einem externen Atmega wäre der MCP23S17 auch geeignet. 16 IOs pro IC, durch Adressen bis zu 8 Stück an einem CS. Gruss, Micha
Micha ... schrieb im Beitrag #2891048: > Mit einem externen Atmega wäre der MCP23S17 auch geeignet. > 16 IOs pro IC, durch Adressen bis zu 8 Stück an einem CS. Ich Doof habe das Chip-Select voll vergessen, danke. Der MCP23S17 gefällt mir sehr gut! Robert L. schrieb im Beitrag
-
Thread
I2C Unterschied einfacher LCD
Noch eine Option: statt I2c_Porterweiterung SPI-Porterweiterung zu nehmen. So sind z.B. MCP23008 und MCP23S08, genau wie auch MCP23017 und MCP23S17, beinahe identisch, nur bei ersten (ohne S) I2C, bei den zweiten (mit S) SPI-Interface. Mit SPI geht es deutlich schneller, als mit I2C. Jörg R. schrieb
als SPI, es sei denn, in System gibt es andere SPI-Geräte. Graphische 128x64 habe ich selber mit MCP23S17 gemacht. So schnell ist das auch nicht: bei jedem Befehl braucht MCP23S17 3 bytes, und für 1 byte Daten für 128x64 sollten mehrere Befehle kommen: 1. Daten auf Datenport. 2. Steuerung mit E=0
-
Thread
SPI - Port-Expander (viele)
/CS hängen können. Man könnte mit einem 74HC138 aus 3 IO-Pins 7 * /CS erzeugen, also bis zu 28 * MCP23S08 ansteuern.
Orlegel schrieb im Beitrag #4994301: > Was du schreibst ist nicht richtig, der MCP23S08 hat nur 2 > Adressleitungen. Sorry, stimmt, ich bin im Datenblatt beim Bild vom MCP23008 hängengeblieben. Der MCP23S17 hat aber definitiv 3.