Wpis z mikrobloga

Ostatnio zacząłem się uczyć programować #avr #atmega
Chcę stworzyć urządzenie które będzie korzystało z do 30 atmega wszystko połączone za pomocą #i2c / #twi gdzie masterem będzie #raspberrypi

Udało mi się już porozumieć z jednym #atmega8 z poziomu #raspberrypi teraz chcę podobną operację wykonać dla wielu atmega. Jednak nie umiem znaleźć informacji na temat jak atmega ma sobie znaleźć wolny adres. Przy jednym urządzeniu slave to nie problem po prostu wpisałem 0x10 i wszystko śmigało. Ale w momencie kiedy ten sam kod ma się wykonywać na 30 atmegach to nie przejdzie. Chciałbym zarazem uniknąć nadawania adresu za pomocą pinów.
Czy zna ktoś sposób jak atmega miałaby sobie znaleźć wolny adres i z niego skorzystać?

#elektronika #inteligentnydom #diy #elektronikadiy
  • 6
  • Odpowiedz
@Niewpisze: Jak te 30 atmeg ma ten sam kod, to ich adres zapisz sobie w EEPROM - każdej wgraj ten sam kod, ale inny eeprom (z innym adresem) - a kod oczywiscie niech czyta adres z eepromu.
  • Odpowiedz
@atehxx: Właśnie zależałoby mi na dynamicznym adresowaniu. W momencie kiedy bym chciał wywalić parę zestawów czujników (atmeg) lub parę dodać nie chciałbym się bawić w ręczne ustawianie adresu.
W ogóle idealnie by było jakbym podłączał 4 kabelki: SDA, SCL, 5V i GND i wszystko by się działo automagicznie.
  • Odpowiedz
@pytonger: Jak zrealizowałeś to że urządzenie "łapało" nadany adres? Wydawało mi się że slave aby skorzystać z komunikacji po I2C musi sobie nadać adres na starcie. Da się jakoś puścić globalny broadcast "oto adres, kto pierwszy ten lepszy"?
  • Odpowiedz
@Niewpisze: W moim przypadku nie dotyczyło to i2c, ale nie ma przecież żadnych przeciwwskazań żeby wszystkie urządzenia działające na szynie i2c nadały sobie na początku jeden numer a potem go zmieniły na wskazany przez mastera.
  • Odpowiedz