La bibliothèque de Manchester ne compilera pas pour Attiny85


8

Je crée un capteur sans fil à l'aide d'un Attiny85. Je veux envoyer les données à un arduino uno, j'ai donc acheté le kit de liaison rf 315mhz chez spark fun. Étant donné que l'Attiny85 n'a pas de TX, j'ai décidé d'utiliser la bibliothèque de Manchester, mais elle ne se compilera pas sur l'Attiny85.

J'ai suivi les étapes de ce blog: http://mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192

Voici le code que j'utilise:

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

Voici le message d'erreur:

/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

Quel package utilisez-vous pour la prise en charge Arduino ATtinyX5?
Ignacio Vazquez-Abrams

J'ai essayé celui du blog auquel j'ai fait référence, mais après une recherche sur Google, j'ai trouvé que le groupe MIT High Low Tech en avait un, j'ai donc essayé celui-là également. Celui du MIT High Low Tech provient de cette page highlowtech.org/?p=1695
Joel

J'ai effectué toutes les suggestions de Joel et Ignacio concernant l'utilisation de la bibliothèque arduino-tiny au lieu du maître attiny de la page du groupe high-tech du MIT. J'ai enfin les cartes ATTINY85 à afficher dans mon menu de carte, mais je reçois toujours l'erreur "man not declare in scope" avec le code ci-dessus. Aucune suggestion?

Avez-vous importé la bibliothèque de manchester dans l'IDE Arduino? ou le placer dans le dossier des bibliothèques?
Joel

Réponses:


5

il manque une option requise à attiny pour permettre à la bibliothèque de Manchester de fonctionner correctement sur les périphériques ATtinyX5, en particulier la définition du __AVR_ATtinyX5__moment où un périphérique est sélectionné. En fait, il manque pas mal de choses.

Le package que j'utilise pour le support ATtinyX5 est arduino-tiny . J'ai vérifié qu'il définit correctement ce symbole. Je vous recommande de vider votre package de support actuel et d'installer plutôt arduino-tiny.


J'ai téléchargé le arduino-tiny-0150-0020.zip. Décompressez le fichier puis faites glisser le dossier nommé tiny dans le dossier matériel que j'ai créé dans le dossier arduino. Cependant, quand je suis allé à l'ide, j'ai cherché sous les planches et la série de planches Attiny ne s'est pas présentée.
Joel

Quelle est la bonne façon d'ajouter le paquet à la glace?
Joel

Quelle version de l'IDE utilisez-vous?
Ignacio Vazquez-Abrams

Arduino1.0.5 sur mac osx 10.9.2
Joel

Ensuite, vous devrez télécharger le package de support pour 1.0.x au lieu de celui pour 1.5.x.
Ignacio Vazquez-Abrams

4

Ayant moi-même lutté contre cela, je peux confirmer que la solution de Joel fonctionne.

Il y a beaucoup de publications qui suggèrent que vous ne pouvez pas faire fonctionner Manchester avec Arduino1.0x et que vous avez besoin de 0020. Mais vous pouvez.

La clé est d'utiliser l'arduino-minuscule à partir du lien ci-dessus, de placer le minuscule dossier que vous obtenez à partir de là / hardware et de le renommer en attiny et "prospectives boards" en boards.

Je me rends compte que cela n'en dit pas plus que Joel ne l'a déjà fait, mais il y a tellement d'informations contradictoires et contradictoires autour de moi que je pensais que cela valait la peine d'être ajouté à mon expérience


0

Vous avez le même problème en utilisant cette bibliothèque avec un bijou 8 MHz, mais vous avez réussi à le résoudre en ajoutant #define __AVR_ATtinyX5__au fichier hardware / attiny / variants / tiny8 / pins_arduino.h. J'utilise le package de support Adafruit pour ATtiny. Peut-être un peu un hack, mais je peux toujours construire pour l'UNO, en sélectionnant la carte dans Arduino IDE 1.0.5.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.