Die Manchester Library wird nicht für Attiny85 kompiliert

8

Ich erstelle einen drahtlosen Sensor mit einem Attiny85. Ich möchte die Daten an ein Arduino Uno senden, also habe ich das 315-MHz-HF-Link-Kit von Spark Fun gekauft. Da der Attiny85 keinen TX hat, habe ich mich für die Verwendung der Manchester-Bibliothek entschieden, die jedoch auf dem Attiny85 nicht kompiliert werden kann.

Ich habe die Schritte in diesem Blog befolgt: http://mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192

Hier ist der Code, den ich verwende:

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

Hier ist die Fehlermeldung:

/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
quelle
Welches Paket verwenden Sie für die Unterstützung von ATtinyX5 Arduino?
Ignacio Vazquez-Abrams
Ich habe den aus dem Blog ausprobiert, auf den ich verwiesen habe, aber nach der Google-Suche habe ich festgestellt, dass die MIT High Low Tech Group einen hat, also habe ich auch diesen ausprobiert. Der von MIT High Low Tech ist von dieser Seite highlowtech.org/?p=1695
Joel
Ich habe alle Vorschläge von Joel und Ignacio bezüglich der Verwendung der arduino-winzigen Bibliothek anstelle des Attiny-Masters von der MIT-High-Tech-Gruppenseite ausgeführt. Ich habe endlich die ATTINY85-Boards in meinem Board-Menü angezeigt, aber ich erhalte immer noch den Fehler "Mann nicht im Gültigkeitsbereich deklariert" mit dem obigen Code. Irgendwelche Vorschläge?
Haben Sie die Manchester-Bibliothek in die Arduino IDE importiert? oder in den Bibliotheksordner legen?
Joel

Antworten:

5

attiny fehlt eine Option, die erforderlich ist, damit die Manchester-Bibliothek auf ATtinyX5-Geräten ordnungsgemäß funktioniert, insbesondere die Definition, __AVR_ATtinyX5__wann ein Gerät ausgewählt wird. In der Tat fehlen einige Dinge.

Das Paket, das ich für die ATtinyX5-Unterstützung verwende, ist arduino-tiny . Ich habe überprüft, dass es dieses Symbol richtig definiert. Ich empfehle, dass Sie Ihr aktuelles Support-Paket sichern und stattdessen arduino-tiny installieren.

Ignacio Vazquez-Abrams
quelle
Ich habe die Datei arduino-tiny-0150-0020.zip heruntergeladen. Entpackte die Datei und zog den Ordner mit dem Namen tiny in den Hardwareordner, den ich im Arduino-Ordner erstellt hatte. Als ich jedoch zur Idee ging, suchte ich unter Brettern und die Attiny-Reihe von Brettern wurde nicht angezeigt.
Joel
Was ist der richtige Weg, um das Paket zum Eis hinzuzufügen?
Joel
Welche Version der IDE verwenden Sie?
Ignacio Vazquez-Abrams
Arduino1.0.5 auf Mac OSX 10.9.2
Joel
Dann müssen Sie das Support Package für 1.0.x anstelle des für 1.5.x herunterladen.
Ignacio Vazquez-Abrams
4

Nachdem ich mich selbst durchgearbeitet habe, kann ich bestätigen, dass Joels Lösung funktioniert.

Es gibt ziemlich viele Posts, die darauf hindeuten, dass Sie Manchester nicht dazu bringen können, mit Arduino1.0x zu arbeiten, und dass Sie 0020 benötigen. Aber Sie können.

Der Schlüssel ist, das Arduino-tiny aus dem obigen Link zu verwenden, den winzigen Ordner, den Sie von dort erhalten, in / hardware zu legen und ihn dann in attiny und "potenzielle Boards" in Boards umzubenennen.

Mir ist klar, dass dies nicht mehr aussagt als Joel bereits, aber es gibt so viele widersprüchliche und widersprüchliche Informationen, dass ich dachte, es wäre wert, meine Erfahrung hinzuzufügen

Robert Jenkins
quelle
0

Ich habe das gleiche Problem mit dieser Bibliothek mit einem 8-MHz-Trinket, konnte es jedoch lösen, indem ich #define __AVR_ATtinyX5__der Datei hardware / attiny / videos / tiny8 / pins_arduino.h hinzufügte. Ich verwende das Adafruit-Support-Paket für ATtiny. Vielleicht ein bisschen hacken, aber ich kann immer noch für die UNO bauen, indem ich Board in Arduino IDE 1.0.5 auswähle.

jogco
quelle