Portál AbcLinuxu, 10. května 2025 09:20

Dotaz: Expander MCP23017

19.1.2016 13:05 Mirek.K
Expander MCP23017
Přečteno: 451×
Odpovědět | Admin
Zdravím.

Co dělám špatně?

Expander mam na adrese 0x20.

Vše mi funguje, jen nemohu přípojit Pull-Up pdpory.

Pro GPA připojime všechný vnitřní Pull-Up odporu sudo i2cset -y 1 0x20 0x0C 0xFF

Pro GPB připojime všechný vnitřní Pull-Up odporu sudo i2cset -y 1 0x20 0x0D 0xFF
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.1.2016 13:44 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Expander MCP23017
Odpovědět | | Sbalit | Link | Blokovat | Admin
Máš nastavenou správnou banku?
Intel meltdown a = arr[x[0]&1]; karma | 帮帮我,我被锁在中国房
19.1.2016 14:07 Mirek.K
Rozbalit Rozbalit vše Re: Expander MCP23017
Odpovědět | | Sbalit | Link | Blokovat | Admin
banku?

Nechápu, nejsem programátor ani elektrikář.

V datasetech se moc nevýznám ale na netu jsem se dočet že je zapnu na adresach 0x0C a 0x0D a všechny bity a 1 je 0xFF

A tu je info také

http://www.astromik.org/raspi/17.htm

Pro výše uvedený příklad s portem "B" nastaveným všemi piny na vstup, se vnitřní Pull-Up odpory připojí takto:

sudo i2cset -y 0 0x20 0x0D 0xFF

19.1.2016 14:34 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Expander MCP23017
Nechápu, nejsem programátor ani elektrikář.
OK, ale jestli s tím expanderem budeš chtít v budoucnosti dělat něco víc než blikat podle návodu z webu, tak si budeš muset aspoň přečíst datasheet :-/. A základní elektrařina by se měla hodit taky ;-).

Pro základní startovní stav, potřebuju vědět odpovědi na:

Ten čip podporuje dva "módy" adresace, při jednom jsou ty PU registry na 0xc/0xd a při druhým jinde (nastaveno pomocí IOCON.BANK). Jestli jedeš podle toho návodu, tak by to snad mělo bejt OK.

Na co vlastně potřebuješ ty pull-up? Neboli: jaké zapojení používáš? Přesně to samé, co na tom webu? S těma externíma 100k odporama na tlačítkách to teda funguje bezchybně? Na portu pro LEDky jsou ti pull-upy zbytečné. 100k je moc na rozsvícení LED a jsi nucen dát externí (teda asi 1k podle návodu) a pak jsou ty interní zbytečné.
19.1.2016 14:40 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Expander MCP23017
Podle dokumentace musíš předtím ale nastavit bit 7 registru IOCON na 0.
i2cset -y 1 0x20 0x0A 0x00 -m 0x80
i2cset -y 1 0x20 0x0C 0xFF
i2cset -y 1 0x20 0x0D 0xFF 
tedy alespoň teoeticky, nepoužívám i2cset ;)

jinak jsou totiuž registry jinde vize tabulka TABLE 1-5: CONTROL REGISTER SUMMARY (IOCON.BANK = 1) a TABLE 1-6:CONTROL REGISTER SUMMARY (IOCON.BANK = 0) odkazované dokumentace.

místo 0x0C pro "A" musel použít 0x06 a místo 0x0D pro "B" 0x16 (o 0x10 víc).
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
19.1.2016 14:50 Mirek.K
Rozbalit Rozbalit vše Re: Expander MCP23017
Odpovědět | | Sbalit | Link | Blokovat | Admin
Používám s ebay 8 rele modul na arduinu.

Relatka jsou seplé, když je na pinech L.

Na arduinu musím první připojít na piny Pull-Up odpory a pak teprve piny přepnout jako výstup.

Pokud odpory nepřipojím, při přepnutí pinu jako výstup se všechny relé sepnou.

Tentýž problém u expandéru.

Pokud přepnu expander jako výstup, mam na pinech L a všechny rele seple.

Mam na pinech napíchané sondy.

Pokud připojím Pull-Up, mělo by se na výstupech oběvít H, ne?
19.1.2016 15:32 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Expander MCP23017
Pokud přepneš expander na výstup, tak jsou ty pull-up irelevantní (jedině, že by uměl třeba open drain, což jsem myslel s těma LED ... ale teď když jsem se koukal do datasheetu, tak to expander neumí ... Arduino možná jo, to by pak dávalo smysl).

