Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 15. diel - Arduino a I2C zbernice

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Jirka Vavřík:13.2.2016 21:14

Nebylo by možná lepší do toho IO expaneru posílat číslo v binární podobě?

Wire.write(B10000100);

Vidíš tak přímo logické hodnoty, které tam posíláš... ;-)

 
Odpovedať
13.2.2016 21:14
Avatar
Odpovedá na Jirka Vavřík
Michal Žůrek - misaz:13.2.2016 21:20

podle mě je to také lepší, ale z nějakého (mě neznámého) důvodu se to moc nedělá.

 
Odpovedať
13.2.2016 21:20
Avatar
Odpovedá na Michal Žůrek - misaz
Drahomír Hanák:13.2.2016 21:55

Nedělá se to, protože je to dost nepraktické pro větší data. Už třeba jen 32 bitové číslo by bylo dost dlouhé, ale i třeba jen 1 byte je otrava zapisovat po bitech. Stejné číslo (32 bitů) můžeš zapsat v šestnáctkové soustavě jen 8 znaky. Navíc je jednoduché z číslic zjistit, na kterých pozicích jsou 1 a 0 ve dvojkovém zápisu čísla. Každá cifra v šestnáctkové soustavě totiž reprezentuje 4 cifry ve dvojkové zápisu, a proto je takový zápis mnohem kompaktnější. Navíc snad každý programovací jazyk podporuje zápis čísel v šestnáctkové soustavě. Céčkovité jazyky mají 0xFFFFFFFF (kde 0x je prefix a pak následuje zápis čísla), v Pascalu je to třeba $FFFFFFFF. Ale asi je to pořád lepší, než zapisovat hodnoty v desítkové soustavě (pokud teda nechci všechny bity interpretovat jako 1 číslo)

 
Odpovedať
13.2.2016 21:55
Avatar
Odpovedá na Drahomír Hanák
Michal Žůrek - misaz:13.2.2016 23:11

to mě taky napadlo, ale myslím si že minimálně v tutoriálech nebo obecně článcích na internetu by bylo dobré to vypsat celé.

 
Odpovedať
13.2.2016 23:11
Avatar
ostrozan
Tvůrce
Avatar
Odpovedá na Drahomír Hanák
ostrozan:14.2.2016 0:16

On ale má na mysli posílání jednoho jediného bajtu na expander, jinak máš samozřejmě pravdu.

 
Odpovedať
14.2.2016 0:16
Avatar
ostrozan
Tvůrce
Avatar
ostrozan:14.2.2016 13:03

jen bych upřesni/doplnil/u­pravil toto tvrzení:

Na sběrnici jich můžeme připojit až 8, což je 8*8=64 pinů (jelikož skoro všechny jsou vyráběny se stejnou adresou, pokud budete mít štěstí, může se vám podařit sehnat i jiné rozsahy).

I2C součástky mají 7,8, nebo 10ti bitovou slave adresu - ale držme se PCF8574

ten ji má 7mi bitovou

adresa se skládá ze tří částí :
bit 7 : 4 - pevná adresa určující typ součástky
bit 3 : 1 - volitelná část adresy realizovaná vývody A0,A1,A2 na samotné součástce
bit 0 - R/W - určuje, jestli se na té adrese bude provádět zápis nebo čtení

konkrétně adresa typu PCF8574 je 0 1 0 0 A2 A1 A0 R/W

počty adresovacích pinů se ale typ od typu liší - a je to dáno použitím - většinou jsou tři - A0 - A2 a to dokonce i tam kde zaberou skoro polovinu všech vývodů - paměti EEPROM,FLASH

naproti tomu RTC (hodiny) PCF8563 nemají adresovací pin žádný - na co taky že?

jen pro doplnění - slave adresa PCF8563 je 1 0 1 0 0 0 1 R/W

od tohohle všeho vás odstiňuje milosrdné arduino, ale když už tady Adam ten I2C bus tak rozpitval, tak ať je to kompletní :-)

 
Odpovedať
14.2.2016 13:03
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!