Ahoj hoši, mám takový problémek. Rozhodnul jsem se postavit si 6 kanálový digitálně řízený korekční předzesilovač. Až po koupi obvodů jsem ale přišel an něco co mi zasadilo ránu. Obvody nemají pin na ADDR. U prvních dvou napojených na jedno I2C by to nebyl problém protože každý čip ma 3 stereo vstupy a 4 výstupy (z každého stereo vstupu jde signál do 4 výstupů takže jsou jen jakoby dva a zadní hrajou to samé jako přední repro). Takže na jednom čipu bude zapojen výstup na první pár a druhého na druhý pár. Problém mi nastává s samotným třetím čipem. Chtěl jsem to vyřešit dalším procesorem (attiny2313) který by byl zapojen přes UART s hlavním procesorem (ATmega16). Attiny spojena přes i2c s posledním tda.
Uart komunikace je jenom jednosměrná tedy od Atmegy k attině. Můj dotaz zní. Pin txd na atmeze se spojuje s pinem rxd na atině?
Druhá část dotazu je programová. Samotný program na ovládání LCD atd mám, potřebuju jen rozchodit uart. Chci po Uartu přenášet jbinární čísla do attiny která je pošle dál přes i2C do tda. Používám BASCOM.
Dim C As Byte
C = &B00110101
PrintBin (C)
Nebo se to musí dělat jinak?
A jak to pak bude v attině? Ta bude pořád jen čekat s příkazem InputBin?
Vše bude v 8-mi bitech jak vysílání tak příjem.
Fórum › Mikrokontroléry
3x TDA7318 na ATmega 16
to uz bych radsi ovladal ten treti cip softwarove.. je to sice narocnejsi, ale napsat si ty rutiny na ovladani IIC je prace na hodinku.. pokud ten protokol znas
už mám dps hotov a program pro ten druhý mcu hotov, jen ještě dotaz zdali musím vkládát odpor mezi ty 4 piny na kterých se mění ty logické stavy, přeci jen jeden pin ze sebe dokáže vymáčknout 20 mA a pull up zapínat nechci. Nebo nemusím dávat nic?
Nevim jak v bascomu, ale ack odpovida obvykle strana co prijimala data.
master posle start, posle adresu s priznakem r/w a slave odpovi ack .. a tak dale, nastuduj poradne protokol, pak se s tim dela mnohem snadneji
@Deko
nejak mi nesedi tve pocty chipu a procesoru. Pokud se dobre divam do DS od TDA, tak ma jen jedinou adresu, takze pokud si das 2 chipy se stejnou adresou na jednu sbernici, bude dochazet ke kolizim. (beru to z tveho popisu ze chces pouzit 3ks, cili 2 na M16 a jeten na dalsim) A ver mi ze dochazi, mam to vyzkouseno. Takze pokud ti muzu doporucit napis si vlastni rutinu pro I2C ovladani a dej kazdy svab na jine piny. Mam dojem ze by se dal pouzit jeden datovy pro vsechny a 3 hodinove pro kazdy chip. Neni to nic sloziteho. Po prostudovani DS k TDA zjistis jak ma byt casovani, jaky je protokol, kdy chodi ack (nemusis ho kontrolovat, ale musis udelat hodinovy pulz).
TDA neni nachylne na frekvenci hodinovych pulzu, takze se nemusis bat pokud netrefis presnych 100kHz. Ja jsem fungoval az nekde do 123kHz. Navic TDA je "jednosmerne" cili do nej jenom zapisujes data. Takze si nemusis delat hlavu se ctenim v rutinach, pouze odeslani.
Rutinu muzes psat klidne blbe stylem nahod, pockej, shod, pockej. Jestli najdu nekde svou rutinu pro I2C master tak ti ji poslu, ale bude v C
To xhans69 :
díky za snahu, ale podle specifikací když uvážím že to jedno tda má 2 stereo výstupy které hrajou to samé tak když na jednom čipu bude to hrát na prvních dvou (předky) a na druhém na druhý pár (čili zadek) nebude se to ovlivňovat protože v i2c má každý pin své vlastní ovládání takže když budu chtít zeslabit zadky pošlu nějaký kód a když zadek tak zase jiný v tom problém nevidím. Ale už to mám hotové a teďka se snažím rozchodit i2c a zatím to nejde, zkouším teprve první čip a nechce se mu zmetkovi, zkouším různě kombinovat kód ale pořád nic. odpory jsou 5k6
tak nevim jestli jsme si rozumeli a jestlis pochopil funkci i2c
jde tu o to ze posles adresu, chip ji potvrdi, posles byte dat, chip potvrdi, dalsi byte, potvrzeni. Takze kdyz das 2 chipy paralelne na 1 sbernici s tou samou adresou a jeden z nich bude o neco pomalejsi, treba o 1 takt, tak se ti to rozhodi
protoze posles 8 bitu adresu, udelas 9ty na ack a ten ack ti posle jenom chip 1, ale chip 2 jeste ne, jenze tys uz ack dostal tak zacnes posilat data. Zase posles 8 bitu, jenze ten pomalejsi svab uz je rozhozeny, protoze jsi nepockal na jeho ack
nemel jsem na mysli ze by se nejak ovlivnovaly analogy
a pokud ti to nefunguje, prodluz casove prodlevy mezi pulzama (nemuzes napsat nahod, shod, nahod)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
ATmega a smyčka while — založil Palkic.89
Programovanie v atmega 16 — založil BESTTRACKER
Atmega tachometr — založil kohut
ATmega a brown-out — založil morganzd
Napěťove reference Atmega — založil Deko
Moderátoři diskuze