Luděk píše: ↑16 úno 2020, 14:54
Davide díky

jen upřesňující dotaz, nepochopil jsem jednu poznámku... jak jsi to myslel s tím, že se pošle předem vše a pak jen při komunikaci co a kam.
Já to neumím jinak, než vše komplet - koukni - třeba RTC a EEPROM :
Kód: Vybrat vše
hi2csetup i2cmaster,$D0, i2cslow_8, i2cbyte ;adresa RTC modulu
hi2cin 0,(secs,mins,hod,day,date,mes,rok) ;načtení proměnných
hi2csetup i2cmaster,$AE, i2cslow_8, i2cword ;nastaví adresu i2c EEPROM
hi2cin 100,(b1) ;načte byte z adresy 100
Takže pokaždé - při změně daného HW posílám vše komplet...
Není to
pošle, ale
nastaví:
hi2csetup nastaví "komu jak" a pak teprv hi2cin skutečně "něco pošle a přečte" (hi2cout jen pošle). Takže zavoláš hi2csetup abys nastavil parametry komunikace a pak kolikrát chceš voláš hi2cin nebo hi2cout aby sis s tím už nastaveným zařízením popovídal (třeba když chceš ten čas, tak se každou chvíli ptej tím hi2cin 0,(sec...) ale už nemusíš pokaždé volat hi2csetup. A naopak, až budeš chtít s jiným, tak znova zavoláš hi2setup atd. atd.
Luděk píše: ↑16 úno 2020, 14:54
mě šlo spíš o to časování
Nevidím žádný problém v tom, jak to máš napsané.
Technicky by to mělo vypadat takhle:
hi2csetup i2cmaster,$D0, i2cslow_8, i2cbyte ;adresa RTC modulu
-- na sběrnici se nic neděje, jen tvůj Picaxe už ví, komu a jak má něco poslat (v tomto případě pomalu tvému RTC a že to RTC používá jednobytové adresování)
hi2cin 0,(secs,mins,hod,day,date,mes,rok) ;načtení proměnných
-- Picaxe nastartuje sběrnici ("start condition") a pošle tam správnou rychlostí adresu RTC modulu a příkaz, ze kterého RTC modul pochopí, že má poslat zpátky ty časové údaje, takže je pošle a Picaxe ti je uloží do těch 7 proměnných. Pak Picaxe sběrnici uvolní ("stop condition")
hi2csetup i2cmaster,$AE, i2cslow_8, i2cword ;nastaví adresu i2c EEPROM
-- na sběrnici se nic neděje, jen tvůj Picaxe už ví, komu a jak má něco poslat (pomalu do EEPROM a že EEPROM používá dvoubajtové adresování)
hi2cin 100,(b1) ;načte byte z adresy 100
-- sběrnice se "nastartuje" a pošle se tam správnou rychlostí adresa EEPROM a příkaz, že chceš číst z adresy 100 jeden bajt, takže EEPROM ti ty data pošle, Picaxe ti je uloží do b1 a uvolní sběrnici.
Vždycky, když se něco začíná posílat ("start condition"), tak všichni, kdo jsou fyzicky připojení ke sběrnici a jsou ochotní komunikovat, začnou poslouchat, co přijde jako první věc. To je totiž adresa slave, a ten konkrétní slave odpoví ACK že tam jako je, zatímco všichni ostatní od té chvíle až do ukončení tohoto jednoho přenosu dál neposlouchají. Hned po té adrese master může něco dalšího posílat nebo číst. Celá ta sekvence se někdy ukončí ("stop condition") a vše se vrací na začátek. Tam pak není žádný důvod na něco čekat nebo vkládat pauzu, předchozí přenos je ukončený a nový může začít.