Fehlermeldung: Fehler beim Kompilieren für das Board ATtiny84 @ 1 MHz (internal

Hallo zusammen
Ich habe ein Problem.
Ich will einen ATtiny84A-PU flashen. Dazu habe ich folgende Anleitung genutzt:

Das Programm, das ich flashen will, ist folgendes:

/**
 * A Mirf example to test the latency between two Ardunio.
 *
 * Pins:
 * Hardware SPI:
 * MISO -> 12
 * MOSI -> 11
 * SCK -> 13
 *
 * Configurable:
 * CE -> 8
 * CSN -> 7
 *
 * Note: To see best case latency comment out all Serial.println
 * statements not displaying the result and load 
 * 'ping_server_interupt' on the server.
 */

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

void setup(){
  Serial.begin(9600);
  /*
   * Setup pins / SPI.
   */
   
  /* To change CE / CSN Pins:
   * 
   * Mirf.csnPin = 9;
   * Mirf.cePin = 7;
   */
  /*
  Mirf.cePin = 7;
  Mirf.csnPin = 8;
  */
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  
  /*
   * Configure reciving address.
   */
   
  Mirf.setRADDR((byte *)"clie1");
  
  /*
   * Set the payload length to sizeof(unsigned long) the
   * return type of millis().
   *
   * NB: payload on client and server must be the same.
   */
   
  Mirf.payload = sizeof(unsigned long);
  
  /*
   * Write channel and payload config then power up reciver.
   */
   
  /*
   * To change channel:
   * 
   * Mirf.channel = 10;
   *
   * NB: Make sure channel is legal in your area.
   */
   
  Mirf.config();
  
  Serial.println("Beginning ... "); 
}

void loop(){
  unsigned long time = millis();
  
  Mirf.setTADDR((byte *)"serv1");
  
  Mirf.send((byte *)&time);
  
  while(Mirf.isSending()){
  }
  Serial.println("Finished sending");
  delay(10);
  while(!Mirf.dataReady()){
    //Serial.println("Waiting");
    if ( ( millis() - time ) > 1000 ) {
      Serial.println("Timeout on response from server!");
      return;
    }
  }
  
  Mirf.getData((byte *) &time);
  
  Serial.print("Ping: ");
  Serial.println((millis() - time));
  
  delay(1000);
}

Immer wenn ich probiere das hochzuladen kommt folgenden Fehlermeldung:

Warning: Board tiny:avr:attiny85at8 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY85AT8
Warning: Board tiny:avr:attiny84at8 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY84AT8
Warning: Board tiny:avr:attiny44at1 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY44AT1
Warning: Board tiny:avr:attiny25at8 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY25AT8
Warning: Board tiny:avr:attiny25at1 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY25AT1
Warning: Board tiny:avr:attiny85at16p doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY85AT16P
Warning: Board tiny:avr:attiny45at1 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY45AT1
Warning: Board tiny:avr:attiny44at8 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY44AT8
Warning: Board tiny:avr:attiny24at16 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY24AT16
Warning: Board tiny:avr:attiny85at16e doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY85AT16E
Warning: Board tiny:avr:attiny85at1 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY85AT1
Warning: Board tiny:avr:attiny84at16 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY84AT16
Warning: Board tiny:avr:attiny45at8 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY45AT8
Warning: Board tiny:avr:attiny84at1 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY84AT1
Warning: Board tiny:avr:attiny4313at8 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY4313AT8
Warning: Board tiny:avr:attiny85at128 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY85AT128
Warning: Board tiny:avr:attiny2313at8 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY2313AT8
Warning: Board tiny:avr:attiny2313at1 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY2313AT1
Warning: Board tiny:avr:attiny4313at1 doesn't define a 'build.board' preference. Auto-set to: AVR_ATTINY4313AT1
Build-Optionen wurden verändert, alles wird neu kompiliert
Warnung: platform.txt aus dem Kern 'Arduino Tiny' enthält veraltete tools.avrdude.cmd.path={runtime.ide.path}/hardware/tools/avr/bin/avrdude und wurde automatisch zu tools.avrdude.cmd.path={path}/bin/avrdude konvertiert. Erwägen Sie eine Aktualisierung dieses Kerns.
Warnung: platform.txt aus dem Kern 'Arduino Tiny' enthält veraltete tools.avrdude.config.path={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf und wurde automatisch zu tools.avrdude.config.path={path}/etc/avrdude.conf konvertiert. Erwägen Sie eine Aktualisierung dieses Kerns.
Warnung: platform.txt aus dem Kern 'Arduino Tiny' enthält veraltete recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} "{build.path}/{archive_file}" "{object_file}" und wurde automatisch zu recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} "{archive_file_path}" "{object_file}" konvertiert. Erwägen Sie eine Aktualisierung dieses Kerns.
Warnung: platform.txt aus dem Kern 'Arduino Tiny' enthält veraltete recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mmcu={build.mcu} -o "{build.path}/{build.project_name}.elf" {object_files} "{build.path}/{archive_file}" "-L{build.path}" -lm und wurde automatisch zu recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mmcu={build.mcu} -o "{build.path}/{build.project_name}.elf" {object_files} "{archive_file_path}" "-L{build.path}" -lm konvertiert. Erwägen Sie eine Aktualisierung dieses Kerns.
exec: "avr-g++": executable file not found in %PATH%
Fehler beim Kompilieren für das Board ATtiny84 @ 1 MHz  (internal oscillator; BOD disabled).

