Zdravím, potřeboval bych s ničím trošec poradit. Chtěl by rozjet I2c komunikaci s Atmegou 16 a ultrazvukovým dálkoměrem SRF08 (zde: shop.snailinstruments.com/index. … cts_id=194). I2C rozhraním nemám ale žádné zkušenosti a obecně s sériovým přenosem jen velmi malé. A ten komunikační protokol se mi zatím zdá složitej jak mlátička. Z hlediska komunikace s SRF08 po i2c by to mělo stejný jako u pamětí EEPROM řady 24xx. Sběrnici I2C jsem trošec prostudoval a došel jsem k závěru že komunikace by měla vypadat nějak takhle:
Zápis:
1.) pošlu START bit
2.) pošlu adresu ultrazvukového dálkoměru SRF08 (ta by měla být 0xE0) poslední bit dám 0 (zápis)
3.) čekám na potvrzení bitem ACK
4.) pošlu adresu registru do kterého budu chtít zapisovat
4.) čekám na potvrzení bitem ACK
5.) pošlu data která chci zapisovat do výše uvedeného registru
6.) opět čekám na potvrzení bitem ACK
7.) pošlu STOP bit
Jestli tady co se týká té komunikace plácám nějaký blbosti tak mě pls opravte. Dále nějak nechápu jak ten dálkoměr může mít adresu 0xE0 když I2C používá 7-mi bitové adresy zařízení. A tohle je evidentně 8-mi bitová.
díky
administrator: přejmenováno z "i2c komunikace s ultrazvukovým dálkoměrem"
postup ktory si nacrtol vidim ako spravny. Akurat nikde nevidim nacitanie udajov z dialkomera To bude asi implementacia casom.
Adresa je 7 bitova. Potom ju vybasobi x2 a v najnizsom bite sa urci, ci sa bude zapisovat, alebo citat. Takze 0xE0 je velmi dobra hodnota
dík… na čtení je čas ještě neumím ani zapisovat Takže jestli to dobře chápu tak když budu chtít zapisovat tak odešlu hodnotu adresy 0xE0 (a když číst tak 0xE1)…jo?
dík ale tohle už mám nastudovaný. Škoda že tam není moc popsaná ta komunikace. Ale snad když se to stejný jak u pamětí EEPROM řady 24xx by to neměl být problém.
ATmaga 16 má zabudované rozhraní I2C popis je v datashetu k procesor.
Lze ho stahnou na www.atmel.com.
s harwerovým rozharaním se mi to zdá mnohem jednoduší než psát rutiny měmící stav výstupních pinů.
Já používám HW I2C u té ATmegy16. Ale i tak jsem musel napsat nějaký ty rutiny pro komunikaci. No a právě teď hledám nějakou rutinu pro mód MASTER - PŘÍJÍMAČ. Nikde to nemůžu najít.
A co takto strana 187 na spodu a strana 188-190? Z Datasheetu
2466H-AVR-12/03 k ATmega16.
Ak mas datasheet s nejakym inym datumom vydania, tak hladaj text “MAster Receive Mode”.
Ten popis je fakt dost podrobny, ci uz Master-Transmiter, alebo Master-Receiver.
Ak je s tym nejaky problem, zver sa
tak první problém je že moje znalost ang je na dost blbé úrovni . Jo popsaný by to bylo ale spíš by se mi hodili ty rutiny. Ale jako nějaký už mám.Tak to zkusím a uvidím. A myslíš jestli při tom čtení na to jdu dobře? (viz. výše)