User Manual

102
4.6.11. Funkce sběrnice I
2
C
Na konci této kapitoly se zaměříme na funkce sběrnice I
2
C, které mohou být využity pro
komunikaci s dalšími mikroprocesory a rozšiřujícími moduly.
Existují dvě verze funkcí sběrnice I
2
C jedny pro režim slave a druhé pro režim master.
Pozor: nemůžete používat obě verze funkcí současně!
Vložit můžete pouze jednu ze dvou verzí a musíte vat pozor, aby byla uvedena v makefile.
Do makefile se již musí přidat přísluš vstupy ukázkových programů ve většině příkladů
mohou být zbaveny komenřů. Ještě jednou: použijte pouze jeden z těchto vstupů! V opačném
případě vystaví kompilátor chybové hlášení (je to kvůli tomu, že se při vložení obou verzí, může
vektor přerušení od TWI definovat dvakrát).
4.6.11.1. I
2
C slave
Na základní jednotce robotu je důležitější režim slave, protože se mnoho obecných úloh přivá
na další mikroprocesor nebo řízení dalšího robotu. Existuje ukázko program, který umňuje
přístup téměř ke em funkcím základní jednotky robotu přes sběrnici I
2
C (RP6Base_I2CSlave).
Základ obou režimů (master a slave) využívá přerušení. Čistě softwarová implementace I
2
C
v režimu slave není jednoduc (dokonce přímo nemož). Režim master může být snadno
implementován v software, ale pro udržení shodné struktury v obou režimech, použijeme také
přerušení. Další hodou je, že přenosy dat v režimu master se mohou provádět na pozadí což
šetří čas.
void I2CTWI_initSlave(uint8_t address)
Tato funkce bude inicializovat TWI modul mikroprocesoru jako I
2
C slave a umňuje definovat
adresu jako parametr. V adrese můžete současně definovat, zda bude řadič reagovat na
takzvané Všeobecné volání nebo ne. Kd je sběrnice adresována nulou, nazývá se tento
stav eobecné volání - General Call. Tuto funkci můžete například použít ke snadnému
současmu přepnuvšech řadičů připojených ke sběrnici do režimu se sníženou spotřebou.
Příklad:
I2CTWI_initSlave( adr | TWI_GENERAL_CALL_ENABLE ); // povoluje general call
I2CTWI_initSlave(adr); // zakazuje general call
Registry I
2
C
Obvykle mohou být I
2
C periferie řízeny přes několik registrů, které umňují čtení/zápis. Proto
jsou slave rutiny navrženy tak, aby poskytovaly řadu registrů (v této aplikaci pole 8-bitových
proměnných), které lze číst nebo zapisovat ze zařízení typu master.V případě čtení dat
z registru nebo zápisu dat do registru musí zařízení master vyslat adresu slave a sledně
adresu registru.
Existují zde dvě pole typu uint8_t. Jedno pro čtení a druhé pro zápis do registru.