Wpis z mikrobloga

Pytanie za 100 punktów - czy ktoś używał frameworka Arduino w esp8266 w trybie slave komunikującego się przez I2C z esp32? Mam wszystkie biblioteki najnowsze i za cholerę nie mogę nic wysłać z mastera do slave'a. Zrzut transmisji z oscyloskopu w załączniku. Jak widać transmisja wykłada się na ACK, czyli slave nie odpowiada. Ograniczyłem już prędkość transmisji to 10KHz. Rezystory pullup 4.7k podpięte pod SCL i SDA. Mój kod:

https://pastebin.com/2LT5adu4

Ktoś może mieć jakiś pomysł? Bo na necie znalazłem tylko tyle, że faktycznie był problem w esp8266 ze slave, ale ten problem już został wyeliminowany (i jak przeglądałem kod to patch wszedł już do oficjalnej wersji), ewentualnie ludzie mieli problem z szybkością protokołu.

#elektronika #esp8266 #esp32 #arduino
Pobierz
źródło: comment_1585143661xLmwzyPCLudvpAnDcP130n.jpg
  • 1
Dobra, już wiem, w czym był problem - zostawiam instrukcję dla potomnych. Zacząłem przeglądać kod Arduino i są tam dwie definicje onReceive:

void TwoWire::onReceive(void (*function)(int))
i

void TwoWire::onReceive(void (*function)(size_t))
W tej pierwszej nie jest wywoływana funkcja twienableSlaveMode() - wydaje mi się, że jest to kolejny bug we frameworku Arduino. Jeśli w naszym programie skorzystamy z tej drugiej definicji to wszystko działa jak należy.
Pobierz
źródło: comment_1585151122oxp0hSi6wcoCGFltrRmMHi.jpg