曼彻斯特图书馆不会针对Attiny85进行编译


8

我正在使用Attiny85创建无线传感器。我想将数据发送到arduino uno,所以我从Spark Fun购买了315mhz rf链接套件。由于Attiny85没有TX,因此我决定使用曼彻斯特库,但是它不会在Attiny85上编译。

我遵循了此博客中的步骤:http : //mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192

这是我正在使用的代码:

    #include <WProgram.h> //otherwise it says it can't find Arduino.h
    #include <Manchester.h> //include the library to comunicate
    #define TxPin 2 //the pin that is used to send data

 int sensorPin = 4;
 int ledPin = 3;
 int count = 50;

 void setup(){
  pinMode (ledPin, OUTPUT);
  man.workAround1MhzTinyCore(); //add this in order for transmitter to work with 1Mhz Attiny85/84
  man.setupTransmit(TxPin, MAN_1200); //set transimt pin
}

void loop(){
  if (count == 50){
   digitalWrite (ledPin, HIGH);
   count = 0;
   }
   int data = analogRead(sensorPin);
   man.transmit(data); //transmits and reads the data
   delay (100);
   count ++;
 }

这是错误消息:

/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp: In function 'void MANRX_SetupReceive(uint8_t)':
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:366: error: 'TCCR2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:366: error: 'WGM21' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:368: error: 'TCCR2B' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:368: error: 'CS21' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:369: error: 'OCR2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:379: error: 'TIMSK2' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:379: error: 'OCIE2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:380: error: 'TCNT2' was not declared in this scope

您正在使用哪个软件包来获得ATtinyX5 Arduino支持?
Ignacio Vazquez-Abrams

我从引用的博客中尝试了一个,但是在Google搜索之后,我发现MIT高低技术小组有一个,所以我也尝试了一个。麻省理工学院高低技术学院的一位来自此页面highlowtech.org/?p=1695
Joel

我执行了Joel和Ignacio关于使用arduino-tiny库而不是MIT高低技术小组页面上的attiny大师的所有建议。我终于在板菜单中显示了ATTINY85板,但是上面的代码仍然出现错误“未在范围内声明人”。有什么建议么?

您是否将曼彻斯特库导入了Arduino IDE?或将其放在库文件夹中?
乔尔2015年

Answers:


5

attiny缺少允许曼彻斯特库在ATtinyX5设备上正常运行所需的选项,尤其__AVR_ATtinyX5__是选择设备时的定义。实际上,它缺少很多东西。

我用于ATtinyX5支持的软件包是arduino-tiny。我已经验证它正确定义了该符号。我建议您转储当前的支持包,然后安装arduino-tiny。


我下载了arduino-tiny-0150-0020.zip。解压缩文件,然后将名为tiny的文件夹拖到我在arduino文件夹内创建的硬件文件夹中。但是,当我进入ide时,我在木板下搜寻,而Attiny系列木板却没有出现。
乔尔

将包装添加到冰块中的正确方法是什么?
乔尔

您正在运行哪个版本的IDE?
Ignacio Vazquez-Abrams'Apr

Mac OS X 10.9.2上的Arduino1.0.5
乔尔

然后,您需要下载1.0.x的支持包,而不是1.5.x的支持包。
Ignacio Vazquez-

4

我自己为此作了挣扎之后,可以确认Joel的解决方案有效。

周围有很多文章表明您无法让曼彻斯特与Arduino1.0x一起使用,并且需要0020。但是可以。

关键是使用上面链接中的arduino-tiny,将您从那里获得的小文件夹放在/ hardware中,然后将其重命名为attiny,然后将“预期的板”命名为板。

我意识到这并不比Joel所讲的多,但周围有太多相互矛盾的信息,我认为值得在我的经验中补充


0

使用带有8 MHz Trinket的这个库也遇到了相同的问题,但是设法通过将它添加#define __AVR_ATtinyX5__到文件hardware / attiny / variants / tiny8 / pins_arduino.h中来解决了这个问题。我正在为ATtiny使用Adafruit支持包。也许有点技巧,但是我仍然可以通过选择Arduino IDE 1.0.5中的板子来为UNO进行构建。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.