Was kann ich tun, dass dies nicht passiert?
Freundliche Grüsse
techniclover

Was kann ich tun, dass dies nicht passiert?

Du könntest die betreffende boards.txt und platform.txt modifizieren.

Oder dir modernere Board Definitionen beschaffen.

Hast du ein Vorschlag wie ich dasd modifizieren könnte?
Ich kenne mich damit garnicht aus.

#
# Example boards.txt from...
#
# http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1236434254/94#94
# http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1274754985/6#6
# http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1274820597/49#49
#


attiny84at16.name=ATtiny84 @ 16 MHz  (external crystal; 4.3 V BOD)

attiny84at16.upload.tool=arduino:arduinoisp

attiny84at16.upload.maximum_size=8192
attiny84at16.upload.maximum_data_size=512

# Frequency 8.0- MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms; [CKSEL=1111 SUT=11]
# Brown-out detection level at VCC=4.3 V; [BODLEVEL=100]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]
# Serial program downloading (SPI) enabled; [SPIEN=0]

attiny84at16.bootloader.low_fuses=0xFF
attiny84at16.bootloader.high_fuses=0xD4
attiny84at16.bootloader.extended_fuses=0xFF

attiny84at16.bootloader.path=empty
attiny84at16.bootloader.file=empty84at16.hex
attiny84at16.bootloader.tool=arduino:avrdude

attiny84at16.build.mcu=attiny84
attiny84at16.build.f_cpu=16000000L
attiny84at16.build.core=tiny

#######

attiny84at8.name=ATtiny84 @ 8 MHz  (internal oscillator; BOD disabled)

attiny84at8.upload.tool=arduino:arduinoisp

attiny84at8.upload.maximum_size=8192
attiny84at8.upload.maximum_data_size=512

# Default clock (slowly rising power; long delay to clock; 8 MHz internal)
# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value
# Brown-out detection disabled; [BODLEVEL=111]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]

attiny84at8.bootloader.low_fuses=0xE2
attiny84at8.bootloader.high_fuses=0xD7
attiny84at8.bootloader.extended_fuses=0xFF

attiny84at8.bootloader.path=empty
attiny84at8.bootloader.file=empty84at8.hex
attiny84at8.bootloader.tool=arduino:avrdude

attiny84at8.build.mcu=attiny84
attiny84at8.build.f_cpu=8000000L
attiny84at8.build.core=tiny

######

attiny84at1.name=ATtiny84 @ 1 MHz  (internal oscillator; BOD disabled)

attiny84at1.upload.tool=arduino:arduinoisp

attiny84at1.upload.maximum_size=8192
attiny84at1.upload.maximum_data_size=512

# Default clock (slowly rising power; long delay to clock; 8 MHz internal; divide clock by 8)
# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value
# Divide clock by 8 internally; [CKDIV8=0]
# Brown-out detection disabled; [BODLEVEL=111]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]

attiny84at1.bootloader.low_fuses=0x62
attiny84at1.bootloader.high_fuses=0xD7
attiny84at1.bootloader.extended_fuses=0xFF

attiny84at1.bootloader.path=empty
attiny84at1.bootloader.file=empty84at1.hex
attiny84at1.bootloader.tool=arduino:avrdude

attiny84at1.build.mcu=attiny84
attiny84at1.build.f_cpu=1000000L
attiny84at1.build.core=tiny

Das ist die boards.txt Datei, die ich habe. Respektive der ATtiny84 Teil davon.

Oder hast du ein Vorschlag, wo ich modernere Board Definitonen herbekomme?

Diese nutze ich für den ATTiny85: https://github.com/damellis/attiny Den 84 kann sie auch...(hoffentlich)

Den könnte sie eigentlich. Allerdings ist die Seite zu Installationsinformation nicht aufrufbar.

