I2C mezi atmega16 a attiny2313
Moderátor: Moderátoři
vasek125 píše:Tak nastal velký problém. Četl jsem, že atmega16 má 2 samostatné USART zařízení, kdežto podle datasheetu to vypadá na jedno, které teď využívám je komunikaci s PC. TO už asi nepůjde použít ke komunikaci se slave že?
To sis asi spletl s atmega162, ta má dva USARTy, mega16 má jen jeden. Pokud ho používáš pro komunikaci s PC a mcu je jako slave, tak asi použít nepůjde.
Andrea píše:RS-232 neumožňuje multipoint komunikaci, má jen dva stavy log.1 -12V a log.0 +12V, oba jsou dominantní, takže nějak nechápu, jak to máte zapojené.
Když to neumožňuje, tak to naše zařízení asi opravdu nefunguje
Je to zapojené takto:
U počítače je spojené Tx a Rx a dále se to vede jedním drátem k lokálním jednotkám systému. U nich je také spojené Tx a Rx a celá komunikace běží po tom jednom drátu. Všechna zařízení jsou spojená paralelně, čemuž se v zabezpečovací technice říká "multipl".
Počítač se opakovaně dotazuje lokálních jednotek a ty jen poslouchají. Když se dotáže, tak dotazovaná jednotka odpoví, ty ostatní stále mlčí. Když chce jednotka odpovědět, tak si zkontroluje, jestli někdo jiný nevysílá a pak sama začne.
Variola píše:Andrea píše:RS-232 neumožňuje multipoint komunikaci, má jen dva stavy log.1 -12V a log.0 +12V, oba jsou dominantní, takže nějak nechápu, jak to máte zapojené.
Když to neumožňuje, tak to naše zařízení asi opravdu nefunguje
Je to zapojené takto:
U počítače je spojené Tx a Rx a dále se to vede jedním drátem k lokálním jednotkám systému. U nich je také spojené Tx a Rx a celá komunikace běží po tom jednom drátu. Všechna zařízení jsou spojená paralelně, čemuž se v zabezpečovací technice říká "multipl".
Počítač se opakovaně dotazuje lokálních jednotek a ty jen poslouchají. Když se dotáže, tak dotazovaná jednotka odpoví, ty ostatní stále mlčí. Když chce jednotka odpovědět, tak si zkontroluje, jestli někdo jiný nevysílá a pak sama začne.
No ale to není RS-232
RS-232 neumí "mlčet", umí jen + nebo - 12V. A když spojíme např. 5 RS-232 vysílačů, které "mlčí" +12V a jeden který "mluví" -12V, co vznikne?
- ZdenekHQ
- Významný člen
- Příspěvky: 25519
- Registrován: 21 črc 2006, 00:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
Jinak předpokládám, že oni tu RS232 provozují na TTL úrovni, tudíž to není RS232 a tam to (nejspíš) fungovat bude.
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
vasek125 píše:Tak jsem našel hezký připravený kód zde: http://www.atmel.com/dyn/products/app_n ... ily_id=607. Upravil jsem ho pro avr-gcc a úspěšně zkompiloval. Jedná se konkrétně o příklad: "Using the USI module as a I2C slave". Myslím, že to slouží jen pro přenos jednoho bajtu. Jak se pomocí toho dá přenášet příkaz(text)?
Slouží to pro přenos kolika bajtů chceš. Je tam i příklad použití.
vasek125 píše:Supr, tak už komunikuju. Musel jsem ale vypnout interní pull-upy a dát vnější. Proč nemohu na atmega16(i2c/twi master) nastavit interní pull-upy, respektive mohu, ale pak to nefunguje? Podle dokumentace to možné je i při použití TWI.
Asi komunikuješ rychle, interní pull-upy mají 20-50 kOhmů a to stačí jen pro nízké rychlosti a malé kapacitní zatížení sběrnice. Kolik máš ty externí pull-upy a jak rychle komunikuješ?