Манчестерская библиотека не будет компилироваться для Attiny85

8

Я создаю беспроводной датчик с помощью Attiny85. Я хочу отправить данные в arduino uno, поэтому я купил радиочастотный комплект 315 МГц у компании «Искра веселья». Поскольку у Attiny85 нет TX, я решил использовать библиотеку Manchester, однако она не будет компилироваться на 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
Joel
источник
Какой пакет вы используете для поддержки ATtinyX5 Arduino?
Игнасио Васкес-Абрамс
Я попробовал тот из блога, на который я ссылался, но после поиска в Google я обнаружил, что у MIT High Low Tech Group была такая, поэтому я попробовал и тот. Один из MIT High Low Tech с этой страницы highlowtech.org/?p=1695
Джоэль
Я выполнил все предложения Джоэла и Игнасио относительно использования крошечной библиотеки arduino вместо мастера attiny со страницы группы высоких технологий MIT. Я наконец-то получил доски ATTINY85 для отображения в меню своих досок, но я все еще получаю сообщение об ошибке "человек не объявлен в области видимости" с приведенным выше кодом. Какие-либо предложения?
Импортировали ли вы манчестерскую библиотеку в Arduino IDE? или поместить его в папку библиотеки?
Джоэл

Ответы:

5

В attiny отсутствует опция, необходимая для правильной работы библиотеки Манчестера на устройствах ATtinyX5, в частности, определение того, __AVR_ATtinyX5__когда выбрано устройство. На самом деле, пропущено немало вещей.

Пакет, который я использую для поддержки ATtinyX5, является Arduino- Tiny . Я убедился, что он правильно определяет этот символ. Я рекомендую вам сбросить ваш текущий пакет поддержки и установить вместо него arduino-tiny.

Игнасио Васкес-Абрамс
источник
Я скачал arduino-tiny-0150-0020.zip. Разархивировал файл, затем перетащил папку с именем tiny в аппаратную папку, которую я создал внутри папки arduino. Однако, когда я пошел к идее, я искал под досками, и ряд плат Аттины не появлялся.
Джоэл
Как правильно добавить пакет на лед?
Джоэл
Какую версию IDE вы используете?
Игнасио Васкес-Абрамс
Arduino1.0.5 на Mac OSX 10.9.2
Джоэл
Затем вам нужно скачать пакет поддержки для 1.0.x вместо пакета для 1.5.x.
Игнасио Васкес-Абрамс
4

Пройдя через это, я могу подтвердить, что решение Джоэла работает.

Вокруг довольно много сообщений, в которых говорится, что вы не можете заставить Манчестер работать с Arduino1.0x, а вам нужен 0020. Но вы можете.

Ключ заключается в том, чтобы использовать arduino-tiny из приведенной выше ссылки, поместить крошечную папку, которую вы получили оттуда, в / hardware, а затем переименовать ее в attiny и «будущие платы» в платы.

Я понимаю, что это не говорит о многом больше, чем Джоэл уже имеет, но вокруг так много противоречивой и противоречивой информации, что я подумал, что стоит добавить в мой опыт

Роберт Дженкинс
источник
0

Получил ту же проблему, используя эту #define __AVR_ATtinyX5__библиотеку с Брелком 8 МГц, но сумел решить ее, добавив в файл hardware / attiny / варианты / tiny8 / pins_arduino.h. Я использую пакет поддержки Adafruit для ATtiny. Возможно, немного хак, но я все еще могу собрать для UNO, выбрав плату в Arduino IDE 1.0.5.

jogco
источник