Wire requestFrom(): How many bytes were requested from the master?
hi there,
i'm working on arduino-i2c slave device multiple registers/values master (also arduino now) needs read out. want able read multiple bytes @ once using wire.requestfrom(slave, numofbytes)-method. therefore slave needs know number of bytes requested master. how can number?
my master program looks this:
slave:
i'm working on arduino-i2c slave device multiple registers/values master (also arduino now) needs read out. want able read multiple bytes @ once using wire.requestfrom(slave, numofbytes)-method. therefore slave needs know number of bytes requested master. how can number?
my master program looks this:
code: [select]
#include <wire.h>
#define slave 0x86
#define register 0x6b
void setup()
{
wire.begin();
serial.begin(9600);
}
void loop()
{
wire.begintransmission(slave);
wire.write(register);
wire.endtransmission();
wire.requestfrom(slave, 4);
if(wire.available())
{
char c = wire.read();
serial.println(c);
}
delay(500);
}
slave:
code: [select]
#include <wire.h>
#define address 0x86
#define register 0x6b
byte data[4];
byte currentregister;
void setup()
{
wire.begin(address);
wire.onreceive(receiveevent);
wire.onrequest(requestevent);
}
//called, when master calls wire.write()
void receiveevent()
{
if(wire.available())
{
//set selected register.
currentregister = wire.read();
}
}
//called, when master calls wire.requestfrom()
void requestevent()
{
//get number of requested bytes.
//how can number???
int requestedbytescount = ? //help!
//return different data, depending on selected register.
if(currentregister == register_1)
{
for(int = 0; < requestedbytescount; i++)
{
//send data i-th position of data-array
wire.write(data[i]);
}
}
//code other registers
}
void loop()
{
}
quote
how can number?with current wire library implementation cannot. way implement fill buffer maximum number of bytes master may request. if client recognize stop condition empty buffer next request arrive.
Arduino Forum > Using Arduino > Networking, Protocols, and Devices (Moderator: fabioc84) > Wire requestFrom(): How many bytes were requested from the master?
arduino
Comments
Post a Comment