I2C-адреса & gt; 63 не могут быть использованы с AtTiny85

Привет, у меня большая проблема с обращением к нескольким attiny85-чипам с I2C:

Для чего я знаю attiny использует 7-битные адреса для связи. Я использую библиотеку TinyWireS, которая прекрасно работает для меня, пока я не достигну адреса: «64», то есть «1000000» в двоичном формате. Максимальный используемый адрес должен быть «1111111».

Вот что происходит:

Подчиненный:

Attiny85: включает или выключает светодиод при получении сообщения через I2C.

Адрес раба: 64

#include <TinyWireS.h>
#include <usiTwiSlave.h>

#define output (4)
#define I2C_SLAVE_ADDR (64) //works if I2C_SLAVE_ADDR < 64

void setup() {
TinyWireS.begin(I2C_SLAVE_ADDR);
pinMode(output, OUTPUT);
}

volatile bool state = LOW;

void loop() {
byte msg = -1;
if(TinyWireS.available())
msg = TinyWireS.receive();

if(msg == 1)
state = HIGH;
else if(msg == 0)
state = LOW;
else if(msg == 2)
state = !state;

digitalWrite(output, state);
}

Мастер:

Arduino pro mini:

sendMsg (0, true); //работает! светодиод на чипе: 64 переключателя

sendMsg (64, правда); // терпит неудачу! светодиод на чипе: 64 выключен.

#include <Wire.h>

#define DEVICE (64) //0 works!

void setup() {
Wire.begin();
}

void loop() {
sendMsg(1, DEVICE);
delay(2000);
sendMsg(0, DEVICE);
delay(2000);
}

void sendMsg(int msg, int device) {
Wire.beginTransmission(device);
Wire.write(msg);
Wire.endTransmission();
}

Ты хоть представляешь, как решить эту проблему?

Версия TinyWireS, которую я использую: https://github.com/rambo/TinyWire/tree/master/TinyWireS

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]