<I2C地址> 63不适用于atTiny85

时间:2015-07-16 07:50:23

标签: c++ arduino microcontroller i2c attiny

嗨我用I2C解决多个attiny85芯片存在很大问题:

据我所知,attiny使用7位地址进行通信。我正在使用TinyWireS lib,它对我来说非常好,直到我到达地址:&#39; 64&#39;这是&#39; 1000000&#39;在二进制。最高可用地址应为&#39; 1111111&#39;。

这就是:

从站:

Attiny85:当通过I2C接收msg时,开关导通或截止。

Slaveaddress: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,true); //失败!筹码领先: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 个答案:

没有答案