@mikson123: potwierdzenia masz zaszyte w standardzie I2C więc nie musisz się tym przejmować.
Możesz sobie dopisać w programie liczenie CRC z ramek żeby być pewnym że się bit nie przestawił.

A niezawodne jest dopóty, dopóki postępujesz zgodnie z zasadami i przeznaczeniem tego interfejsu i respektujesz cechy fizyczne sygnałów, interfejsów i otoczenia. Czyli jeśli dobrze zaprojektujesz a otoczenie nie jest zaszumione syfem.
  • Odpowiedz
@mikson123: jeśli to jest na jednej płytce, to nadal uart jest lepszym rozwiązaniem. Wiele µC ma możliwość przełączenia uartu w tryb jednoliniowy (RxD/TxD są na jednym pinie), albo ma możliwość włączenia otwartego drenu na linii TxD. Więc cały sprzęt do łączenia wielu µC to jeden rezystor.
Dodatkowo uart ma wielokrotne próbkowanie każdego bitu i będzie dużo odporniejszy na zakłócenia niż I2C, gdzie jeden fałszywy impuls na CLK rozwala całą ramkę
  • Odpowiedz
#embedded #openwrt #i2c #c #cpp #programowanie

Miruny mam problem. Chce uruchomić I2C na openWRT i jeżeli mam wersje openWRT z mastera to wszystko działa, a jak te same ustawienia wrzucam na wersje stabilna openWRT v19.04 to już te i2c nie działa tak jak powinno. Nie wykrywa mi układu i w zasadzie po komendzie i2cdetect -y 0 wyrzuca mi jakieś smieci ( mase
@mikson123: 2m to sporo, jesteś na granicy. Jaka częstotliwość i2c? - jeśli jest możliwość obniżenia to mocno polecam. Użyj ekranowanego przewodu.
  • Odpowiedz
@mikson123: Jeśli wykryjesz taką sytuację możesz spróbować przełączyć piny w tryb GPIO i wysłać kilkadziesiąt cykli zegara (po prostu CLK w górę i w dół) i to ma szanse odwiesić linię
  • Odpowiedz
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
@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
Kontroler lotu FC SPracing F3, firmware betaflight 3.0.1 / cleanflight 1.14.2
Jakby komuś przyszło do głowy dodawać malutki chiński OLED - nie ma sensu do tego FC.
po włączeniu obsługi OLED (oraz jego podłączeniu) ilość błędów i2c rośnie w tysiące, a FC po 5-30s (czasem kilku minutach) zawiesza się na twardo i zaczyna w kółko restartować. Brak możliwości podłączenia się po usb.
Najlepsza i chyba jedna rada - wgrać od nowa firmware z opcją "full chip erase" by skasować ustawienia firmware i wyłączyć obsługę oled.

W przypadku Cleanflight jest o tyle dobrze, że w CLI jest taka opcja jak I2C_Highspeed która jest domyślnie ON. Po przełączeniu na OFF - problem znika, i2c błędów nie ma, OLED działa... tyle ze zjada >92% CPU.
hrumque - Kontroler lotu FC SPracing F3, firmware betaflight 3.0.1 / cleanflight 1.14...

źródło: comment_5kf5u4tbG95pUgWIeu90D53MmcuxLu6C.jpg

Pobierz
@feriar: Za nauczanie mas ludzkich - plusik ( ͡° ͜ʖ ͡°)
@tux3284: Takiego contentu nigdy zbyt wiele. Wolny rynek weryfikuje, a duży wybór daje konsumentowi możliwość selekcji i obcowania, z materiałem najbardziej odpowiadającym osobistym preferencjom XD
  • Odpowiedz
@Yerboholik: a na przyszłość pamiętaj zasilacz tylko z białej listy! ;)

PS. I2C działa napewno na 15m po skrętce sieciowej, i to biegnąc koło przewodu z 230v AC :P to jako ciekawostka bo I2C jest raczej magistralą na odlegości PCB ;)
  • Odpowiedz