Allerdings ist die Seite zu Installationsinformation nicht aufrufbar.

Sach mal....

Einfach die Zip Downloaden und den Inhalt in einen der hardware Ordner werfen. Fettich.

Das habe ich auch gemacht. Funktioniert aber nicht.
Die Boards erscheinen nicht.
Ich konnte die Anleitung finden. Dort ist die Rede von einem “preferences dialog”. Wo finde ich den?

preferences dialog

Datei-->Voreinstellungen

Oh dankeschön. Das habe ich nun gefunden.
Allerdings kann ich das Programm noch nicht hochladen:
Das ist der Code:

/*

This is an attiny84 example code for the nRF24L01 that can communicate with RF24 library

All the support files and libraries for the attiny for nRF24L01 is at repo listed  below

 *  repo   : https://github.com/stanleyseow/arduino-nrf24l01/
 *  Author : Stanley Seow
 *  e-mail : stanleyseow@gmail.com
 *  date   : 8 Aug 2013
 
 Some default values to take note when using this mirf/spi85 library
 Uses Mirf forked library from https://github.com/xdarklight/arduino-nrf24l01
 
 - node addressing is similar to RF24 libs but the bytes are flipped 
 
   byte TADDR[] = {0xe3, 0xf0, 0xf0, 0xf0, 0xf0}; will matches receiver node of RF24 below 
   const uint64_t pipes[2] = { 0x7365727631LL, 0xF0F0F0F0E3LL };
 
 The repo for the RF24 lib is at https://github.com/stanleyseow/RF24/

 Added TinyDebugSerial to the codes for TX only serial debugging
 https://code.google.com/p/arduino-tiny/

*/

#include <SPI85.h>
#include <Mirf.h>
#include <MirfHardwareSpi85Driver.h>
#include <TinyDebugSerial.h>
TinyDebugSerial mySerial = TinyDebugSerial(); // PB0 on attiny84

// This USI was defined in SPI85.cpp
// Not to be confused with SPI (MOSI/MISO) used by ICSP pins
// Refer to page 61 of attiny84 datahseet
//
//#define USI-DO  5
//#define USI-DI  4
//#define USCK   6

#define CE    7    
#define CSN   3 

// ATMEL ATTINY84 / ARDUINO
//
//                           +-\/-+
//                     VCC  1|    |14  GND
//  SerialTx   (D  0)  PB0  2|    |13  AREF (D 10)
//             (D  1)  PB1  3|    |12  PA1  (D  9) 
//  RESET              PB3  4|    |11  PA2  (D  8) 
//  PWM  INT0  (D  2)  PB2  5|    |10  PA3  (D  7)  CE
//  SS/CSN     (D  3)  PA7  6|    |9   PA4  (D  6)  USCK
//  USI-DI     (D  4)  PA6  7|    |8   PA5  (D  5)  USI-DO
//                           +----+

int bufferSize = 0;
char buffer[32] = "";
unsigned int counter = 0; 
uint8_t nodeID = 0;

void setup(){
  
  mySerial.begin( 9600 );    // for tiny_debug_serial 
  
  Mirf.cePin = CE;
  Mirf.csnPin = CSN;
  Mirf.spi = &MirfHardwareSpi85;
  Mirf.init();

  // This address is compatible with my example of rpi-hub or nRF24_Arduino_as_hub
  // at repo https://github.com/stanleyseow/RF24/examples/ 
  
  byte RADDR[] = {0xe7, 0xde, 0xde, 0xde, 0xde};
  byte TADDR[] = {0xe9, 0xde, 0xde, 0xde, 0xde};
 
  // Get nodeID from TXADDR 
  nodeID = *TADDR & 0xff; 
  
  // Compatible with RF24
  Mirf.baseConfig = _BV(EN_CRC) | _BV(CRCO);
  
  // RF_DR_LOW, RF_DR_HIGH
  // 00 - 1Mbps
  // 01 - 2Mbps
  // 10 - 250Kbps
  // 11 - Reserved
  // 1<<2 & 1<<1 is for Max RF Power
  Mirf.configRegister( RF_SETUP,( 1<<RF_DR_LOW | 0<<RF_DR_HIGH ) | 1<<2 | 1<<1 );
  
  Mirf.channel = 0x55; // Same as rpi-hub and sendto_hub ( channel 85 )
  
  Mirf.setRADDR(RADDR);  
  Mirf.setTADDR(TADDR);
  Mirf.config();
  
  // Enable dynamic payload on the other side
  Mirf.configRegister( FEATURE, 1<<EN_DPL ); 
  Mirf.configRegister( DYNPD, 1<<DPL_P0 | 1<<DPL_P1 | 1<<DPL_P2 | 1<<DPL_P3 | 1<<DPL_P4 | 1<<DPL_P5 ); 
  
  delay(100);
  
  // Print out register readinds for important settings
  uint8_t rf_ch, rf_setup = 0;
  byte tx_addr[5];
  byte rx_addr[5];
  
  Mirf.readRegister(RF_CH, &rf_ch,sizeof(rf_ch));
  Mirf.readRegister(RF_SETUP, &rf_setup, sizeof(rf_setup));
  Mirf.readRegister(TX_ADDR, tx_addr, sizeof(tx_addr));
  Mirf.readRegister(RX_ADDR_P1, rx_addr, sizeof(rx_addr));
    
  mySerial.println();
  
  mySerial.print("RF_CH :0x");
  mySerial.println(rf_ch,HEX);  
  
  mySerial.print("RF_SETUP :0x");
  mySerial.println(rf_setup,HEX);  
  
  mySerial.print("TX_ADDR :");
  for ( int i=0;i<5;i++ ) {  // Loop 5 times, print in HEX
  mySerial.print( tx_addr[i], HEX);
  }
  mySerial.println();
  
  mySerial.print("RX_ADDR :");
  for ( int i=0;i<5;i++ ) {  // Loop 5 times, print in HEX
  mySerial.print( rx_addr[i], HEX);
  }
  mySerial.println();
  
  delay(1000);      // For serial debug to read the init config output
}

