User Manual

107
Následující funkce umňuje čtení několika byte:
void I2CTWI_readBytes(uint8_t targetAdr, uint8_t *messageBuffer, uint8_t
numberOfBytes);
Příklad:
I2CTWI_transmitByte(10, 22);
uint8_t results[6];
I2CTWI_readBytes(10,results,5);
Tento útržek programu přečte 5 byte z registru 22 zařízení slave s adresou 10. Pokud jsou data
skutečně přečtena z registru 22, tak je slave změní. Někdy se číslo registru zvýší automaticky
(stejně jak to dělá kód funkce slave v knihovně RP6Library) a jindy se slave chová úplně jinak.
Musíte to nastudovat v dokumentaci obvodu.
Čtení dat na pozadí je trochu složitější úkol. Nejdříve začnete požadovaným počte byte ze
zařízení slave. Proces běžící na pozadí začne přijímat byte ze zařízení slave. Ve zbývajícím
čase může mikroprocesor provádět ji úkoly, aniž by rušil obsluhu přerušení. V průběhu
komunikace musíte samozřejmě opakovaně volat funkci z hlavní smyčky a kontrolovat příchod
požadovaných dat ze zařízení slave nebo výskyt chyby komunikace. Při příchodu dat funkce
automaticky vyvolá předem definovanou funkci pro obsluhu události, která provede další
zpracování dat a ta může bezprostředně vyvolat sledující množinu dat z dalších registrů.
Každý požadavek bude označen vlastním ID.
void task_I2CTWI(void)
je funkce, která se má opakovaně volat z hlavní smyčky. Tato úloha byla navržena pro kontrolu
bezchybného dokončení ech přenosů a případně pro volání obsluhy události.
void I2CTWI_requestDataFromDevice(uint8_t requestAdr, uint8_t requestID, uint8_t
numberOfBytes)
Tato funkce umňuje vyžádání dat ze zařízení slave. Po zavolání funkce proces na pozadí
automaticky příjme data.
Date můžeme vyzvedávat postupně voláním funkce:
void I2CTWI_getReceivedData(uint8_t *msg, uint8_t msgSize)
Data se mohou vyzvednout přímo při volání obsluhy události. Obsluha to registruje voláním
funkce:
void I2CTWI_setRequestedDataReadyHandler(void (*requestedDataReadyHandler) (uint8_t))
Obsluha události musí mít sledující tvar:
void I2C_requestedDataReady(uint8_t dataRequestID)
Tato obsluha se bude volat s ID datového požadavku uvedeným v parametru. ID můžeme
použít k rozlišení různých zařízení typu slave.
Vedle obsluhy requestedDataReady existuje obsluha události pro zpracování chyb. Kdykoliv se
v přenosu dat objeví chyba, tj. nereaguje zařízení typu slave, zavolá se speciální obsluha
přerušení. Registruje se pomocí této funkce: