A Biblioteca de Manchester não será compilada para Attiny85


8

Estou criando um sensor sem fio usando um Attiny85. Quero enviar os dados para um arduino uno, então comprei o kit de link de 315 mhz rf da spark fun. Como o Attiny85 não possui um TX, decidi usar a biblioteca de Manchester, mas ele não será compilado no Attiny85.

Segui as etapas deste blog: http://mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192

Aqui está o código que estou usando:

    #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 ++;
 }

Aqui está a mensagem de erro:

/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

Qual pacote você está usando para o suporte do ATtinyX5 Arduino?
Ignacio Vazquez-Abrams

Eu tentei o do blog que referenciei, mas após a pesquisa no google, descobri que o MIT High Low Tech Group tinha um, então tentei esse também. O do MIT High Low Tech é desta página highlowtech.org/?p=1695
Joel

Executei todas as sugestões de Joel e Ignacio sobre o uso da biblioteca arduino-tiny, em vez do mestre atento da página do grupo de alta tecnologia do MIT. Finalmente, tenho as placas ATTINY85 para aparecer no menu da placa, mas ainda estou recebendo o erro "homem não declarado no escopo" com o código acima. Alguma sugestão?

Você importou a biblioteca manchester para o IDE do Arduino? ou Coloque-o na pasta de bibliotecas?
Joel

Respostas:


5

attiny está faltando uma opção necessária para permitir que a biblioteca de Manchester funcione corretamente em dispositivos ATtinyX5, especificamente a definição de __AVR_ATtinyX5__quando um dispositivo é selecionado. De fato, faltam algumas coisas.

O pacote que eu uso para o suporte do ATtinyX5 é minúsculo para o arduino . Eu verifiquei que ele define esse símbolo corretamente. Eu recomendo que você despeje seu pacote de suporte atual e instale o arduino-tiny.


Eu baixei o arduino-tiny-0150-0020.zip. Descompacte o arquivo e arraste a pasta chamada tiny para a pasta de hardware que criei dentro da pasta arduino. No entanto, quando fui para o ide, pesquisei sob os painéis e a série de painéis Attiny não apareceu.
Joel

Qual é a maneira correta de adicionar o pacote ao gelo?
Joel

Qual versão do IDE você está executando?
Ignacio Vazquez-Abrams

Arduino1.0.5 no mac osx 10.9.2
Joel

Você precisará fazer o download do pacote de suporte para 1.0.x em vez do pacote para 1.5.x.
Ignacio Vazquez-Abrams

4

Tendo lutado contra isso sozinho, posso confirmar que a solução de Joel funciona.

Existem várias postagens sugerindo que você não pode fazer com que o Manchester trabalhe com o Arduino1.0x e você precisa do 0020. Mas você pode.

A chave é usar o arduino-tiny no link acima, colocar a pequena pasta que você obtém de lá no / hardware e renomeá-la para attiny e “prospective boards” para as placas.

Percebo que isso não diz mais do que Joel já disse, mas há tantas informações conflitantes e contraditórias que achei que valeria a pena acrescentar na minha experiência.


0

Obtive o mesmo problema ao usar esta biblioteca com um Trinket de 8 MHz, mas conseguiu resolvê-lo adicionando #define __AVR_ATtinyX5__ao arquivo hardware / attiny / variantes / tiny8 / pins_arduino.h. Estou usando o pacote de suporte Adafruit para o ATtiny. Talvez um pouco de hack, mas ainda posso criar para o UNO, selecionando a placa no Arduino IDE 1.0.5.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.