Pull-upy jsou pro to, aby nebyl vstup zapojenej "ve vzduchu" a chytal rušení. Pokud je pin jako výstup, tak je buď natvrdo uzemněnej do GND nebo natvrdo připojenej na VCC (+- ztráty).

Proto se logickýmu signálu říká hard nula nebo hard jednička a pull-upu weak jednička (a push-downu weak nula). Při zapojení hard a weak vyhrává napěťovou úroveň ten silnější z nich.

Pokud chceš na výstupu log. L nebo logickou H, tak prostě nastav ten pin přes OLAT (nebo GPIO?) registr. Po resetu čipu je podle datasheetu na výstupu tvrdá L.
19.1.2016 18:59 xorly
Rozbalit Rozbalit vše Re: Expander MCP23017
To se děje kvůli tomu, že AVR sdílí jeden registr pro ovládání pull-up odporů(vstupy) a pro nastavování výstupní úrovně(výstupy). Obecně jsou Pull-up odpory při výstupním režimu pinu neaktivní.
19.1.2016 15:50 Mirek.K
Rozbalit Rozbalit vše Re: Expander MCP23017
Odpovědět | | Sbalit | Link | Blokovat | Admin
Po resetu je to jako vstup.

Pokud ho přepnu na výstup a pak hned popřepinam piny na H, stejnak při rebootu ty relatka procvaknou.
19.1.2016 16:31 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Expander MCP23017
Aha, takže tobě jde o ten přechodovej jev mezi přenastavením směru pinu. Relátka jsou rozeplý při zapnutí napájení a před tím, než spustíš program pro expandér? Pokud jsou rozeplý, tak by je prostá změna směru neměla rozhodit a případné sepnutí by bylo tím, že je na výstupu prostě tvrdá L (nehledě na měkký H pullup).

Zkus nejdřív nastavit H hodnotu pro výstup a až pak přepnout směr pinu? Hodnota pro výstup by nemusela být závislá na nutnosti nakonfigurovat pin na výstup.

P.S. Kdyžtak reaguj na tenhle post a nezačínej nový vlákno (ať v tom nemá abclinuxu brajgl).
19.1.2016 17:37 Mirek.K
Rozbalit Rozbalit vše Re: Expander MCP23017
Když mi sudo i2cset -y 1 0x20 0x01 0x00 přes terminál přepne všech piny na výstup.

Poč to nefunguje, když to dam do rc.local?

Kam s tým?

19.1.2016 17:48 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Expander MCP23017
A když to dáš i se správnou cestou k tomu i2cset?
19.1.2016 18:16 Mirek.K
Rozbalit Rozbalit vše Re: Expander MCP23017
To bych tu cestu musel znat :) Jdu hledat.
19.1.2016 18:24 Mirek.K
Rozbalit Rozbalit vše Re: Expander MCP23017
sudo /usr/sbin/i2cset -y 1 0x20 0x01 0x00

Také nic
19.1.2016 18:52 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Expander MCP23017
/etc/rc.local se spouští pod rootem, k čemu sudo?
19.1.2016 18:52 pavele
Rozbalit Rozbalit vše Re: Expander MCP23017
Ty dáváš sudo do rc.local? Ten se spouští pod uživatelem root automaticky.
19.1.2016 19:34 Mirek.K
Rozbalit Rozbalit vše Re: Expander MCP23017
On bude problém jinde

Vytvořil jsem sh skript Run a dal to do něj.

/home/pi/Run přes terminal funguje

V local

home/pi/Run start

/home/pi/Run start

Vůbec v syslog nevidím žadnou zminku o souboru Run

fi

/home/pi/Run start

exit 0

19.1.2016 20:01 Mirek.K
Rozbalit Rozbalit vše Re: Expander MCP23017
Kde muže byt problém že mi nenajíždí Rc.local?
19.1.2016 20:14 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Expander MCP23017
Je možný, že tvůj systém rc.local nespouští. Jakou máš distribuci? (já teda znám init systém jen slackware)
19.1.2016 20:28 Mirek.K
Rozbalit Rozbalit vše Re: Expander MCP23017
Ve sklepě mam Raspberry Pi Model B s raspbianem už 2 roky a na něm to funguje.

Toto je novější B+ a také s raspbianem.

Už jednou se mi stalo že mi local přestal najíždět.
19.1.2016 20:35 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Expander MCP23017
Tak na slacku se rc.local spouští tím, že ho přímo volá nadřazenej skript.

Je executable? (ls -l rc.local)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.