-
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.
-
Thread
MCP23017 IOCON-Register Problem
#define MCP23x17_GPINTENA 0x04 #define MCP23x17_GPINTENB 0x05 #define MCP23x17_DEFVALA 0x06 #define MCP23x17_DEFVALB 0x07 #define MCP23x17_INTCONA 0x08 #define MCP23x17_INTCONB 0x09 #define MCP23x17_IOCON 0x0A //#define MCP23x17_IOCON 0x0B #define MCP23x17_GPPUA 0x0C #define MCP23x17_GPPUB 0x0D #define MCP23x17_INTFA 0x0E #define MCP23x17_INTFB 0x0F #define MCP23x17_INTCAPA 0x10 #define MCP23x17_INTCAPB
-
Thread
Select MCP23S17
(1 << MSTR) // Master/Slave select | (1 << SPR0); // SPI clock rate select } [/c] MCP23S17 Initialisierung: [c] #include <mcp23s17.h> #include <avr/io.h> void Mcp23s17_Initialize(Mcp23s17 *self, int * sfr_address, int sfr_pin) { self->spi.sfr_address = sfr_address; self
der main() wird Port B auf Ausgang geschaltet: [c] DDRB = 0xFF; [/c] weiters wird dann der MCP23S17 auf Pin PB2 von Port B gebunden: [c] // .. Mcp23s17_Initialize(&mcp, &PORTB, PB2); // .. void Mcp23s17_Initialize(Mcp23s17 *self, int * sfr_address, int sfr_pin) { self->spi.sfr_address
-
Thread
SPI MCP23S09
B'00101000' movwf SSPBUF [/CODE] Ich möchte nur prüfen, ob du die Funktionsweise des MCP23S09 verstanden hast.
Hm, ok du hast den MCP23S09 noch nicht verstanden. Schau dir mal im Datenblatt Fig.1-9 an (Seite 13). Des Weiteren: was bezweckst du mit folgenden Zeilen? [CODE] BANKSEL PORTA bcf PORTA,0 [/CODE]
-
Thread
[Verschenke] MCP23S17 / MCP23S18
Hallo! MCP23S17: 2*8Bit Port-Expander, SPI-Interface MCP23S18: 2*8Bit Port-Expander (Open Collector-Outputs), SPI-Interface Ich habe ein paar absolut neue MCP23S17 und MCP23S18 im DIP-Gehäuse übrig, die
Zu verschenken sind folgende "Pakete" möglichst an Schüler, Studenten, o.ä.: Paket A: 2 Stück MCP23S17 (beide im PDIP-Gehäuse) Paket B: 1 Stück MCP23S17 und 1 Stück MCP23S18 (beide im PDIP-Gehäuse) Schickt mir eine PM mit Eurer Adresse und der Angabe welches Paket ihr möchtet. Ich schicke
-
Thread
AVR als SPI Slave-Peripherie
und Kommunikation dazwischen. Es geht quasi um selbst gemachten Controller so etwa wie MAX7219 oder MCP23S17, nur für eigene Aufgaben bestimmt.
kann man einige Operationen zusammensetzen (z.B. E1=0 + DB-Schieberegister von Z zu Aktiv, wofür MCP23S17 mehrere 3-Bytes-Befehle braucht).
-
Thread
Falsch vermarktete MCP23S17 IO Expander Bords im Umlauf - Aufpassen
222940694980? (der Preis war für 5 Stück, $15) Wie man sich dort überzeugen kann, werden jene als MCP23S17 betitelt: "High-Speed MCP23S17 SPI Serial Interface Bidirectional 16Bit I/O Expander Module" Hier ist der Steckbrief: "Features: • 16-Bit Remote Bidirectional I/O Port: - I/O pins default
ich bis jetzt noch keine MCP23S17 Versionen mit dieser Bord auffinden konnte. Also ist ein Ersatz mit MCP23S17 auch nicht leicht beziehbar. https://ww1.microchip.com/downloads/en/devicedoc/20001952c.pdf https://www.ebay.com
-
Thread
Funktion mit Makro "verbiegen"
Lib abgelegt (uint8_t mcp[16]). Diese kann über ein Makro direkt angesprochen werden [c] #define MCP23S17_PORT0 mcp[0][/c] Nun wird das ganze in der main wie folgt aufgerufen [c] MCP23S17_PORT0 = 1<<ct; [/c] Dieser Teil ist schon einmal so, ich mir das wünsche. Ich hätte aber gerne die Möglichtkeit
rausgeschiftet werden. Dann kannst du den Aufruf ja noch im Macro selbst verbergen.. [c] #define MCP23S17_PORT0(val) mcp23s17_write_hwaddr(hwaddr, outreg, (val)) #define MCP23S17_PIN0() mcp23s17_read_hwaddr(hwaddr, inreg) [/c]
-
Thread
Alternative MCP23S08
Hallo, gibt es eine ähnlich preiswerte Lösung wie den MCP23S08? Mich stört, dass dieser leider nur 4 Adressen pro SS/CS haben kann. Der MCP23S17 ist mir zu groß, bzw. meine erweiterungen brauchen idR nur 8Datenleitungen. Der Baustein sollte mit VCC 3V3 -
Wie wichtig ist dir eigentlich die Geschwindigkeit deiner IO-Ports? Du könntest auch mehrere MCP23S08 hinten einen MCP23S08 hängen. Dann musst du aber die SPI Übertragung selbst Bit für Bit, Signal für Signal steuern/erzeugen.
-
Thread
Attiny 841 mit SPI ein Display ansteuern
Morgen Es gibt ja vom gleichen Hersteller den MCP23 S 17 und den MCP 23017. Einer ist für SPI und der andere für I2C Bus. Wenn ich die Pins vergleiche gibt es viele übereinstimmungen. Das bezieht sich ja auch auf die Register. Sehe ich das richtig?
die Daten empfangen/liefern soll). A0 .. A2 = Adresseinstellung MCP - damit kann man bis zu 8 MCP23S17 mit nur einem CS haben. Die Register sind die gleichen (haste ja schon richtig erkannt).
-
Thread
g++ Makefile Raspberry PI
Debian. Das folgende funktioniert tadellos, wenn ich es direkt eingebe. g++ -o spi -l rt LIB/MCP23S17/mcp23s17.cpp LIB/SPI/spi.cpp LIB/HEIZUNG/heizung_rev05.cpp LIB/AD420/ad420.cpp main.cpp -l bcm2835 -std=c++0x Ist aber eine etwas unschöne Lösung, da sämtliche Dateien neu gebaut werden. Der
Programmieren/INSPEKT/LIB/HEIZUNG/heizung_rev05.cpp:295: undefined reference to `__dso_handle' build/LIB/MCP23S17/mcp23s17.o: In function `__static_initialization_and_destruction_0': /home/pi/Programmieren/INSPEKT/LIB/MCP23S17/mcp23s17.cpp:344: undefined reference to `__dso_handle' collect2: ld returned 1
-
Thread
6-CH 24V/100mA schalten
Mathias O. schrieb im Beitrag #4014396: > Kennt jemand einen MCP23S17 der auch für 24V geht? Nein, wenn der MCP23S17 nicht für 24V geht, geht der nicht dafür. Das steht sogar so im Datenblatt.
Nachdem ich ne Nacht drüber geschlafen hab, hab ich mich jetzt doch für den MCP23S17 entschieden. Und die Treiberstufen mach ich einfach diskret selber. Sind ja nur 6. Die Eingänge kann man ja über Spannungsteiler abfragen oder? Wieso hat der MCP23S17 eigentlich Adresspins? Der
-
Thread
MCP23S17 Bit für Bit auslesen
Schau Dir an was SPI bedeutet und wie es im MCP23S17 realisiert ist. Stichwort: Es werden immer komplette Ports eingelesen, A, B oder A und B Auch das Schreiben erfolgt Byteweise. Falls Du Port A UND Port B als Inputs konfiguriert hast kannst
Wenn man nicht gleich alle 8 manipulieren will. Es kann auch sinnvoll sein, Variablen, byte pro MCP23S17-Register, zu deklarieren und dort aktuelle Zustand von MCP23S17-Port lagern. Dann braucht man nur in var etwas zu ändern und dann per SPI schreiben (außer wenn man Pin-Eingang zu lesen braucht).
-
Thread
Atmel Studio : C-Präprozessor-Befehle einrücken
sehr unübersichtlich aus, wenn C-Präprozessor-Befehle nicht eingerückt werden. [c] #ifdef LCD_MCP23S17_ADDR #if (LCD_MCP23S17_ADDR > 0x07) #error LCD_MCP23S17_ADDR : VALUE > 0x07 #endif #else #define LCD_MCP23S17_ADDR 0x00 #endif [/c] Gibt es hier eine Möglichkeit, dass umzustellen,
nach der Autoformatierung (Strg+K, Strg+D) nicht immer wieder eingerückt wird. [c] #ifdef LCD_MCP23S17_ADDR #if (LCD_MCP23S17_ADDR > 0x07) #error LCD_MCP23S17_ADDR : VALUE > 0x07 #endif #else #define LCD_MCP23S17_ADDR 0x00 #endif[/c]
-
Thread
mcp23s17 input mit langer Kabelverbindung
Hallo zusammen, ich habe 2 MCP23S17 Bausteinen an einen kleinen SPI-Bus an meinen Raspberry angeschlossen, im Testaufbau auf dem Steckboard funktioniert alles prima. Beim produktiven Einsatz übernimmt ein GPIO Port eines MCP23S17
läuft das System zunächst stabil, aber nach einer gewissen Zeit erfolgt ein Register-Reset auf dem MCP23S17; was einen erneuten INIT der MCP23S17 erforderlich macht. Das passiert auch, wenn der Zustand der Fenster nicht verändert wird. Ich bin mir ziemlich sicher, dass es wohl an der Leitungslänge
-
Thread
-MCP23017 - INPUT_PULLUP mit INPUT verbinden
wechseln den Pfeil evtl. nicht erfasst bzw. ich nicht weis wieviel Schaltvorgänge/mode switches die MCP23xxx aushalten (nirgends dokumentiert). Das der MCP23xxx das auf Dauer nicht aushält bzw. die Schaltzeiten zu lang dauern ist natürlich eine persönliche Vermutung.
Thomas M. schrieb im Beitrag #6865506: > Das der MCP23xxx das auf Dauer nicht aushält bzw. die Schaltzeiten zu > lang dauern ist natürlich eine persönliche Vermutung. Quatsch. Den MCP kannst Du viel schneller auslesen, als Du drücken kannst. Wichtig
-
Thread
ESP8266 einbinden und ansteuern
so schreibt Twitter seine Mitglieder, wenn sie ratlos sind. http://wiringpi.com/extensions/spi-mcp23s08-mcp23s17/ Selbst der Portexpander als Slave hat eine SPI Addresse. Du kannst aber auch Hard verdrahten, den EN Pin benutzen. > > Wie war das mit dem Niveau? Es fe lt, stimmt - schon seit
Hard verdrahten, den EN Pin benutzen. > > Du wirst ziemlich suchen müssen, um ähnliches wie beim MCP23S17 zu > findenh, ist einer meiner Lieblinge. Üblich ist es bei SPI nicht, die > werden über /CS selektiert. Wenn 8 Lieblinge verwendet werden, dann sind alle an einer /CS aufgelegt und werden(
-
Thread
MCP23S17 ansteuern
); EICRA |=(0<<ISC21); /* Move interrupts to Boot Flash section */ }[/c] [c]#ifndef MCP23S17_H_ #define MCP23S17_H_ //Deklaration MCP Register /* ' MCP23S17 Register RO=ReadOnly ' Adresse 00 01 IODIR Richtung Port a/b 0=Output 1=Input ' Adresse 02 03 IPOL Polarität 1=umgekehrt
response } while(by==DUMMY_WRITE); [/c] Kommt mir bekannt vor;) Nur mal zum Verständnis: Der MCP23S17 ist *keine* SD Karte!
-
Thread
MCP23S18 I/O Expander
sehe ich da nicht wirklich durch. Vieleicht hat auch schon jemand mit diesem Baustein (I/O Expander) MCP23S18 erfahrungen gemacht. Alles was ich möchtes ist lediglich An PORTA etwas ausgeben also z.B. 0x04. Schon alleine die Register Adressen sind nirgends erklärt da bin ich aber soweit das ich das Register
Kondensatoren hast du auch dran? > > Viele Grüße > > Jochen Ehm am Controller ja an dem MCP23S18 wäre mir neu ;)
-
Thread
MCP23S17 kaskadieren
Hallo, ich bin aus dem Datenblatt des MCP23S17 nicht so richtig schlau geworden. Bislang habe ich nur mit TLC5916/7 oder den HC595 Schieberegistern gearbeitet. Diese konnte ich problemlos kaskadieren. Nun war ich auf der Suche nach einem Schieberegister mit I/Os. Hatte mir vorab auch den MCP23S08/9, diese haben jedoch den Nachteil, dass ich diese nur bei Großhändlern im DIP bekomme. Nun also der MCP23S17. Aus den AppNotes geht nicht heraus, wie ich mehrere ICs miteinander verbinde.
-
Thread
Fleury LCD-Library plus mjkdz Port Expander?
cbi(PORT(db7_Port),db7_Pin); PORT(db7_Port)|=(gbi(lcdbyte,7))<<db7_Pin; #endif #if use_mcp23s17_lcd //mcp23s17A_send(0x12,lcdbyte); hwSpiA(0x12,lcdbyte); #endif #if use_twilcd64x || use_twilcd64 i2c_start_wait(64); i2c_write(lcdbyte); // i2c_stop(); #endif #if use_twilcd72x
i2c_write(lcdbyte+WERTpinE); // i2c_write(lcdbyte); // i2c_stop(); #endif #if use_mcp23s17_lcd /*mcp23s17A_send(0x12,lcdbyte); mcp23s17A_send(0x12,lcdbyte+WERTpinE); mcp23s17A_send(0x12,lcdbyte);*/ hwSpiA(0x12,lcdbyte); hwSpiA(0x12,lcdbyte+WERTpinE); hwSpiA(0x12,lcdbyte); #endif
-
Thread
SPI Bustreiber 74HC125
Ausgang (MISO) über das Protokoll gesteuert aktiviert, ist > es kein Standard-SPI. So arbeiten z.B. MCP23S17 von Microchip. Die haben drei Adresselinien wie auch MCP23017 für I2C. Deshalb können auf einer ~SS - Linie bis acht MCP23S17 sitzen. MCP23S17 brauchen immer 3 Bytes: zuerst wird Adresse übertragen, dann Registeradresse innerhalb von MCP23S17, und danach wird Byte geschrieben oder gelesen. Microchip nennt das auch "SPI".
-
Thread
LED Bar am I/O Expanderbaustein MCP23S17
und Anregungen wäre ich sehr dankbar. Hier noch mal die verwendeten Bausteine: I/O Expander MCP23S17 https://docs.rs-online.com/0eb7/0900766b813214d0.pdf 10 Segment LED Bar Array https://docs.rs-online.com/bfff/A700000006787993.pdf
angegeben. Die typen leuchten so ab ca 4mA, können aber auch mit 30mA Betrieben werden was dann den MCP23S17 "Rösten" würde ;-)
-
Thread
MCP23S17, wo müssen Widerstände hin
Hallo, ich möchte mehrere MCP23S17 verknüpfen. Das Internet (Google) gibt mir da nur sporadisch Infos zu. In den meisten Fällen wird A0 - A2 nur auf GND gelegt (Adresse 0). Selten bis garnicht, wie man die anderen Adressen ansteuert
-
Thread
SPI - MCP23S17 - Adresspins
DeviceDoc/20001952C.pdf (Seite. 21) Kann man die Hardwarekodierung ausschalten.. [c] #define MCP23S17_ADDR 0 #define MCP23S17_OPCODE ( 1<<6 | ( 0x0E & ( MCP23S17_ADDR << 1 ) ) ) [/c] Bei MCP23S17_ADDR > 3 hört die Kommunikation auf. Mache Ich da irgendwas falsch? Also 0 , 1 , 2 , 3
Ich würde mir es ja eher so machen: > #define MCP23S17_OPCODE (0x40|(MCP23S17_ADDR<<1)) *ohne Gewähr*
-
Thread
2 Schieberegister am selben SPI Bus
Hat das eigentlich einen Grund, warum Du keinen MCP23S08 (8 Bit) bzw MCP23S17 (16 Bit) nimmst? Das sind echte SPI-Devices, und zwar ziemlich flexible. Und sie kosten auch nicht die Welt. fchk
Frank K. schrieb im Beitrag #3465621: > Hat das eigentlich einen Grund, warum Du keinen MCP23S08 (8 Bit) bzw > MCP23S17 (16 Bit) nimmst? Das sind echte SPI-Devices, und zwar ziemlich > flexible. Und sie kosten auch nicht die Welt. Ich kannte diesen IC nicht, deshalb... Danke für den Hinweis
-
Thread
Ports eines GPIO expanders verbinden
Max schrieb im Beitrag #6177513: > GPIO expander (z.B MCP23S18), welchen ich über i2c steuere Wieviele solcher Port-Expander kannst du an 1 I2C betreiben? Wieviele unterschiedliche Adressen kannst du einstellen? Ich würde da einfach die "übliche" Schieberegisterlösung
schrieb im Beitrag #6177513: > Für das neue Projekt möchte ich aber jetzt einen GPIO expander (z.B > MCP23S18), welchen ich über i2c steuere, verwenden. Lothar M. schrieb im Beitrag #6177908: > 2. mehrere davon Ausgänge sind, aber den selben Pegel ausgeben. Bei Ports mit Open-Drain Ausgang (MCP23S18
-
Thread
MCP23S17 als DIL Version wird teuerer warum?
mögen bitte von Antworten absehen. Den übrigen Antworten kann ich zumindest entnehmen, daß der MCP23S17 noch nicht abgekündigt ist, aber wohl immer seltener wird, da THT. Biliger wird er wohl nicht mehr. Am besten "Megen" bunkern! mfG
es vor Jahren klug gewesen wäre NE567, XR2206, XR2209, 8038, AD584, TSA5511, PCF8574, MCP23017 und MCP23S17 zu horten oder ob man froh sein sollte, es nicht gemacht zu haben. Werde mich mal an "Supersaurus" wenden. Der paßt schon nicht mehr aufs Bild.
-
Thread
probleme mit mcp23s17
Hallo, ich habe 9 Buttons an einen mcp23s17 angehängt, und möchte jetzt auslesen welcher button gedrückt wurde. die buttons hängen an porta[0-7] und portb[0] und werden bei drücken auf low gezogen. aus diesem Grund würde ich gerne einen
-
Thread
Frage zur Schaltzeit vom 74HC138N
jeden Eingang von HCS165 braucht man externe Pullup-Widerstand. Es gibt noch eine Möglichkeit: MCP23S17. Dann hat man 16 Eingänge mit Pullup, die auch über SPI gelesen sein können. Nachteil: ein Byte mehr bei Datenaustausch mit Mikrocontroller und Notwendigkeit, MCP23S17 initialisieren. D.h. etwas
ich nur digitale Varianten. Alle die oben beschrieben: als Matrix, über Schieberegister und über MCP23S17, das habe ich in meinen Platinen benutzt. Es gibt noch HT16K33, I2C LED-Treiber mit Möglichkeit, bis 13x3 Tasten Matrix abzufragen und entprellen. 30 St. habe ich in meinem Lager, aber noch nie
-
Thread
MCP23S17 Daten lesen
low, dann den Auslesebefehl Senden Werte abfragen CS auf High. Hier meine Headerdatei: [c] //MCP23S17.h #ifndef __MCP23S17_H #define __MCP23S17_H //Deklaration MCP Register /* ' MCP23S17 Register RO=ReadOnly ' Adresse 00 01 IODIR Richtung Port a/b 0=Output 1=Input ' Adresse 02 03
while(! ( SPI_STATUS_REGISTER & (1<<SPI_STATUS_IF_BIT) ) ); } #endif [/c] und die passende MCP23S17.c Datei [c] //MCP23S17.C #include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> #include <avr/eeprom.h> #include <avr/delay.h> #include <string.h> #include "mcp23s17.h" void
-
Thread
Frage zu MCP23S17 mit internem PullUp-Widerstand
Worte zum Projekt falls es jemanden Interessiert. Ich versuche eine Platine zu entwerfen auf der 3 MCP23S17 4 ULN2803A steuern.(Ein MCP23S17 ist für das Vergeben der Adressen, sowie für das Reseten und Interrupten der anderen Beiden MCP23S17 gedacht. Auch bringt er ein paar LED's zum leuchten.) Da
IC", direkt mit dem Adressport-0 des zweiten MCP23S17. Im Programm definiere ich den GPA0 als Input und setzte das Bit für den PullUp-Widerstand. Nun müsste der Adressport-0 ein definiertes High-Signal haben. Wenn ich das Bit für den PullUp-Widerstand
-
Thread
MCP23S17 Porterweiterung SPI
Hallo Leute, wie steuere ich einen MCP23S17 von BASCOM aus an. Folgende Schaltung ATMEGA 32 mit SD-Karte (SPI-Hard). Nun will ich die vorhandenen Ports um 32 Ausgänge und 16 Eingänge erweiter, da SPI glaube ich da ganz gut für geeignet
Nun ich will folgendes wissen. Wie steuere ich den MCP23S17 per Bascom an? Wie lese ich die Daten aus und in den Portexpander. Wie setzte ich die Interruptausgänge? Habe erste Gehversuche gemacht, klappt aber nicht. Gruß, Stephan
-
Thread
ESP8266 - Was macht man bei zu wenigen I/Os?
Einfach einen SPI-Portexpander wie den MCP23S17 nehmen. GPIO0 kannst Du als CS-Pin benutzen, nach dem Booten ist der frei, machst Du ja mit GPIO2 auch schon.
Hallo, Horst schrieb im Beitrag #6086707: > Einfach einen SPI-Portexpander wie den MCP23S17 nehmen. GPIO0 > kannst Du > als CS-Pin benutzen, nach dem Booten ist der frei, machst Du ja mit > GPIO2 auch schon. Das ist auch mein Favorit ist auch der MCP23S17. Prinzipiell kann man
-
Thread
suche 8-bit serial input High-Level-Load shiftregister
Schau Dir mal den MCP23017 und MCP23S17 von Microchip an, haben jeweils zwei bidirektionale 8-Bit Ports mti jeweils einem konfigurierbaren Interrupt und Ansteuerung über I2C (MCP23017) oder SPI (MCP23S17). Betriebsspannung geht von 1.8V
Sascha W. schrieb im Beitrag #3066790: > Schau Dir mal den MCP23017 und MCP23S17 von Microchip an, haben jeweils Er kann die Programmierung nicht ändern. Allerdings: Ich kann mir nicht wirklich vorstellen, dass seine Black-Box du unten einen Support für 2 Schieberegister
-
Thread
Suche Schieberegister mit 6 Ausgängen und 2 Eingängen, ähnlich 74HCxxx
MCP23S17 (16 IOs) oder MCP23S09 (8 IOs)? http://ww1.microchip.com/downloads/en/DeviceDoc/22121b.pdf Musst du Interrupt ungenutzt lassen, CS dauerhaft auf GND, ... mit drei Pins bist du dabei. Oder
nur 2. Denke daran, dass der PCF8574 nur nach Ground treiben kann. Nach Vcc kann er nur µA. Der MCP23S09 (SPI)/MCP23009 (I2C) kann gleichermaßen nach Vcc und nach GND treiben, kann 25mA per Pin und 200mA insgesamt. Das ist also die bessere Wahl. fchk
-
Thread
Suche IC: DO mit Überwachung und Schutzfunktionen
Blödsinn, 10 MHz, also würde der MCP reichen, halt der SPI Typ: MCP-23S17
halt 4 von den MCP. Der MCP23017 ist für I2C (dürfte aber mit 1,3MHz zu langsam sein) und der MCP23S17 ist für SPI und kann 10MHz.
-
Thread
MCP23x17 und Adresse >=4
fehler aufmerksam zu werden, daher erstmal hier gleich der hinweis, der ähnliches problem hat. der mcp23s17 (spi) genauso wie der mcp017 (i²c) wenn er ab device 4 adressiert wird, muss separat explizit angesprochen werden - allerdings gilt das angeblcih für neuere chips nicht mehr und der fehler wurde
ID=3... A2: 0 (GND ) A1: 1 ( pull up ) A0: 1 ( pull up ) ------- hw: 3 lässt sich der mcp23 erst mal ansprechen, standard ist IOCON.HAEN = 0 heist, alles was unter 4 ist wird angesprochen. wäre er A2: 1 ( pull up ) A1: 0 ( GND ) A0: 0 ( GND ) ------- hw: 4 wäre es - im gegensatz
-
Thread
Frage zu SPI und MCP23S09
Grafik-LCD von einer I2C Ansteuerung mit dem MCP23008 von Microchip auf eine serielle Ansteuerung mit dem MCP23S09 per SPI umstellen. Angeschlossen sind die /CS Leitungen jeweils an PC2 und PC3 eines ATMega644, der mit 8Mhz internem Takt bei 3,3V läuft. Das Display ist an 5V angeschlossen mit zwei MCP23S09
-
Thread
Daisy Chain MCP23S17
Hallo Thomas, du meinst sicher den MCP23O17... LG Michi
-
Thread
Schieberegister 595 hardwaremäßig löschen
richtigen Pin nimmt. GPIO4 und 5 gehen immer. Ansonsten eben keinen '595 nehmen sondern z.B. einen MCP23S17 am Hardware-SPI des ESP. Gruß aus Berlin Michael
einen port expander, SPI oder I2C. PCF8574 wär ne günstige wenn auch langsamere alternative zum MCP23x17.
-
Thread
Probleme beim Auslesen zweier MCP23S17 mit ATmega2560
Ich habe zwei MCP23S17, jeweils die Eingänge 0-7 von GPIOA und die Eingänge 0-1 von GPIOB beschaltet. Die Eingänge 2-7 von GPIOB sind somit ungenutzt und liegen auf Masse. Als Mikrocontroller verwende ich einen ATmega2560
kein RESET, so könnte er nicht programmieren. So sollte hier alles in Ordnung sein. Wenn Reset von MCP23S17 nicht angeschlossen ist, dann arbeitet POR. Wilfried S. schrieb im Beitrag #6089005: > Ich vermute, dass entweder der SPI-Bus nicht sauber arbeitet So sieht das aus. Die Wege zu MCP23S17
-
Thread
Variable Zuordnung
i<5; i++) { char* Ex = "Expander"; strcat(Ex,i); char* Ad = "Adresse"; strcat(Ad,i); MCP23S17 Ex = MCP23S17(spi, p20 , Ad ); } So sollte es Aussehen. Funktionieren wird es natürlich nicht, jetzt kommt Ihr ins spiel ich benötige einen Schupser zur Lösung. besten Dank im voraus
Zeichenkette sondern ein Integer. Danach deklarierst du eine neue Variable mit dem gleichen Namen (MCP23S17 Ex), das ist nicht zulässig. Variablen brauchen eindeutige Namen. Ich würde Dir empfehlen, alle Compiler Warnungen zu aktivieren (Compiler Option -Wall) und diese auch zu zeigen, wenn du dazu