void loop(){
  
  uint8_t sent = false;
  unsigned long timer1;

  timer1 = millis();
  counter++;

  sprintf(buffer,"%2X,%u,%08lu",nodeID,counter,timer1);
  Mirf.payload = strlen(buffer);

  mySerial.print("Len :");
  mySerial.print(strlen(buffer));
  mySerial.print(" Buffer :");  
  mySerial.println(buffer);
 
  Mirf.send((byte *) buffer);
  
  while( Mirf.isSending() )
  {
    delay(1);
    sent = true; // Sent success
  }
  
  if (sent) {   
        mySerial.print("Sent :");
        mySerial.println(buffer);
    } else {
    }
    
    delay(1000);
} // End loop()

Das ist die Fehlermeldung:

C:\Users\Alexia\Documents\Arduino\libraries\nRF24L01\Mirf\examples\attiny84_mirf\attiny84_mirf.ino:27:19: fatal error: SPI85.h: No such file or directory

 #include <SPI85.h>

                   ^

compilation terminated.

exit status 1
Fehler beim Kompilieren für das Board ATtiny24/44/84.

Falls ihr mir helfen könnt vielen Dank.

Ich benutze seit einiger Zeit diese Boards-Datei für die ATtinys und das, seit dem ich auch Probleme mit einer anderen hatte.

https://code.google.com/archive/p/arduino-tiny/downloads

Das ist diejenige, die bei mir die Fehlermeldung ausgespuckt hat.

Jetzt meckert er die fehlende Library "SPI85.h" an.

techniclover: Das ist diejenige, die bei mir die Fehlermeldung ausgespuckt hat.

Ah, ok. Bei mir war es genau anders rum.

Edit: Stimmt, ich wollte kürzlich die RCSwitch als Empfänger auf dem Tiny85 nutzen und das funktionierte mit der (mein Link) auch nicht. Ich wusste aber, es hat schon funktioniert. Dann habe ich wieder die andere (ist noch drauf) genommen, und damit lief es wieder.

Wenn ich das richtig verstanden habe, sollte diese Library, wie auch die Mirf Library in der von mir downgeloadeten nRF24L01 Library enthalten sein. https://github.com/stanleyseow/arduino-nrf24l01 Das ist die Library. Den Link habe ich aus dem Arduino Playground.

Ja, die ist auch drin, aber die muss sicher erst installiert (in der IDE) werden.

Also ich habe es nun geschafft die Mirf.h und die Spi85.h zu instawllieren. Jetzt fehlt mir noch die tinydebugserial.h Wo finde ich diese am besten? Vielen Dank

Auch bei github https://github.com/mchr3k/arduino/blob/master/hardware/tiny/cores/tiny/TinyDebugSerial.h

Das ist jetzt wirklich Anfängermässig, was ich auch bin. Aber wie kann ich jetzt diese Datei auf meinem Laptop speichern? Bis jetzt konnte ich bei den Github Dateien immer ein ZIP-File downloaden.

Ok, im Pfad oben drüber auf arduino klicken und die Datei runterladen. Danach installieren.

Muss ich das ganze gedownloadete File installieren oder reicht nur der Tiny Teil?