【问题标题】:Error Communicating between ATtiny85 and Arduino via I2C using TinyWireS使用 TinyWireS 通过 I2C 在 ATtiny85 和 Arduino 之间进行通信时出错
【发布时间】:2017-06-20 18:39:41
【问题描述】:

我正在尝试使用 TinyWireS 库通过 I2C 在 Arduino 和 AtTiny85 之间进行通信。我只需要Arduino向AtTiny发送命令,它不需要回话。

Arduino 正在使用 Wire 库,它工作正常,但是每当我尝试编译 AtTiny85 代码时,它会给出以下错误:

libraries\TinyWireS\TinyWireS.cpp.o (symbol from plugin): In function `usi_onReceiverPtr':

(.text+0x0): multiple definition of `usi_onReceiverPtr'

sketch\ATtiny_Servo.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\TinyWireS\TinyWireS.cpp.o (symbol from plugin): In function `usi_onReceiverPtr':

(.text+0x0): multiple definition of `usi_onRequestPtr'

sketch\ATtiny_Servo.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\TinyWireS\TinyWireS.cpp.o (symbol from plugin): In function `usi_onReceiverPtr':

(.text+0x0): multiple definition of `_onTwiDataRequest'

sketch\ATtiny_Servo.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling for board ATtiny25/45/85.

这是我的代码:

#include <TinyWireS.h>
#include <usiTwiSlave.h>
#define output (4)
#define I2C_SLAVE_ADDR (1)


void setup() {
  // put your setup code here, to run once:
  TinyWireS.begin(I2C_SLAVE_ADDR);
  pinMode(output, OUTPUT);
}

volatile byte msg = 0;

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

  if(msg == 1)
    digitalWrite(output, HIGH);
  else if(msg == 0)
    digitalWrite(output, LOW);
  else
    msg = 0;
}

【问题讨论】:

标签: arduino i2c attiny


【解决方案1】:

Maximilian Gerhardt 的评论说对了一半。您不应再次包含&lt;usiTwiSlave.h&gt;。 TinyWireS 库的头文件不使用#ifdef-#def 括号。这通常可以确保编译一次以上。 该地址通过begin() 函数的参数提供给库。所以我认为,在从属示例中,地址定义位于包含之前只是巧合。

顺便说一句:我从 TinyWireS 和 TinyWireM 库中创建了一个库。如果您有兴趣,请查看: https://github.com/lucullusTheOnly/TinyWire

仅供参考:I2C/TwoWire 协议有保留地址,1 是其中之一。当向总线添加另一个设备时,这可能会出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多