0

I want to know why Wire.onRequest can not detect below massage and what I can do to detect it.(I am not able to change I2C massage)

I was able to read this part of the massage with wire.onReceive:

enter image description here

But I can not read this massage at all, which is requesting: enter image description here

#include <Wire.h>
byte val = 170;
int sendv;
char c;
byte dataArray[16];
void setup() {
 Wire.begin(0x77); // join i2c bus with address #8
 Wire.onReceive(receiveEvent); // register event
 Wire.onRequest(requestEvent); // register event
 Serial.begin(9600); // start serial for output
}
void loop() { }
void receiveEvent(int howMany) {
 Serial.println(howMany);
 if (howMany >= 2) {
 for (int i = 0 ; i < howMany; i++) {
 dataArray[i] = Wire.read();
 Serial.println(dataArray[i], HEX);
 }
 } else {
 c = Wire.read();
 Serial.println(c, HEX);
 }
}
void requestEvent() {
 Serial.println("REqEVENT");
}
ElectronSurf
8144 gold badges17 silver badges43 bronze badges
asked Sep 26, 2019 at 15:54
4
  • So you mean in your code you are never seeing the REqEVENT in the serial monitor? Normally in the onRequest callback you would write data to the I2C buffer, so that it can be send Commented Sep 26, 2019 at 15:59
  • Yes, when I run the code I never goes inside of request event and I dont see REqEVENT, which it should becouse 0xEFm or 0xEE is correct address Commented Sep 26, 2019 at 16:00
  • Are the images from the transmission from your code? That would fit your code, since you don't send any data on request. Maybe sending over serial is not a good test here, since the function get's called from an ISR. Try to light an LED inside the function to test, if the code get's there. Also try to actually send data and see, if this data get's actually send, by watching your logic analyser. Commented Sep 26, 2019 at 16:03
  • I have tried sending massage which did not work, I just tried Led too and not turning on, Also you can see on logic analyzer is getting 0xFF Commented Sep 26, 2019 at 16:09

1 Answer 1

1

I was able to solve the issue with by adding twi_stop(); to twi.c

base on this website enter link description here

answered Sep 26, 2019 at 19:46

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.