La biblioteca de Manchester no compilará para Attiny85


8

Estoy creando un sensor inalámbrico con un Attiny85. Quiero enviar los datos a un Arduino Uno, así que compré el kit de enlace rf 315mhz de spark fun. Como el Attiny85 no tiene TX, decidí usar la biblioteca de Manchester, sin embargo, no se compilará en el Attiny85.

Seguí los pasos de este blog: http://mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192

Aquí está el código que estoy 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 ++;
 }

Aquí está el mensaje de error:

/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

¿Qué paquete está utilizando para el soporte ATtinyX5 Arduino?
Ignacio Vazquez-Abrams

Probé el del blog al que hice referencia, pero después de buscar en Google descubrí que el Grupo MIT High Low Tech tenía uno, así que probé ese también. El de MIT High Low Tech es de esta página highlowtech.org/?p=1695
Joel

Realicé todas las sugerencias de Joel e Ignacio sobre el uso de la pequeña biblioteca arduino en lugar del maestro attiny de la página del grupo de alta tecnología del MIT. Finalmente tengo las tablas ATTINY85 para que aparezcan en el menú de mi tabla, pero sigo recibiendo el error "hombre no declarado en el alcance" con el código anterior. ¿Alguna sugerencia?

¿Importó la biblioteca de Manchester al IDE de Arduino? o colocarlo en la carpeta de bibliotecas?
Joel

Respuestas:


5

a attiny le falta una opción requerida para permitir que la biblioteca Manchester funcione correctamente en los dispositivos ATtinyX5, específicamente la definición de __AVR_ATtinyX5__cuándo se selecciona un dispositivo. De hecho, le faltan algunas cosas.

El paquete que uso para el soporte ATtinyX5 es arduino-tiny . He verificado que define ese símbolo correctamente. Le recomiendo que descargue su paquete de soporte actual e instale arduino-tiny en su lugar.


Descargué el arduino-tiny-0150-0020.zip. Descomprimió el archivo y luego arrastró la carpeta llamada tiny a la carpeta de hardware que creé dentro de la carpeta arduino. Sin embargo, cuando fui al ide, busqué debajo de los tableros y la serie de tableros Attiny no apareció.
Joel

¿Cuál es la forma correcta de agregar el paquete al hielo?
Joel

¿Qué versión del IDE estás ejecutando?
Ignacio Vazquez-Abrams

Arduino1.0.5 en mac osx 10.9.2
Joel

Luego deberá descargar el paquete de soporte para 1.0.x en lugar del de 1.5.x.
Ignacio Vazquez-Abrams

4

Habiendo luchado con esto yo mismo, puedo confirmar que la solución de Joel funciona.

Hay muchas publicaciones que sugieren que no puedes hacer que el Manchester funcione con Arduino1.0x y necesitas 0020. Pero puedes.

La clave es usar el arduino-tiny del enlace de arriba, poner la pequeña carpeta que obtienes desde allí en / hardware y luego renombrarla como attiny y "prospectosboards" a tableros.

Me doy cuenta de que esto no dice más de lo que Joel ya ha dicho, pero hay tanta información contradictoria y contradictoria que pensé que valdría la pena agregar en mi experiencia.


0

Tengo el mismo problema al usar esta lib con un Trinket de 8 MHz, pero logró resolverlo agregando #define __AVR_ATtinyX5__al archivo hardware / attiny / variantes / tiny8 / pins_arduino.h. Estoy usando el paquete de soporte Adafruit para ATtiny. Tal vez sea un poco hack, pero aún puedo construir para UNO, seleccionando el tablero en Arduino IDE 1.0.5.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.