Po serii eksperymentów z multimaster + mieszane master slave, przeczytaniu 1000 wątków w internecie na temat "AVR multimaster glitch" oraz zażyczenia sobie od Mikołaja analizatora stanów logicznych doszedlem do nastepujacych wnioskow:
1. Niestety w czasci procesorow ten glitch jest - i nie zalezy to od modelu tylko od partii produkcyjnej (mysle ze po prostu starsze/nowsze lub w jednej fabryce robia jedne w innej drugie a na pewno dla tego glitcha nie oplaca sie nic zmieniac).
2. Jedynym wyjsciem z sytuacji jest programowe sprawdzanie magistrali przed rozpoczeciem transmisji. Nie wystarczy jednak tylko sprawdzic czy SDA i SCL sa high, trzeba tez sprawdzic jak długo ten stan jest. Wystarczą 2-3 takty zegarowe magistrali czyli przy 8MHz uC i 100k I2C 240 cykli zegara procesora.
3. Oczywiście trzeba to zrobic na każdym masterze, którego sercem jest procesor AVR.
Nie podaję zadnego przykładowego kodu - mysle ze to juz na tyle zaawansowny temat, ze potencjalnie zainteresowani wiedza jak to zrobic odpowiednio do swoich potrzeb
Może komuś się przyda.
1. Niestety w czasci procesorow ten glitch jest - i nie zalezy to od modelu tylko od partii produkcyjnej (mysle ze po prostu starsze/nowsze lub w jednej fabryce robia jedne w innej drugie a na pewno dla tego glitcha nie oplaca sie nic zmieniac).
2. Jedynym wyjsciem z sytuacji jest programowe sprawdzanie magistrali przed rozpoczeciem transmisji. Nie wystarczy jednak tylko sprawdzic czy SDA i SCL sa high, trzeba tez sprawdzic jak długo ten stan jest. Wystarczą 2-3 takty zegarowe magistrali czyli przy 8MHz uC i 100k I2C 240 cykli zegara procesora.
3. Oczywiście trzeba to zrobic na każdym masterze, którego sercem jest procesor AVR.
Nie podaję zadnego przykładowego kodu - mysle ze to juz na tyle zaawansowny temat, ze potencjalnie zainteresowani wiedza jak to zrobic odpowiednio do swoich potrzeb
Może komuś się przyda.