Aszinkron I2C mester lib

ESP8266, ESP32 chipek és az ESP-xx modulok. Programozási nyelvek, trükkök, hardware tippek.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Aszinkron I2C mester lib

Hozzászólás Szerző: csabeszq »

Sziasztok,

Felraktam a github-ra egy lib-et, ami async I2C mester-t valósít meg. Atmega és ESP8266 IC-ken működik.

https://github.com/cskarai/asynci2cmaster

Miért más, mint a Wire és társai:
- egyáltalán nem blokkol
- az I2C egy érdekes protokol, mert mester módban interrupt nélkül is elmegy, legfeljebb kicsit lassabb lesz az átvitel. Ez ESP8266-ra is vonatkozik (szoftveres I2C), csak a bitek összevissza hosszúak lehetnek, ha túlterhelt a rendszer. Az i2cMaster.loop() függvényt hívogatom amikor épp ráérek és nem csinálok mást, az meg lezongoráz mindent.
- magyarul: miközben ADC-vel mintavételezek, rádió/infra jelet fogok,... a háttérben szabadidős tevékenységként I2C kommunikációt megvalósítok
- az I2C-s átvitelt sorba lehet rakni: X-nek küldd el ezt, Y-nak azt, Z-nek amazt. Amikor éppen nincs egyéb dolog, lekezelem az I2C-t, sorban végrehajtom a kéréseket, meghívom a callback-eket, amikor befejeződtek.

Példa EEPROM irásra - 3 kérést egyszerre kiadok, a háttérben meg lassan feldolgozódnak. Ráadásul a callback-ből új kérést is be lehet rakni, ami értelemszerűen a sor végére kerül.

https://github.com/cskarai/asynci2cmast ... EEPROM.ino

A teljesen aszinkron megoldások nekem általában jobban tetszenek, mert többre képes a gép, mintha delay-eket hívogatna. Addig ugye nem csinál semmit.
Válasz küldése