Forum: Mikrocontroller und Digitale Elektronik RFM69HW und ATTiny84


von Maximilian S. (ms95)


Lesenswert?

Hallo zusammen!

Ich bin an einem Projekt dran, bei welchem ein RFM69HW-Modul mit einem 
ATTiny84 geschehen soll. Im Endeffekt soll das Modul später nur 
dauerhaft auf seiner Frequenz senden, mehr erstmal nicht.

Als Programmer für dem ATTiny84 dient ein Arduino UNO. Verdrahtung hat 
wunderbar geklappt und LEDs konnte ich auch blinken lassen. Es gibt bei 
github ja von Felix Rusu eine gute Bibliothek allgemein für das RFM69. 
Um das Modul dann auch in den Betrieb zu nehmen, gibt es sogar auch eine 
Anleitung: 
https://learn.sparkfun.com/tutorials/rfm69hcw-hookup-guide/all

Allerdings klappt der dort genannte Beispiel-Code bei mir nicht und ich 
habe keine Ahnung, was ich anpassen muss, damit ich das RFM-Modul über 
meinen ATTiny ansteuern kann. Bin im Programmieren nicht so ganz fit und 
hoffe, dass mir hier irgendjemand weiterhelfen kann...bin am 
verzweifeln...

Viele Grüße und bleibt gesund!

Max

von Pabst (Gast)


Lesenswert?

Es werde geschehen, auch ohne Schaltplan und Code.
Frohe Ostern.

von M. Ulti (Gast)


Lesenswert?

Ein paar Informationen wo es genau hapert wären nicht schlecht.

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Hallo zusammen!
>
> Ich bin an einem Projekt dran, bei welchem ein RFM69HW-Modul mit einem
> ATTiny84 geschehen soll. Im Endeffekt soll das Modul später nur
> dauerhaft auf seiner Frequenz senden, mehr erstmal nicht.
>
> Als Programmer für dem ATTiny84 dient ein Arduino UNO. Verdrahtung hat
> wunderbar geklappt und LEDs konnte ich auch blinken lassen. Es gibt bei
> github ja von Felix Rusu eine gute Bibliothek allgemein für das RFM69.
> Um das Modul dann auch in den Betrieb zu nehmen, gibt es sogar auch eine
> Anleitung:
> https://learn.sparkfun.com/tutorials/rfm69hcw-hookup-guide/all

Das ist für AVR's mit SPI-Hardware gedacht. Die hat der Tiny84 nicht 
wirklich, sondern nur USI. Da brauchst du eine neuen SPI-Treiber.

> Allerdings klappt der dort genannte Beispiel-Code bei mir nicht und ich
> habe keine Ahnung, was ich anpassen muss, damit ich das RFM-Modul über
> meinen ATTiny ansteuern kann. Bin im Programmieren nicht so ganz fit und
> hoffe, dass mir hier irgendjemand weiterhelfen kann...bin am
> verzweifeln...

Schlechte Karten für "neues SPI".

> Viele Grüße und bleibt gesund!
>
> Max

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Hallo zusammen!
>
> Ich bin an einem Projekt dran, bei welchem ein RFM69HW-Modul mit einem
> ATTiny84 geschehen soll. Im Endeffekt soll das Modul später nur
> dauerhaft auf seiner Frequenz senden, mehr erstmal nicht.
>
> Als Programmer für dem ATTiny84 dient ein Arduino UNO. Verdrahtung hat
> wunderbar geklappt und LEDs konnte ich auch blinken lassen. Es gibt bei
> github ja von Felix Rusu eine gute Bibliothek allgemein für das RFM69.
> Um das Modul dann auch in den Betrieb zu nehmen, gibt es sogar auch eine
> Anleitung:
> https://learn.sparkfun.com/tutorials/rfm69hcw-hookup-guide/all

Das ist für AVR's mit SPI-Hardware gedacht. Die hat der Tiny84 nicht 
wirklich, sondern nur USI. Da brauchst du eine neuen SPI-Treiber.

> Allerdings klappt der dort genannte Beispiel-Code bei mir nicht und ich
> habe keine Ahnung, was ich anpassen muss, damit ich das RFM-Modul über
> meinen ATTiny ansteuern kann. Bin im Programmieren nicht so ganz fit und
> hoffe, dass mir hier irgendjemand weiterhelfen kann...bin am
> verzweifeln...

Schlechte Karten für "neues SPI".

> Viele Grüße und bleibt gesund!
>
> Max

Edit:

Es gibt tiny84-SPI:
https://github.com/JChristensen/tinySPI

muß aber noch mit dem Rest zusammengebracht werden
Ich hoffen du hast LA oder Scope.

: Bearbeitet durch User
von Maximilian S. (ms95)


Angehängte Dateien:

Lesenswert?

Schaltplan und hier der Code:

// RFM69HCW Example Sketch
// Send serial input characters from one RFM69 node to another
// Based on RFM69 library sample code by Felix Rusu
// http://LowPowerLab.com/contact
// Modified for RFM69HCW by Mike Grusin, 4/16

// This sketch will show you the basics of using an
// RFM69HCW radio module. SparkFun's part numbers are:
// 915MHz: https://www.sparkfun.com/products/12775
// 434MHz: https://www.sparkfun.com/products/12823

// See the hook-up guide for wiring instructions:
// https://learn.sparkfun.com/tutorials/rfm69hcw-hookup-guide

// Uses the RFM69 library by Felix Rusu, LowPowerLab.com
// Original library: https://www.github.com/lowpowerlab/rfm69
// SparkFun repository: https://github.com/sparkfun/RFM69HCW_Breakout

// Include the RFM69 and SPI libraries:

#include <RFM69.h>
#include <SPI.h>


// Addresses for this node. CHANGE THESE FOR EACH NODE!

#define NETWORKID     0   // Must be the same for all nodes
#define MYNODEID      1   // My node ID
#define TONODEID      2   // Destination node ID

// RFM69 frequency, uncomment the frequency of your module:

#define FREQUENCY   RF69_433MHZ
//#define FREQUENCY     RF69_915MHZ

// AES encryption (or not):

#define ENCRYPT       true // Set to "true" to use encryption
#define ENCRYPTKEY    "TOPSECRETPASSWRD" // Use the same 16-byte key on 
all nodes

// Use ACKnowledge when sending messages (or not):

#define USEACK        true // Request ACKs or not

// Packet sent/received indicator LED (optional):

#define LED           8 // LED positive pin
//#define GND           8 // LED ground pin

// Create a library object for our RFM69HCW module:

RFM69 radio;

void setup()
{
  // Open a serial port so we can send keystrokes to the module:

  Serial.begin(9600);
  Serial.print("Node ");
  Serial.print(MYNODEID,DEC);
  Serial.println(" ready");

  // Set up the indicator LED (optional):

  pinMode(LED,OUTPUT);
  digitalWrite(LED,HIGH);
  //pinMode(GND,OUTPUT);
  //digitalWrite(GND,LOW);

  // Initialize the RFM69HCW:
  // radio.setCS(10);  //uncomment this if using Pro Micro
  radio.initialize(FREQUENCY, MYNODEID, NETWORKID);
  radio.setHighPower(); // Always use this for RFM69HCW

  // Turn on encryption if desired:

  if (ENCRYPT)
    radio.encrypt(ENCRYPTKEY);
}

void loop()
{
  // Set up a "buffer" for characters that we'll send:

  static char sendbuffer[62];
  static int sendlength = 0;

  // SENDING

  // In this section, we'll gather serial characters and
  // send them to the other node if we (1) get a carriage return,
  // or (2) the buffer is full (61 characters).

  // If there is any serial input, add it to the buffer:

  if (Serial.available() > 0)
  {
    char input = Serial.read();

    if (input != '\r') // not a carriage return
    {
      sendbuffer[sendlength] = input;
      sendlength++;
    }

    // If the input is a carriage return, or the buffer is full:

    if ((input == '\r') || (sendlength == 61)) // CR or buffer full
    {
      // Send the packet!


      Serial.print("sending to node ");
      Serial.print(TONODEID, DEC);
      Serial.print(", message [");
      for (byte i = 0; i < sendlength; i++)
        Serial.print(sendbuffer[i]);
      Serial.println("]");

      // There are two ways to send packets. If you want
      // acknowledgements, use sendWithRetry():

      if (USEACK)
      {
        if (radio.sendWithRetry(TONODEID, sendbuffer, sendlength))
          Serial.println("ACK received!");
        else
          Serial.println("no ACK received");
      }

      // If you don't need acknowledgements, just use send():

      else // don't use ACK
      {
        radio.send(TONODEID, sendbuffer, sendlength);
      }

      sendlength = 0; // reset the packet
      Blink(LED,10);
    }
  }

  // RECEIVING

  // In this section, we'll check with the RFM69HCW to see
  // if it has received any packets:

  if (radio.receiveDone()) // Got one!
  {
    // Print out the information:

    Serial.print("received from node ");
    Serial.print(radio.SENDERID, DEC);
    Serial.print(", message [");

    // The actual message is contained in the DATA array,
    // and is DATALEN bytes in size:

    for (byte i = 0; i < radio.DATALEN; i++)
      Serial.print((char)radio.DATA[i]);

    // RSSI is the "Receive Signal Strength Indicator",
    // smaller numbers mean higher power.

    Serial.print("], RSSI ");
    Serial.println(radio.RSSI);

    // Send an ACK if requested.
    // (You don't need this code if you're not using ACKs.)

    if (radio.ACKRequested())
    {
      radio.sendACK();
      Serial.println("ACK sent");
    }
    Blink(LED,10);
  }
}

void Blink(byte PIN, int DELAY_MS)
// Blink an LED for a given number of ms
{
  digitalWrite(PIN,HIGH);
  delay(DELAY_MS);
  digitalWrite(PIN,LOW);
}

von Maximilian S. (ms95)


Lesenswert?

Wie kann man denn die Tiny SPI einbinden? einfach wieder mit include als 
Bibliothek?


Ist es denn grundsätzlich möglich, mein Vorhaben umzusetzen? Ich bin 
echt über jede Hilfe dankbar!

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Wie kann man denn die Tiny SPI einbinden? einfach wieder mit include als
> Bibliothek?

In einfachsten Fall (Q&D) die spi.h/spi.c ins Projektverzeichnis 
kopieren.


> Ist es denn grundsätzlich möglich, mein Vorhaben umzusetzen? Ich bin
> echt über jede Hilfe dankbar!

Hab mal die rfm69-Lib angeschaut, die benutzt nichts, was die 
tiny84-spi-Lib nicht bietet. Also erst mal compilieren und 
Fehlermeldungen analysieren.
In der RFM69.h gibt es Konfiguration der Pins, etc. Da muß, ausgehen vom 
atmega328 ein Eintrag für den Tiny84 rein, also dessen SPI-Pins.

von Carl D. (jcw2)


Lesenswert?

Rfm69.h:
1
...
2
  #elif defined(__AVR_ATmega32U4__)
3
   // Leonardo, Yun, Micro, Pro Micro, Flora, Esplora
4
   // 3->0, 2->1, 0->2, 1->3, 7->4
5
   #define digitalPinToInterrupt(p) \
6
      ((p) == 0 ? 2 : ((p) == 1 ? 3 : \
7
       ((p) == 2 ? 1 : ((p) == 3 ? 0 : \
8
        ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
9
//>> neu
10
  #elif defined(__AVR_ATtiny84__)
11
   // Leonardo, Yun, Micro, Pro Micro, Flora, Esplora
12
   // 3->0, 2->1, 0->2, 1->3, 7->4
13
   #define digitalPinToInterrupt(p) \
14
      ((p) == 0 ? 8 : NOT_AN_INTERRUPT)
15
//<<neu
16
  #else
17
   // All other arduino except Due:
18
   // Serial Arduino, Extreme, NG, BT, Uno, Diecimila, Duemilanove, 
19
   // Nano, Menta, Pro, Mini 04, Fio, LilyPad, Ethernet etc
20
   // 2->0, 3->1
21
   #define digitalPinToInterrupt(p) \
22
      ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT))
23
  #endif
24
...
25
#elif defined(__AVR_ATmega32U4__)
26
  #define RF69_IRQ_PIN          7
27
//>> neu
28
#elif defined(__AVR_ATmega32U4__)
29
  #define RF69_IRQ_PIN          8   /* Int0 Pin nach Arduino Nummerierung */
30
//<<< neu

Ohne Gewähr!

von Maximilian S. (ms95)


Lesenswert?

Ich habe die Änderungen vorgenommen. Wenn ich meinen Sketch überprüfe, 
kommen folgende Fehlermeldungen:

Arduino: 1.8.12 (Windows 10), Board: "ATtiny24/44/84, ATtiny84, Internal 
8 MHz"

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In member 
function 'void SPISettings::init_AlwaysInline(uint32_t, uint8_t, 
uint8_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:16: 
error: 'SPE' was not declared in this scope

     spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 
0) |

                ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:16: note: 
suggested alternative: 'SPH'

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:27: 
error: 'MSTR' was not declared in this scope

     spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 
0) |

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:27: note: 
suggested alternative: 'PSTR'

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:65: 
error: 'DORD' was not declared in this scope

     spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 
0) |

                                                                 ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:65: note: 
suggested alternative: 'DDRB'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::beginTransaction(SPISettings)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:203:5: error: 
'SPCR' was not declared in this scope

     SPCR = settings.spcr;

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:203:5: note: 
suggested alternative: 'EECR'

     SPCR = settings.spcr;

     ^~~~

     EECR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:204:5: error: 
'SPSR' was not declared in this scope

     SPSR = settings.spsr;

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:204:5: note: 
suggested alternative: 'ACSR'

     SPSR = settings.spsr;

     ^~~~

     ACSR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static uint8_t SPIClass::transfer(uint8_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:209:5: error: 
'SPDR' was not declared in this scope

     SPDR = data;

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:209:5: note: 
suggested alternative: 'EEDR'

     SPDR = data;

     ^~~~

     EEDR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:217:14: 
error: 'SPSR' was not declared in this scope

     while (!(SPSR & _BV(SPIF))) ; // wait

              ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:217:14: note: 
suggested alternative: 'ACSR'

     while (!(SPSR & _BV(SPIF))) ; // wait

              ^~~~

              ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:217:25: 
error: 'SPIF' was not declared in this scope

     while (!(SPSR & _BV(SPIF))) ; // wait

                         ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:217:25: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static uint16_t SPIClass::transfer16(uint16_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:223:11: 
error: 'SPCR' was not declared in this scope

     if (!(SPCR & _BV(DORD))) {

           ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:223:11: note: 
suggested alternative: 'EECR'

     if (!(SPCR & _BV(DORD))) {

           ^~~~

           EECR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:223:22: 
error: 'DORD' was not declared in this scope

     if (!(SPCR & _BV(DORD))) {

                      ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:223:22: note: 
suggested alternative: 'DDRB'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:224:7: error: 
'SPDR' was not declared in this scope

       SPDR = in.msb;

       ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:224:7: note: 
suggested alternative: 'EEDR'

       SPDR = in.msb;

       ^~~~

       EEDR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:226:16: 
error: 'SPSR' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:226:16: note: 
suggested alternative: 'ACSR'

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

                ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:226:27: 
error: 'SPIF' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:226:27: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:230:16: 
error: 'SPSR' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:230:16: note: 
suggested alternative: 'ACSR'

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

                ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:230:27: 
error: 'SPIF' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:230:27: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:233:7: error: 
'SPDR' was not declared in this scope

       SPDR = in.lsb;

       ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:233:7: note: 
suggested alternative: 'EEDR'

       SPDR = in.lsb;

       ^~~~

       EEDR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:235:16: 
error: 'SPSR' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:235:16: note: 
suggested alternative: 'ACSR'

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

                ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:235:27: 
error: 'SPIF' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:235:27: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:239:16: 
error: 'SPSR' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:239:16: note: 
suggested alternative: 'ACSR'

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

                ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:239:27: 
error: 'SPIF' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:239:27: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::transfer(void*, size_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:247:5: error: 
'SPDR' was not declared in this scope

     SPDR = *p;

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:247:5: note: 
suggested alternative: 'EEDR'

     SPDR = *p;

     ^~~~

     EEDR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:250:16: 
error: 'SPSR' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:250:16: note: 
suggested alternative: 'ACSR'

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

                ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:250:27: 
error: 'SPIF' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:250:27: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:255:14: 
error: 'SPSR' was not declared in this scope

     while (!(SPSR & _BV(SPIF))) ;

              ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:255:14: note: 
suggested alternative: 'ACSR'

     while (!(SPSR & _BV(SPIF))) ;

              ^~~~

              ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:255:25: 
error: 'SPIF' was not declared in this scope

     while (!(SPSR & _BV(SPIF))) ;

                         ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:255:25: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::setBitOrder(uint8_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:292:31: 
error: 'SPCR' was not declared in this scope

     if (bitOrder == LSBFIRST) SPCR |= _BV(DORD);

                               ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:292:31: note: 
suggested alternative: 'EECR'

     if (bitOrder == LSBFIRST) SPCR |= _BV(DORD);

                               ^~~~

                               EECR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:292:43: 
error: 'DORD' was not declared in this scope

     if (bitOrder == LSBFIRST) SPCR |= _BV(DORD);

                                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:292:43: note: 
suggested alternative: 'DDRB'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:293:10: 
error: 'SPCR' was not declared in this scope

     else SPCR &= ~(_BV(DORD));

          ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:293:10: note: 
suggested alternative: 'EECR'

     else SPCR &= ~(_BV(DORD));

          ^~~~

          EECR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:293:24: 
error: 'DORD' was not declared in this scope

     else SPCR &= ~(_BV(DORD));

                        ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:293:24: note: 
suggested alternative: 'DDRB'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::setDataMode(uint8_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:298:5: error: 
'SPCR' was not declared in this scope

     SPCR = (SPCR & ~SPI_MODE_MASK) | dataMode;

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:298:5: note: 
suggested alternative: 'EECR'

     SPCR = (SPCR & ~SPI_MODE_MASK) | dataMode;

     ^~~~

     EECR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::setClockDivider(uint8_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:303:5: error: 
'SPCR' was not declared in this scope

     SPCR = (SPCR & ~SPI_CLOCK_MASK) | (clockDiv & SPI_CLOCK_MASK);

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:303:5: note: 
suggested alternative: 'EECR'

     SPCR = (SPCR & ~SPI_CLOCK_MASK) | (clockDiv & SPI_CLOCK_MASK);

     ^~~~

     EECR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:304:5: error: 
'SPSR' was not declared in this scope

     SPSR = (SPSR & ~SPI_2XCLOCK_MASK) | ((clockDiv >> 2) & 
SPI_2XCLOCK_MASK);

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:304:5: note: 
suggested alternative: 'ACSR'

     SPSR = (SPSR & ~SPI_2XCLOCK_MASK) | ((clockDiv >> 2) & 
SPI_2XCLOCK_MASK);

     ^~~~

     ACSR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::attachInterrupt()':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:309:42: 
error: 'SPCR' was not declared in this scope

   inline static void attachInterrupt() { SPCR |= _BV(SPIE); }

                                          ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:309:42: note: 
suggested alternative: 'EECR'

   inline static void attachInterrupt() { SPCR |= _BV(SPIE); }

                                          ^~~~

                                          EECR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:309:54: 
error: 'SPIE' was not declared in this scope

   inline static void attachInterrupt() { SPCR |= _BV(SPIE); }

                                                      ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:309:54: note: 
suggested alternative: 'ACIE'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::detachInterrupt()':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:310:42: 
error: 'SPCR' was not declared in this scope

   inline static void detachInterrupt() { SPCR &= ~_BV(SPIE); }

                                          ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:310:42: note: 
suggested alternative: 'EECR'

   inline static void detachInterrupt() { SPCR &= ~_BV(SPIE); }

                                          ^~~~

                                          EECR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\sketch_apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:310:55: 
error: 'SPIE' was not declared in this scope

   inline static void detachInterrupt() { SPCR &= ~_BV(SPIE); }

                                                       ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:310:55: note: 
suggested alternative: 'ACIE'

In file included from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:0:

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h: At global 
scope:

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:117:33: error: 
'SS' was not declared in this scope

 #define RF69_SPI_CS             SS // SS is the SPI slave select pin, 
for instance D10 on ATmega328

                                 ^

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:190:34: note: 
in expansion of macro 'RF69_SPI_CS'

     RFM69(uint8_t slaveSelectPin=RF69_SPI_CS, uint8_t 
interruptPin=RF69_IRQ_PIN, bool isRFM69HW=false);

                                  ^~~~~~~~~~~

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:117:33: note: 
suggested alternative: 'SE'

 #define RF69_SPI_CS             SS // SS is the SPI slave select pin, 
for instance D10 on ATmega328

                                 ^

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:190:34: note: 
in expansion of macro 'RF69_SPI_CS'

     RFM69(uint8_t slaveSelectPin=RF69_SPI_CS, uint8_t 
interruptPin=RF69_IRQ_PIN, bool isRFM69HW=false);

                                  ^~~~~~~~~~~

In file included from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:3:0:

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\tinySPI-master\src/tinySPI.h:54:16: 
error: conflicting declaration 'tinySPI SPI'

 extern tinySPI SPI;

                ^~~

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:322:17: note: 
previous declaration as 'SPIClass SPI'

 extern SPIClass SPI;

                 ^~~

sketch_apr07a:34:7: error: call to 'RFM69::RFM69(uint8_t, uint8_t, 
bool)' uses the default argument for parameter 1, which is not yet 
defined

 RFM69 radio;

       ^~~~~

C:\Users\Maximilian Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino: In 
function 'void setup()':

sketch_apr07a:40:3: error: 'Serial' was not declared in this scope

   Serial.begin(9600);

   ^~~~~~

C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:40:3: note: suggested 
alternative: 'Stream'

   Serial.begin(9600);

   ^~~~~~

   Stream

C:\Users\Maximilian Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino: In 
function 'void loop()':

sketch_apr07a:78:7: error: 'Serial' was not declared in this scope

   if (Serial.available() > 0)

       ^~~~~~

C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:78:7: note: suggested 
alternative: 'Stream'

   if (Serial.available() > 0)

       ^~~~~~

       Stream

sketch_apr07a:134:5: error: 'Serial' was not declared in this scope

     Serial.print("received from node ");

     ^~~~~~

C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:134:5: note: suggested 
alternative: 'Stream'

     Serial.print("received from node ");

     ^~~~~~

     Stream

exit status 1
call to 'RFM69::RFM69(uint8_t, uint8_t, bool)' uses the default argument 
for parameter 1, which is not yet defined

von Carl D. (jcw2)


Lesenswert?

Hab jetzt nur mal den Anfang gelesen.
Ist die CPU auf attiny84 eingestellt?
Das braucht die tief drin verwendete AvrLibC. Um die richtigen 
Definitionen für den Chip zu finden.
Bin kein wirklicher Arduino-User und wenn dann benutze ich (als 
Eclipse-Anhänger) Sloeber. Meist verwende ich aber das Avr-Plugin, da 
könnt ich dir genau sagen, was einzustellen ist.

von Maximilian S. (ms95)


Lesenswert?

Wenn ich als Board meinen Arduino UNO auswähle, klappt das kompilieren. 
Allerdings sobald ich wieder alles auf den ATTiny84 einstelle, kommt der 
oben gepostete Fehlerkatalog

von Maximilian S. (ms95)


Lesenswert?

Ich denke schon, dass ich alles in der Hinsicht richtig eingestellt 
hatte.

Wie könnte ich den mit dem AVR-PlugIn arbeiten? Bräuchte ich dafür einen 
anderen Programmer? dafür gibt es glaube ich garnicht die ganzen 
Bibliotheken und codes oder?

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Wenn ich als Board meinen Arduino UNO auswähle, klappt das kompilieren.
> Allerdings sobald ich wieder alles auf den ATTiny84 einstelle, kommt der
> oben gepostete Fehlerkatalog

Hast du denn ATtiny84 Support installiert?
Benutzt du die Arduino IDE?

Eventuell hilft das:
http://wiki.lauerbach.de/wiki/view.do?page=ATTiny

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Ich denke schon, dass ich alles in der Hinsicht richtig eingestellt
> hatte.
>
> Wie könnte ich den mit dem AVR-PlugIn arbeiten? Bräuchte ich dafür einen
> anderen Programmer? dafür gibt es glaube ich garnicht die ganzen
> Bibliotheken und codes oder?

Besorg dir Sloeber? Das ist ein für Arduino konfiguriertes Eclipse, das 
komfortables Installieren von Plattformen, Boards, Libraries erlaubt und 
dabei auch die notwendigen Toolchains installiert.

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

Genau bisher nutze ich die Arduino IDE. Den ATtiny84-Support habe ich 
auch eingerichtet.

Das wäre für mich kein Problem Sloeber zu holen, aber an den 
Fehlermeldungen wird sich kaum was ändern oder?
Oder hast du dahingehend eine Idee?

von Marble (Gast)


Lesenswert?

@ TO

Gehe die Fehlermeldungen durch und stelle fest woran es liegt.

So wie ich es sehe kommen die Fehlermeldungen, weil der Quelltext nicht 
für deinen Controller geschrieben wurde.

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Genau bisher nutze ich die Arduino IDE. Den ATtiny84-Support habe ich
> auch eingerichtet.
>
> Das wäre für mich kein Problem Sloeber zu holen, aber an den
> Fehlermeldungen wird sich kaum was ändern oder?
> Oder hast du dahingehend eine Idee?

Versuch mal dem Compiler ein "-v" mitzugeben, dann erzählt der ganz 
detailliert was im mitgeteilt wurde, bzw. was er aus Defaults, 
Environment und CommandLineOption als zu nutzen erkannt hat.
Im Compilerautput müßte dann "attiny84" zu finden sein.

von Maximilian S. (ms95)


Lesenswert?

Marble schrieb:
> So wie ich es sehe kommen die Fehlermeldungen, weil der Quelltext nicht
> für deinen Controller geschrieben wurde.

Wäre es ein großer Aufwand diesen auf den ATtiny umzuwandeln?

von Carl D. (jcw2)


Lesenswert?

Noch durch die Fehler gegangen...
Du hast anscheinend nich die Mega-SPI im Einsatz.

Nenn mal die Tiny84er Varianten (spi.h, spi.c), die sich hoffentlich in 
deinem Sourceverzeichnis befinden in spi_84.h/.c um und ändere das 
#include Statement auf "spi_84.h". Die "" sind wichtig, dann wird nur 
lokal im aktuellen Verzeichnis des inkludierenden Files gesucht.

von Maximilian S. (ms95)


Lesenswert?

Die ausführliche Kompilierung führt dazu:



Arduino: 1.8.12 (Windows 10), Board: "ATtiny24/44/84, ATtiny84, Internal 
8 MHz"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs 
-logger=machine -hardware C:\Program Files (x86)\Arduino\hardware 
-hardware C:\Users\Maximilian Schrader\AppData\Local\Arduino15\packages 
-tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program 
Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Maximilian 
Schrader\AppData\Local\Arduino15\packages -built-in-libraries C:\Program 
Files (x86)\Arduino\libraries -libraries C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries 
-fqbn=attiny:avr:ATtinyX4:cpu=attiny84,clock=internal8 
-ide-version=10812 -build-path 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117 -warnings=none 
-build-cache C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_cache_618562 
-prefs=build.warn_data_percentage=75 
-prefs=runtime.tools.avrdude.path=C:\Program Files 
(x86)\Arduino\hardware\tools\avr 
-prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files 
(x86)\Arduino\hardware\tools\avr 
-prefs=runtime.tools.arduinoOTA.path=C:\Program Files 
(x86)\Arduino\hardware\tools\avr 
-prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files 
(x86)\Arduino\hardware\tools\avr 
-prefs=runtime.tools.avr-gcc.path=C:\Program Files 
(x86)\Arduino\hardware\tools\avr 
-prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\Program 
Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine 
-hardware C:\Program Files (x86)\Arduino\hardware -hardware 
C:\Users\Maximilian Schrader\AppData\Local\Arduino15\packages -tools 
C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files 
(x86)\Arduino\hardware\tools\avr -tools C:\Users\Maximilian 
Schrader\AppData\Local\Arduino15\packages -built-in-libraries C:\Program 
Files (x86)\Arduino\libraries -libraries C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries 
-fqbn=attiny:avr:ATtinyX4:cpu=attiny84,clock=internal8 
-ide-version=10812 -build-path 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117 -warnings=none 
-build-cache C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_cache_618562 
-prefs=build.warn_data_percentage=75 
-prefs=runtime.tools.avrdude.path=C:\Program Files 
(x86)\Arduino\hardware\tools\avr 
-prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files 
(x86)\Arduino\hardware\tools\avr 
-prefs=runtime.tools.arduinoOTA.path=C:\Program Files 
(x86)\Arduino\hardware\tools\avr 
-prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files 
(x86)\Arduino\hardware\tools\avr 
-prefs=runtime.tools.avr-gcc.path=C:\Program Files 
(x86)\Arduino\hardware\tools\avr 
-prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\Program 
Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino
Using board 'ATtinyX4' from platform in folder: C:\Users\Maximilian 
Schrader\AppData\Local\Arduino15\packages\attiny\hardware\avr\1.0.2
Using core 'arduino' from platform in folder: C:\Program Files 
(x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14" 
"C:\\Users\\MAXIMI~1\\AppData\\Local\\Temp\\arduino_build_420117\\sketch 
\\sketch_apr07a.ino.cpp"  -o nul
Alternatives for RFM69.h: [RFM69-master@1.3.0]
ResolveLibrary(RFM69.h)
  -> candidates: [RFM69-master@1.3.0]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" 
"C:\\Users\\MAXIMI~1\\AppData\\Local\\Temp\\arduino_build_420117\\sketch 
\\sketch_apr07a.ino.cpp"  -o nul
Alternatives for SPI.h: [SPI@1.0]
ResolveLibrary(SPI.h)
  -> candidates: [SPI@1.0]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"C:\\Users\\MAXIMI~1\\AppData\\Local\\Temp\\arduino_build_420117\\sketch 
\\sketch_apr07a.ino.cpp"  -o nul
Alternatives for tinySPI.h: [tinySPI-master@1.1.2]
ResolveLibrary(tinySPI.h)
  -> candidates: [tinySPI-master@1.1.2]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src" 
"C:\\Users\\MAXIMI~1\\AppData\\Local\\Temp\\arduino_build_420117\\sketch 
\\sketch_apr07a.ino.cpp"  -o nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src" 
"C:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master\\RFM69.cpp" -o nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src" 
"C:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master\\RFM69_ATC.cpp" -o 
nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src" 
"C:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master\\RFM69_OTA.cpp" -o 
nul
Alternatives for SPIFlash.h: [SPIFlash_LowPowerLab@101.1.2]
ResolveLibrary(SPIFlash.h)
  -> candidates: [SPIFlash_LowPowerLab@101.1.2]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\SPIFlash_LowPowerLab" 
"C:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master\\RFM69_OTA.cpp" -o 
nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\SPIFlash_LowPowerLab" 
"C:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src\\SPI.cpp" -o 
nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\SPIFlash_LowPowerLab" 
"C:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src\\tinySPI.cp 
p"  -o nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\SPIFlash_LowPowerLab" 
"C:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\SPIFlash_LowPowerLab\\SPIFlash. 
cpp"  -o nul
Generating function prototypes...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x 
c++ -E -CC -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 
-DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\SPIFlash_LowPowerLab" 
"C:\\Users\\MAXIMI~1\\AppData\\Local\\Temp\\arduino_build_420117\\sketch 
\\sketch_apr07a.ino.cpp"  -o 
"C:\\Users\\MAXIMI~1\\AppData\\Local\\Temp\\arduino_build_420117\\prepro 
c\\ctags_target_for_gcc_minus_e.cpp"
"C:\\Program Files 
(x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u 
--language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns 
--line-directives 
"C:\\Users\\MAXIMI~1\\AppData\\Local\\Temp\\arduino_build_420117\\prepro 
c\\ctags_target_for_gcc_minus_e.cpp"
Sketch wird kompiliert...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c 
-g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections 
-fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto 
-mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10812 -DARDUINO_attiny 
-DARDUINO_ARCH_AVR "-IC:\\Program Files 
(x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" 
"-IC:\\Users\\Maximilian 
Schrader\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1. 
0.2\\variants\\tiny14"  "-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\RFM69-master" "-IC:\\Program 
Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\tinySPI-master\\src" 
"-IC:\\Users\\Maximilian 
Schrader\\Documents\\Arduino\\libraries\\SPIFlash_LowPowerLab" 
"C:\\Users\\MAXIMI~1\\AppData\\Local\\Temp\\arduino_build_420117\\sketch 
\\sketch_apr07a.ino.cpp"  -o 
"C:\\Users\\MAXIMI~1\\AppData\\Local\\Temp\\arduino_build_420117\\sketch 
\\sketch_apr07a.ino.cpp.o"
In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In member 
function 'void SPISettings::init_AlwaysInline(uint32_t, uint8_t, 
uint8_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:16: 
error: 'SPE' was not declared in this scope

     spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 
0) |

                ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:16: note: 
suggested alternative: 'SPH'

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:27: 
error: 'MSTR' was not declared in this scope

     spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 
0) |

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:27: note: 
suggested alternative: 'PSTR'

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:65: 
error: 'DORD' was not declared in this scope

     spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 
0) |

                                                                 ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:146:65: note: 
suggested alternative: 'DDRB'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::beginTransaction(SPISettings)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:203:5: error: 
'SPCR' was not declared in this scope

     SPCR = settings.spcr;

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:203:5: note: 
suggested alternative: 'EECR'

     SPCR = settings.spcr;

     ^~~~

     EECR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:204:5: error: 
'SPSR' was not declared in this scope

     SPSR = settings.spsr;

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:204:5: note: 
suggested alternative: 'ACSR'

     SPSR = settings.spsr;

     ^~~~

     ACSR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static uint8_t SPIClass::transfer(uint8_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:209:5: error: 
'SPDR' was not declared in this scope

     SPDR = data;

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:209:5: note: 
suggested alternative: 'EEDR'

     SPDR = data;

     ^~~~

     EEDR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:217:14: 
error: 'SPSR' was not declared in this scope

     while (!(SPSR & _BV(SPIF))) ; // wait

              ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:217:14: note: 
suggested alternative: 'ACSR'

     while (!(SPSR & _BV(SPIF))) ; // wait

              ^~~~

              ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:217:25: 
error: 'SPIF' was not declared in this scope

     while (!(SPSR & _BV(SPIF))) ; // wait

                         ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:217:25: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static uint16_t SPIClass::transfer16(uint16_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:223:11: 
error: 'SPCR' was not declared in this scope

     if (!(SPCR & _BV(DORD))) {

           ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:223:11: note: 
suggested alternative: 'EECR'

     if (!(SPCR & _BV(DORD))) {

           ^~~~

           EECR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:223:22: 
error: 'DORD' was not declared in this scope

     if (!(SPCR & _BV(DORD))) {

                      ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:223:22: note: 
suggested alternative: 'DDRB'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:224:7: error: 
'SPDR' was not declared in this scope

       SPDR = in.msb;

       ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:224:7: note: 
suggested alternative: 'EEDR'

       SPDR = in.msb;

       ^~~~

       EEDR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:226:16: 
error: 'SPSR' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:226:16: note: 
suggested alternative: 'ACSR'

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

                ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:226:27: 
error: 'SPIF' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:226:27: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:230:16: 
error: 'SPSR' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:230:16: note: 
suggested alternative: 'ACSR'

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

                ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:230:27: 
error: 'SPIF' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:230:27: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:233:7: error: 
'SPDR' was not declared in this scope

       SPDR = in.lsb;

       ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:233:7: note: 
suggested alternative: 'EEDR'

       SPDR = in.lsb;

       ^~~~

       EEDR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:235:16: 
error: 'SPSR' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:235:16: note: 
suggested alternative: 'ACSR'

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

                ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:235:27: 
error: 'SPIF' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:235:27: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:239:16: 
error: 'SPSR' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:239:16: note: 
suggested alternative: 'ACSR'

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

                ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:239:27: 
error: 'SPIF' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:239:27: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::transfer(void*, size_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:247:5: error: 
'SPDR' was not declared in this scope

     SPDR = *p;

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:247:5: note: 
suggested alternative: 'EEDR'

     SPDR = *p;

     ^~~~

     EEDR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:250:16: 
error: 'SPSR' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:250:16: note: 
suggested alternative: 'ACSR'

       while (!(SPSR & _BV(SPIF))) ;

                ^~~~

                ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:250:27: 
error: 'SPIF' was not declared in this scope

       while (!(SPSR & _BV(SPIF))) ;

                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:250:27: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:255:14: 
error: 'SPSR' was not declared in this scope

     while (!(SPSR & _BV(SPIF))) ;

              ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:255:14: note: 
suggested alternative: 'ACSR'

     while (!(SPSR & _BV(SPIF))) ;

              ^~~~

              ACSR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:255:25: 
error: 'SPIF' was not declared in this scope

     while (!(SPSR & _BV(SPIF))) ;

                         ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:255:25: note: 
suggested alternative: 'WDIF'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::setBitOrder(uint8_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:292:31: 
error: 'SPCR' was not declared in this scope

     if (bitOrder == LSBFIRST) SPCR |= _BV(DORD);

                               ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:292:31: note: 
suggested alternative: 'EECR'

     if (bitOrder == LSBFIRST) SPCR |= _BV(DORD);

                               ^~~~

                               EECR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:292:43: 
error: 'DORD' was not declared in this scope

     if (bitOrder == LSBFIRST) SPCR |= _BV(DORD);

                                           ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:292:43: note: 
suggested alternative: 'DDRB'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:293:10: 
error: 'SPCR' was not declared in this scope

     else SPCR &= ~(_BV(DORD));

          ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:293:10: note: 
suggested alternative: 'EECR'

     else SPCR &= ~(_BV(DORD));

          ^~~~

          EECR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:293:24: 
error: 'DORD' was not declared in this scope

     else SPCR &= ~(_BV(DORD));

                        ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:293:24: note: 
suggested alternative: 'DDRB'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::setDataMode(uint8_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:298:5: error: 
'SPCR' was not declared in this scope

     SPCR = (SPCR & ~SPI_MODE_MASK) | dataMode;

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:298:5: note: 
suggested alternative: 'EECR'

     SPCR = (SPCR & ~SPI_MODE_MASK) | dataMode;

     ^~~~

     EECR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::setClockDivider(uint8_t)':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:303:5: error: 
'SPCR' was not declared in this scope

     SPCR = (SPCR & ~SPI_CLOCK_MASK) | (clockDiv & SPI_CLOCK_MASK);

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:303:5: note: 
suggested alternative: 'EECR'

     SPCR = (SPCR & ~SPI_CLOCK_MASK) | (clockDiv & SPI_CLOCK_MASK);

     ^~~~

     EECR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:304:5: error: 
'SPSR' was not declared in this scope

     SPSR = (SPSR & ~SPI_2XCLOCK_MASK) | ((clockDiv >> 2) & 
SPI_2XCLOCK_MASK);

     ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:304:5: note: 
suggested alternative: 'ACSR'

     SPSR = (SPSR & ~SPI_2XCLOCK_MASK) | ((clockDiv >> 2) & 
SPI_2XCLOCK_MASK);

     ^~~~

     ACSR

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::attachInterrupt()':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:309:42: 
error: 'SPCR' was not declared in this scope

   inline static void attachInterrupt() { SPCR |= _BV(SPIE); }

                                          ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:309:42: note: 
suggested alternative: 'EECR'

   inline static void attachInterrupt() { SPCR |= _BV(SPIE); }

                                          ^~~~

                                          EECR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:309:54: 
error: 'SPIE' was not declared in this scope

   inline static void attachInterrupt() { SPCR |= _BV(SPIE); }

                                                      ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:309:54: note: 
suggested alternative: 'ACIE'

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h: In static 
member function 'static void SPIClass::detachInterrupt()':

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:310:42: 
error: 'SPCR' was not declared in this scope

   inline static void detachInterrupt() { SPCR &= ~_BV(SPIE); }

                                          ^~~~

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:310:42: note: 
suggested alternative: 'EECR'

   inline static void detachInterrupt() { SPCR &= ~_BV(SPIE); }

                                          ^~~~

                                          EECR

In file included from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files 
(x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from 
C:\Users\MAXIMI~1\AppData\Local\Temp\arduino_build_420117\sketch\sketch_ 
apr07a.ino.cpp:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:310:55: 
error: 'SPIE' was not declared in this scope

   inline static void detachInterrupt() { SPCR &= ~_BV(SPIE); }

                                                       ^

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:310:55: note: 
suggested alternative: 'ACIE'

In file included from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:0:

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h: At global 
scope:

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:117:33: error: 
'SS' was not declared in this scope

 #define RF69_SPI_CS             SS // SS is the SPI slave select pin, 
for instance D10 on ATmega328

                                 ^

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:190:34: note: 
in expansion of macro 'RF69_SPI_CS'

     RFM69(uint8_t slaveSelectPin=RF69_SPI_CS, uint8_t 
interruptPin=RF69_IRQ_PIN, bool isRFM69HW=false);

                                  ^~~~~~~~~~~

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:117:33: note: 
suggested alternative: 'SE'

 #define RF69_SPI_CS             SS // SS is the SPI slave select pin, 
for instance D10 on ATmega328

                                 ^

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:190:34: note: 
in expansion of macro 'RF69_SPI_CS'

     RFM69(uint8_t slaveSelectPin=RF69_SPI_CS, uint8_t 
interruptPin=RF69_IRQ_PIN, bool isRFM69HW=false);

                                  ^~~~~~~~~~~

In file included from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:2:0:

C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\tinySPI-master\src/tinySPI.h:54:16: 
error: conflicting declaration 'tinySPI SPI'

 extern tinySPI SPI;

                ^~~

In file included from C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master/RFM69.h:29:0,

                 from C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:1:

C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h:322:17: note: 
previous declaration as 'SPIClass SPI'

 extern SPIClass SPI;

                 ^~~

sketch_apr07a:35:7: error: call to 'RFM69::RFM69(uint8_t, uint8_t, 
bool)' uses the default argument for parameter 1, which is not yet 
defined

 RFM69 radio;

       ^~~~~

C:\Users\Maximilian Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino: In 
function 'void setup()':

sketch_apr07a:41:3: error: 'Serial' was not declared in this scope

   Serial.begin(9600);

   ^~~~~~

C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:41:3: note: suggested 
alternative: 'Stream'

   Serial.begin(9600);

   ^~~~~~

   Stream

C:\Users\Maximilian Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino: In 
function 'void loop()':

sketch_apr07a:79:7: error: 'Serial' was not declared in this scope

   if (Serial.available() > 0)

       ^~~~~~

C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:79:7: note: suggested 
alternative: 'Stream'

   if (Serial.available() > 0)

       ^~~~~~

       Stream

sketch_apr07a:135:5: error: 'Serial' was not declared in this scope

     Serial.print("received from node ");

     ^~~~~~

C:\Users\Maximilian 
Schrader\Desktop\sketch_apr07a\sketch_apr07a.ino:135:5: note: suggested 
alternative: 'Stream'

     Serial.print("received from node ");

     ^~~~~~

     Stream

Bibliothek RFM69-master in Version 1.3.0 im Ordner: C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master  wird verwendet
Bibliothek SPI in Version 1.0 im Ordner: C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI  wird verwendet
Bibliothek tinySPI-master in Version 1.1.2 im Ordner: 
C:\Users\Maximilian Schrader\Documents\Arduino\libraries\tinySPI-master 
wird verwendet
Bibliothek SPIFlash_LowPowerLab in Version 101.1.2 im Ordner: 
C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\SPIFlash_LowPowerLab  wird 
verwendet
exit status 1
call to 'RFM69::RFM69(uint8_t, uint8_t, bool)' uses the default argument 
for parameter 1, which is not yet defined

von Carl D. (jcw2)


Lesenswert?

Das ist der 1. Fehler:
1
// #include <SPI.h>
2
#include "SPI_84.h"

2.
Zudem wird Serial nicht funktionieren: keine UART, wenig RAM, Strings im 
RAM statt im Flash, ...

Debugging von so kleinem Zeug macht man mit Pinwackeln und 
LogicAnalizer.
Oder debugWire, so man hat.

: Bearbeitet durch User
von Christian S. (roehrenvorheizer)


Lesenswert?

Toll, wie man hier meterlang durch den Code scrollen kann, ohne je einen 
Osterhasen zu sehen zu bekommen.

Mit dem Tiny84 läßt sich auf jeden Fall das RFM69 nutzen. Nur bei halb 
so viel SRAM wie ein Mega88 kann man nicht so viele Unterprogramme 
verschachteln.

MfG

von Maximilian S. (ms95)


Lesenswert?

Carl D. schrieb:
> Das ist der 1. Fehler:// #include <SPI.h>
> #include "SPI_84.h"

Das habe ich behoben, aber hat nicht viel gebracht leider :(

Carl D. schrieb:
> 2.
> Zudem wird Serial nicht funktionieren: keine UART, wenig RAM, Strings im
> RAM statt im Flash, ...

Das ist auch nur der Beispielcode von sparkfun. Letztendlich will ich 
einfach nur ein Programm dafür, dass das RFM in Dauerschleife senden 
soll. Wenn mir dafür jemand den Code anpassen würde, würde ich ja sogar 
ne Aufwandsentschädigung geben...

von Maximilian S. (ms95)


Lesenswert?

Christian S. schrieb:
> Toll, wie man hier meterlang durch den Code scrollen kann, ohne je einen
> Osterhasen zu sehen zu bekommen.
>
> Mit dem Tiny84 läßt sich auf jeden Fall das RFM69 nutzen. Nur bei halb
> so viel SRAM wie ein Mega88 kann man nicht so viele Unterprogramme
> verschachteln.
>
> MfG

Weißt du denn, welche Einstellungen man im Code vornehmen muss?

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Carl D. schrieb:
>> Das ist der 1. Fehler:// #include <SPI.h>
>> #include "SPI_84.h"
>
> Das habe ich behoben, aber hat nicht viel gebracht leider :(

Naja, die Hälfte der Fehlermeldungen haben mit der falschen SPI-Lib zu 
tun.

Hast du die "Standard-SPI-Lib" schon aus der Konfiguratiob rausgenommen? 
Andernfalls wird diese immer noch mit-Compiliert und die Fehlermeldungen 
bleiben.

von Maximilian S. (ms95)


Lesenswert?

Ich habe sie gelöscht, so dass nur noch da steht:

#include "SPI_84.h"
#include <RFM69.h>

...


aber nach dem Kompilieren steht immer noch das in der Fehlermeldung:

Bibliothek SPI_84 in Version 1.1.2 im Ordner: C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\SPI_84  wird verwendet
Bibliothek RFM69-master in Version 1.3.0 im Ordner: C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\RFM69-master  wird verwendet
Bibliothek SPI in Version 1.0 im Ordner: C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\SPI  wird verwendet
Bibliothek tinySPI-master in Version 1.1.2 im Ordner: 
C:\Users\Maximilian Schrader\Documents\Arduino\libraries\tinySPI-master 
wird verwendet
Bibliothek SPIFlash_LowPowerLab in Version 101.1.2 im Ordner: 
C:\Users\Maximilian 
Schrader\Documents\Arduino\libraries\SPIFlash_LowPowerLab  wird 
verwendet

von Carl D. (jcw2)


Lesenswert?

So, habb's mal selber ausprobiert:
- Sloeber gestartet
- Third Party Index "http://drazzy.com/package_drazzy.com_index.json"; 
installiert.
- Projekt angelegt mit Plattform "ATTinyCore", Board "Tiny24/44/84"
- Librarys "RFM68_LowPowerLab", "SPI", "SPIFlash_LowPowerLab"
- deine .ino reincopiert
- dann noch alle print("...") durch print(F("...)) ersetzt, das spart 
RAM, das eh knapp ist.
- compiliert
- done!  -> Flash: 5342    RAM: 267 (von 512)

von Maximilian S. (ms95)


Lesenswert?

Das werde ich gleich sofort selber ausprobieren!

Carl D. schrieb:
> 2.
> Zudem wird Serial nicht funktionieren: keine UART, wenig RAM, Strings im
> RAM statt im Flash, ...

 Hast du das auch rausgenommen oder hat es auch mit serial geklappt?

von Dieter P (Gast)


Lesenswert?

Moinsen,

wie wäre es die meterlangen Codezeilen oder Konsolenausgaben in den 
Anhang zu packen oder auf Seiten wie Pastebin zu laden?

Dann überleben die Mausräder der Helfenden länger und die 
Hilfsbereitschaft bleibt im wahrsten Sinne des Wortes nicht auf der 
Strecke.

Soll nur als Vorschlag dienen. Aber ich finde diese meterlangen Beiträge 
immer furchtbar.

Schönnen Ostermontagmorgen allen.

Dieter P.

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Das werde ich gleich sofort selber ausprobieren!
>
> Carl D. schrieb:
>> 2.
>> Zudem wird Serial nicht funktionieren: keine UART, wenig RAM, Strings im
>> RAM statt im Flash, ...
>
>  Hast du das auch rausgenommen oder hat es auch mit serial geklappt?

Ich hab alles dringelassen, nur die "String-Konstanten" per F() auch zu 
solchen gemacht. Ohne das F() werden die nämlich im RAM abgelegt und da 
die ja initialisiert werden müssen, steht ir Inhalt eh im Flash. Mit F() 
fällt das Zwischenspeichern im RAM weg, was bei nur 512Byte entscheidend 
sein kann. Wie diese "Plattform" das Thema Serial und SPI löst, hab ich 
gar nicht näher untersucht. SPI wird die USI benutzen, da keine Pins 
definiert werden müssen, man also die von der HW vorgegebenen benutz. Wo 
dann Serial rauskommt hab ich gar nicht näher angeschaut. Werd ich noch 
nachholen.

von Maximilian S. (ms95)


Angehängte Dateien:

Lesenswert?

Ich habe mir Eclipse runtergeladen und auch das Sloeber Plug-In 
installiert. Leider kann ich keinen sketch erstellen, da ich immer das 
im Anhang befindliche Fehlerbild bekomme...

von Rainer V. (a_zip)


Lesenswert?

Dieter P schrieb:
> Aber ich finde diese meterlangen Beiträge
> immer furchtbar.

Genau!! Und ich lese sie einfach nicht...
Gruß Rainer

von Maximilian S. (ms95)


Lesenswert?

Ich habe es jetzt soweit hinbekommen Sloeber einzurichten. Habe auch 
alles so gemacht, wie du gesagt hast Carl. Leider kommen immer noch 
Fehlermeldungen.
Habe ich was vergessen oder falsch gemacht?



Hier ist mein Code:

https://pastebin.com/v3QsfpUf

Hier die Fehlermeldung:

https://pastebin.com/VwYvsNXn

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Ich habe mir Eclipse runtergeladen und auch das Sloeber Plug-In
> installiert. Leider kann ich keinen sketch erstellen, da ich immer das
> im Anhang befindliche Fehlerbild bekomme...

Hol dir das fertig konfigurierte Sloeber. Und mach keinen Update auf die 
aktuelle Eclipse Version. Mit der funktioniert Sloeber (noch) nicht.

Hab gerade mal das Plattform-Paket "AvrTiny" angeschaut:
- Software-Serial, Tx an PA1, benutzt nicht USI, also
- SPI via USI, an die offiziellen Pins MISO/MOSI/SCL
aber: Serial.print sperrt Ints

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

Carl D. schrieb:
> Hol dir das fertig konfigurierte Sloeber. Und mach keinen Update auf die
> aktuelle Eclipse Version. Mit der funktioniert Sloeber (noch) nicht.

Habe ich gemacht. Und trotzdem kamen beim kompilieren Fehler.

Hier ist mein Code:

https://pastebin.com/v3QsfpUf

Hier die Fehlermeldung:

https://pastebin.com/VwYvsNXn

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Carl D. schrieb:
>> Hol dir das fertig konfigurierte Sloeber. Und mach keinen Update auf die
>> aktuelle Eclipse Version. Mit der funktioniert Sloeber (noch) nicht.
>
> Habe ich gemacht. Und trotzdem kamen beim kompilieren Fehler.
>
> Hier ist mein Code:
>
> https://pastebin.com/v3QsfpUf
>
> Hier die Fehlermeldung:
>
> https://pastebin.com/VwYvsNXn

In Zeile 22 ist ein Kommentar falsch umgebrochen

Der Rest: Folgefehler

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

Den Fehler konnte ich auch noch schnell beheben.
Aber warum kommen noch diese Fehler:

1) error: 'millis' was not declared in this scope

2) libraries\RFM69_LowPowerLab\subdir.mk:24: recipe for target 
'libraries\RFM69_LowPowerLab\RFM69.cpp.o' failed
make: *** [libraries\RFM69_LowPowerLab\RFM69.cpp.o] Error 1

Das mit dem millis() sollte doch eigentlich kein Problem sein. Für den 
anderen Fehler kann ich mir noch nichts zusammenreimen. Außer, dass 
eventuell etwas mit Verzeichnispfad nicht stimmt!?

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Den Fehler konnte ich auch noch schnell beheben.
> Aber warum kommen noch diese Fehler:
>
> 1) error: 'millis' was not declared in this scope
>
> 2) libraries\RFM69_LowPowerLab\subdir.mk:24: recipe for target
> 'libraries\RFM69_LowPowerLab\RFM69.cpp.o' failed
> make: *** [libraries\RFM69_LowPowerLab\RFM69.cpp.o] Error 1
>
> Das mit dem millis() sollte doch eigentlich kein Problem sein. Für den
> anderen Fehler kann ich mir noch nichts zusammenreimen. Außer, dass
> eventuell etwas mit Verzeichnispfad nicht stimmt!?

WIMRE, beim Anlegen des Projekt wurde irgendwas mit millis gefragt. Das 
Braucht einen Timer und da der Tinyx4 davon nicht viele hat, kann man 
den millis()-Support abschalten.

von Carl D. (jcw2)


Angehängte Dateien:

Lesenswert?

so jetzt vom Notebook aus und mit Sloeber:
ein Screenshot der Projekt-Einstellungen

Abschalten der "millis()"-Option liefert genau dein Fehlerbild.

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

Ja Wahnsinn! Jetzt klappt tatsächlich alles ohne Error...nur noch ein 
paar Warnings:
sowas wie: " warning: unused parameter " kommt öfters mal vor, bei dir 
auch ?

Interessant wäre jetzt noch, wie man den Code so umgestalten kann, dass 
einfach nur gesendet wird. Eigentlich sollte sich doch dafür der Code 
extrem verkürzen oder?

Konntest du nachprüfen, ob bei deinem ATtiny denn auch die 
entsprechenden Signale rausgehen nach dem hochladen? Also ob der Code 
auch etwas wirklich tut?

von Carl D. (jcw2)


Lesenswert?

Da HW-Debuggen ist dann doch größerer Aufwand. Ich hab zwar einige 
Tinyx4 rumliegen, aber kein Board und ein RFM69 Board schon garnicht.

Schau erst mal, ob aus PA1 deine Debugmeldungen rauspurzeln.

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

Wieso aus PA1?

und wie kontrolliert man einen spezifischen PIN, ob an diesem 
Debugmeldungen kommen? (sorry, ich habe sowas leider bisher kaum 
gemacht....habe gerade aber unheimlichen Spaß, damit zu 
beschäftigen....An dieser Stele schonmal ein dickes Dankeschön!)

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Wieso aus PA1?
Weil die Source der Softserial, die beim Tiny84 benutzt wird, das so 
sagt.
TX an AN0 oder PA1
RX an AN1 oder PA2

> und wie kontrolliert man einen spezifischen PIN, ob an diesem
> Debugmeldungen kommen? (sorry, ich habe sowas leider bisher kaum
> gemacht....habe gerade aber unheimlichen Spaß, damit zu
> beschäftigen....An dieser Stele schonmal ein dickes Dankeschön!)

man hat an dem Pin ein serielles Signal, das man z.B. in einen 
TTL-Serial-nach-USB-Konverter einspeisen kann. Diesen kann man im 
Arduino-Serial-Monitor auswerten.

PS: mir macht das auch Spaß, denn ich muß mich nicht mit den 
HW-Niederungen abgeben. Quasi basteln lassen. ;-)

von Christian S. (roehrenvorheizer)


Lesenswert?

>Interessant wäre jetzt noch, wie man den Code so umgestalten kann, dass
>einfach nur gesendet wird. Eigentlich sollte sich doch dafür der Code
>extrem verkürzen oder?


Hallo, um welchen Code geht es denn bei Dir?


Das Senden geschieht nach korrekter Konfiguration im Wesentlichen durch 
das Füllen des FIFOs mit Daten, wobei es natürlich bei dem recht 
komplizierten Modul etliche Varianten und Feinheiten gibt.


mfG

von Maximilian S. (ms95)


Lesenswert?

Carl D. schrieb:
> man hat an dem Pin ein serielles Signal, das man z.B. in einen
> TTL-Serial-nach-USB-Konverter einspeisen kann. Diesen kann man im
> Arduino-Serial-Monitor auswerten.

Also quasi: - Den Code auf den Tiny hochladen
            - Dann TTL-Serial-nach-USB-Konverter herstellen
              Kann dafür auch der Arduino UNO verwendet werden?
              Ich würde den dann so mit dem Tiny verbinden:
              Tiny    -> Arduino Uno
              PA1     -> RX (D0)
              PA2     -> TX (D1)
              VCC     -> 3,3V
              GND     -> GND
            - Dann im Arduino-Serial-Monitor gucken, ob was kommt

Habe ich das so richtig verstanden?

von Maximilian S. (ms95)


Lesenswert?

Christian S. schrieb:

> Hallo, um welchen Code geht es denn bei Dir?

Hallo!

Also es gibt auf
https://learn.sparkfun.com/tutorials/rfm69hcw-hookup-guide/all
einen Hook-Up-Guide für das RFM69 und auf der selben Seite gibt es 
weiter unten einen Example Code, um das ganze auszutesten.
Ich brauche aber eigentlich nur einen Code, der das Modul dazu bringt, 
in Dauerschleife zu senden. Zusätzlich muss das ganze mit dem ATTiny84 
umgesetzt werden.
Mittlerweile schaffe ich es schon dank Carl diesen Beispielcode auf den 
Attiny zu spielen und bin gerade dabei zu gucken, ob dieser 
funktioniert. Wenn du eine Idee für eine Vereinfachung des Code hättest, 
so dass das ganze funktioniert, wäre das toll!

von Maximilian S. (ms95)


Lesenswert?

Maximilian S. schrieb:
> Also quasi: - Den Code auf den Tiny hochladen
>             - Dann TTL-Serial-nach-USB-Konverter herstellen
>               Kann dafür auch der Arduino UNO verwendet werden?
>               Ich würde den dann so mit dem Tiny verbinden:
>               Tiny    -> Arduino Uno
>               PA1     -> RX (D0)
>               PA2     -> TX (D1)
>               VCC     -> 3,3V
>               GND     -> GND
>             - Dann im Arduino-Serial-Monitor gucken, ob was kommt



Also ich habe das jetzt mal so gemacht, nur PA2 nicht verbunden, da wir 
ja nur  gucken wollten, ob etwas vom Tiny kommt. Allerdings passiert 
nichts, wenn ich den Serial-Monitor öffne. Interessant ist aber, dass 
PA1 konstant auf High ist. Das konnte ich feststellen, indem ich ne LED 
drangehangen habe...Jetzt weiß ich aber nicht, ob ich was falsch gemacht 
habe oder was der nächste Schritt wäre :S

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Carl D. schrieb:
>> man hat an dem Pin ein serielles Signal, das man z.B. in einen
>> TTL-Serial-nach-USB-Konverter einspeisen kann. Diesen kann man im
>> Arduino-Serial-Monitor auswerten.
>
> Also quasi: - Den Code auf den Tiny hochladen
>             - Dann TTL-Serial-nach-USB-Konverter herstellen
>               Kann dafür auch der Arduino UNO verwendet werden?
>               Ich würde den dann so mit dem Tiny verbinden:
>               Tiny    -> Arduino Uno
>               PA1     -> RX (D0)
>               PA2     -> TX (D1)
>               VCC     -> 3,3V
>               GND     -> GND
>             - Dann im Arduino-Serial-Monitor gucken, ob was kommt
>
> Habe ich das so richtig verstanden?

Das haben andere schon beschrieben:
https://oscarliang.com/use-arduino-as-usb-serial-adapter-converter/

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

Carl D. schrieb:
> Aber das haben andere schon beschrieben:
> https://oscarliang.com/use-arduino-as-usb-serial-adapter-converter/

Okay dann baue ich das mal nach! Aber anschließend kann man den UNO auch 
wieder normal verwenden oder?

Aber Irgendwas ist ja schon mit PIN1 passiert, da die LED leuchtet oder?
Was ist denn, wenn ich da dann Debugmelungen rausbekomme?

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Carl D. schrieb:
>> Aber das haben andere schon beschrieben:
>> https://oscarliang.com/use-arduino-as-usb-serial-adapter-converter/
>
> Okay dann baue ich das mal nach! Aber anschließend kann man den UNO auch
> wieder normal verwenden oder?
Sicher, solange du wirklich nur TTL-Pegel einspeist.

Falls du einen original Arduino (den mit dem gesockelten 328er) hast, 
dann ist das Entfernen dieses das technisch einfachste. Alle anderen 
Methoden versuchen einfach nur den Avr vom USB-Chip zu trennen:
- Dauer-Reset, dann sind alle Pins als Eingang konfiguriert
- per Software Rx/Tx auf Eingang schalten und Dauerloop.

> Aber Irgendwas ist ja schon mit PIN1 passiert, da die LED leuchtet oder?
> Was ist denn, wenn ich da dann Debugmelungen rausbekomme?

Wenn ich den richtigen Plan erwischt hab, dann liegen die LEDs an Rx/Tx 
so, daß sie bei Low auf den Leitungen leuchten. Low ist der Ruhezustand 
bei TTL-Serial. D.b. der Tiny zieht den Tx-Ausgang auf low. Gutes 
Zeichen.

von Maximilian S. (ms95)


Lesenswert?

Carl D. schrieb:
> Falls du einen original Arduino (den mit dem gesockelten 328er) hast,
> dann ist das Entfernen dieses das technisch einfachste.

Ich verstehe nur nicht, was dann passiert. Also wenn ich den trennen 
würde, kann ich dann einfach meine PIN-Konfiguration vornehmen? Ich habe 
den Elegoo UNO R3, so einfach ist es glaube ich nicht den ATMega zu 
trennen...


Die LED die ich an PIN PA1 drangemacht hatte, kann aber nur leuchten, 
wenn der TINY den PIN auf HIGH zieht (PIN ist an positiver Seite von 
LED). Das wäre das Gegenteil von dem, was du als gut ansiehst :S

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Carl D. schrieb:
>> Falls du einen original Arduino (den mit dem gesockelten 328er) hast,
>> dann ist das Entfernen dieses das technisch einfachste.
>
> Ich verstehe nur nicht, was dann passiert. Also wenn ich den trennen
> würde, kann ich dann einfach meine PIN-Konfiguration vornehmen? Ich habe
> den Elegoo UNO R3, so einfach ist es glaube ich nicht den ATMega zu
> trennen...

Man muß nicht physisch trennen, nur dafür sorgen, daß der 328er den 
Tx-Ausgang nicht beeinflusst, also entweder im Reset-Zustand, oder mit 
Software, die diesen dauerhaft als Eingang definiert.

> Die LED die ich an PIN PA1 drangemacht hatte, kann aber nur leuchten,
> wenn der TINY den PIN auf HIGH zieht (PIN ist an positiver Seite von
> LED). Das wäre das Gegenteil von dem, was du als gut ansiehst :S

Das könnte noch besser sein, den der Tiny84 soll ja ständig was 
ausgeben, sprich gelegentlich auch mal High liefern. Flackert das etwas?

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

Carl D. schrieb:
> Man muß nicht physisch trennen, nur dafür sorgen, daß der 328er den
> Tx-Ausgang nicht beeinflusst, also entweder im Reset-Zustand, oder mit
> Software, die diesen dauerhaft als Eingang definiert.

Also ich habe jetzt einfach eine Litze von RESET zu GND am Uno gemacht. 
Zusätzlich sind VCC und GND vom TINY mit dem Uno verbunden. PA1 geht auf 
RX vom UNO. Leider kann ich trotzdem noch nichts im Serial Monitor 
sehen...
Muss auch PA2 zwingend verbunden werden?
Oder macht es Probleme das auf dem ATMEGA noch der Sketch von ArduinoISP 
drauf ist?

Carl D. schrieb:
> Das könnte noch besser sein, den der Tiny84 soll ja ständig was
> ausgeben, sprich gelegentlich auch mal High liefern. Flackert das etwas?

Meinen Augen nach ist kein Flackern zu erkennen. Die LED leuchtet 
konstant hell :/

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Carl D. schrieb:
>> Man muß nicht physisch trennen, nur dafür sorgen, daß der 328er den
>> Tx-Ausgang nicht beeinflusst, also entweder im Reset-Zustand, oder mit
>> Software, die diesen dauerhaft als Eingang definiert.
>
> Also ich habe jetzt einfach eine Litze von RESET zu GND am Uno gemacht.
> Zusätzlich sind VCC und GND vom TINY mit dem Uno verbunden. PA1 geht auf
> RX vom UNO. Leider kann ich trotzdem noch nichts im Serial Monitor
> sehen...

Rx ist auch der Pin auf dem der PC sendet und der Arduino empfängt. Es 
muß Tx sein!

> Muss auch PA2 zwingend verbunden werden?
> Oder macht es Probleme das auf dem ATMEGA noch der Sketch von ArduinoISP
> drauf ist?

Reset sollte das erledigen.

> Carl D. schrieb:
>> Das könnte noch besser sein, den der Tiny84 soll ja ständig was
>> ausgeben, sprich gelegentlich auch mal High liefern. Flackert das etwas?
>
> Meinen Augen nach ist kein Flackern zu erkennen. Die LED leuchtet
> konstant hell :/

Also auf der Arduino-Seite muß es auf jeden Fall Tx sein, beim 84er 
könnte ich auch was falsch gesehen haben, aber es spricht nichts dagegen 
PA0..PA4 durchzuprobieren. Tx ist ein Eingang.

Kann es sein, daß die Arduino-PC-Verbindung nicht auf 9600Baud 
eingestellt ist? Der 84er sendet nämlich (wie aus der .ino ablesbar) 
genau so schnell.

: Bearbeitet durch User
von Maximilian S. (ms95)


Angehängte Dateien:

Lesenswert?

Also ich habe jetzt folgendes ausprobiert:
Grundeinstellung:

Kabel von Reset im UNO direkt in GND vom UNO
Tiny    -> Arduino Uno
VCC     -> 3,3V
GND     -> GND


PA1     -> TX (D1)
Seriel-Monitor: keine Ausgabe
LED: leuchtet stark

PA2     -> TX (D1)
Seriel-Monitor: keine Ausgabe
LED: leuchtet schwächer

PA3     -> TX (D1)
Seriel-Monitor: keine Ausgabe
LED: leuchtet stark

PA4     -> TX (D1)
Seriel-Monitor: keine Ausgabe
LED: leuchtet kurz auf (Logisch für mich, da SCK-Verbindung)

Also so bekomme ich nirgends etwas raus....was mache ich falsch?
Muss in dem Code vielleicht noch die Bibliothekt <SoftwareSerial.h> 
eingebunden werden?
Hast du eine Idee Carl oder kannst du den Aufbau theoretisch 
nachstellen, da man ja dafür kein RFM benötigt?
Hast du die Chance das nachzubauen Carl?

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Also ich habe jetzt folgendes ausprobiert:
> Grundeinstellung:
>
> Kabel von Reset im UNO direkt in GND vom UNO
> Tiny    -> Arduino Uno
> VCC     -> 3,3V
> GND     -> GND
>
>
> PA1     -> TX (D1)
> Seriel-Monitor: keine Ausgabe
> LED: leuchtet stark
>
> PA2     -> TX (D1)
> Seriel-Monitor: keine Ausgabe
> LED: leuchtet schwächer

Ein Anzeichen für Aktivität

Welche Baudrate-Einstellung hat die USB-Serial-Verbindung. Das dürfte 
die sein, die also "Upload-Rate" (oder irgendwie so) in Sloeber 
eingestellt wird. Ich schau mal später nach, wie das genau gemacht wird.
Den Tiny84 auf 115209 einzustellen wird nicht funktionieren, da steht in 
der Serial-Source ausdrücklich drin, daß die nur sehr langsam 
funktioniert (9600).

Muß jetzt erst mal ins Homeoffice, bin eh schon spät ...

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

Carl D. schrieb:
> Welche Baudrate-Einstellung hat die USB-Serial-Verbindung.

Also bei mir steht:

<Connect to Serial port COM3 at 9600>

: Bearbeitet durch User
von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Carl D. schrieb:
>> Welche Baudrate-Einstellung hat die USB-Serial-Verbindung.
>
> Also bei mir steht:
>
> <Connect to Serial port COM3 at 9600>

Ja , gerade auch gesehen, das kann man im SerialMonitor direkt angeben.
Hm, dann würde ich erst mal mit Oszi oder LogicAnalyser schauen, was die 
Leitung tatsächlich macht. Eventuell ist das Signal invertiert? Kann man 
aber nur raten oder eben, falls Gerätschaft vorhanden, messen.


Edit: noch mal die TinySoftwareSerial angeschaut:
- PA1 ist deren Tx Pin, also der Ausgang.
- Ruhezustand ist HIGH, also LED leuchten ist OK, sollte bei Aktivität 
dunkler werden.

Wobei das Ding (Serial) grenzwertig ist, denn es hat keinerlei Puffer, 
d.h. es legt pro Zeichen eine Pause von grob 1ms ein.

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

Das einzige Messinstrument, welches ich momentan da habe, ist ein 
Multimeter...damit wird das leider etwas schwieriger.
So wie ich das beurteilen kann, sind an mehreren PINS High oder LOW 
Signale. Diese sind aber statisch und nicht dynamisch vorhanden. Was die 
PINS im Endeffekt machen sollen, um das RFM anzusteuern, ist ja über die 
Bibliotheken vorgegeben. Allerdings kann ich mir dieses statische 
Verhalten nicht wirklich erklären...

Carl D. schrieb:
> In der RFM69.h gibt es Konfiguration der Pins, etc. Da muß, ausgehen vom
> atmega328 ein Eintrag für den Tiny84 rein, also dessen SPI-Pins.

Gilt das eigentlich immer noch, auch für die Konfiguration bei Sloeber? 
Das könnte ich sonst auch nochmal ändern

Carl D. schrieb:
> - PA1 ist deren Tx Pin, also der Ausgang.
> - Ruhezustand ist HIGH, also LED leuchten ist OK, sollte bei Aktivität
> dunkler werden.

Das entspricht ja schonmal der leuchtenden LED. Allerdings ist wie 
gesagt keine Dynamik und dementsprechend keine Aktivität festzustellen

Carl D. schrieb:
> Wobei das Ding (Serial) grenzwertig ist, denn es hat keinerlei Puffer,
> d.h. es legt pro Zeichen eine Pause von grob 1ms ein.

Wenn ich im Endeffekt aber eigentlich nur einen Code möchte, der 
dauerhaft für das Senden mit dem RFM69 sorgt...brauchte ich da überhaupt 
das mit dem Serial? Ich will mir ja nichts anzeigen lassen in der 
Endanwendung

: Bearbeitet durch User
von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Das einzige Messinstrument, welches ich momentan da habe, ist ein
> Multimeter...damit wird das leider etwas schwieriger.

Hm, Kauf minimal einen 10€-LA, der läuft mit sigrok (unter Linux) ganz 
gut.

> So wie ich das beurteilen kann, sind an mehreren PINS High oder LOW
> Signale. Diese sind aber statisch und nicht dynamisch vorhanden. Was die
> PINS im Endeffekt machen sollen, um das RFM anzusteuern, ist ja über die
> Bibliotheken vorgegeben. Allerdings kann ich mir dieses statische
> Verhalten nicht wirklich erklären...

Dynamisch sind die aber im ms..μs-Bereich. Das sieht man nicht am MM.

> Carl D. schrieb:
>> In der RFM69.h gibt es Konfiguration der Pins, etc. Da muß, ausgehen vom
>> atmega328 ein Eintrag für den Tiny84 rein, also dessen SPI-Pins.
>
> Gilt das eigentlich immer noch, auch für die Konfiguration bei Sloeber?
> Das könnte ich sonst auch nochmal ändern

Nein, das war bevor ich das AvrTiny-Plattform-Paket kannte. Dieses hat 
eine SPI-Implementierung, die die Standard=Pinbelegungs der Chips 
verwendet. Also die Pins, die auch mit MISO/MOSI/SCLK bezeichnet werden. 
SS (SlaveSelect) wird ja in der .ino definiert.

> Carl D. schrieb:
>> - PA1 ist deren Tx Pin, also der Ausgang.
>> - Ruhezustand ist HIGH, also LED leuchten ist OK, sollte bei Aktivität
>> dunkler werden.
>
> Das entspricht ja schonmal der leuchtenden LED. Allerdings ist wie
> gesagt keine Dynamik und dementsprechend keine Aktivität festzustellen

Ohne Meßgeräte schwer nachvollziehbar.

> Carl D. schrieb:
>> Wobei das Ding (Serial) grenzwertig ist, denn es hat keinerlei Puffer,
>> d.h. es legt pro Zeichen eine Pause von grob 1ms ein.
>
> Wenn ich im Endeffekt aber eigentlich nur einen Code möchte, der
> dauerhaft für das Senden mit dem RFM69 sorgt...brauchte ich da überhaupt
> das mit dem Serial? Ich will mir ja nichts anzeigen lassen in der
> Endanwendung

Dann z.B. per #ifdef DEBUG ... #endif ausklammern.

Mit LA kann man das auch per Pin-Wackeln debuggen, das stört auch das 
Timing nicht so sehr.

von Maximilian S. (ms95)


Lesenswert?

Carl D. schrieb:
> Hm, Kauf minimal einen 10€-LA, der läuft mit sigrok (unter Linux) ganz
> gut.

Ich werde mir auch einen bestellen. Mit Windows sollte aber doch auch 
möglich sein, damit zu arbeiten oder?

Carl D. schrieb:
> Dynamisch sind die aber im ms..μs-Bereich. Das sieht man nicht am MM.

Meine Hoffnung war ja, es am Flackern von einer LED zu erkennen...da 
weiß ich leider nicht in wie weit die Auflösungsgrenze meiner Augen ist 
:D

Carl D. schrieb:
> Dann z.B. per #ifdef DEBUG ... #endif ausklammern.

Ich werde heute mal den Code anpassen und dann hier posten.
Gibt es sonst noch was, wie ich verfahren kann, ohne erstmal mit dem LA 
zu arbeiten? Mein Plan wäre jetzt weiter den Code besser zu verstehen, 
um genau zu wissen was ich ändern kann und muss.

Hättest du die Möglichkeit, auch nochmal etwas zu testen? Ich bin echt 
hochotiviert und habe Bock, das Projekt innerhalb der nächsten 1-2 
Wochen zum Abschluss zu bringen ! Und wenn alles fertig ist und klappt, 
bin ich wie gesagt auch gerne bereit dazu, eine kleine 
Aufwandsentschädigung zu senden :)

von Maximilian S. (ms95)


Angehängte Dateien:

Lesenswert?

In der RFM69.cpp werden mir zwei Warnungen angezeigt:

1) Member '_address' was not initialized in this constructor
2) Member '_interruptNum' was not initialized in this constructor

Eine Idee woran das liegt oder ob da was fehlt, was die Funktionalität 
einschränkt?

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> In der RFM69.cpp werden mir zwei Warnungen angezeigt:
>
> 1) Member '_address' was not initialized in this constructor
> 2) Member '_interruptNum' was not initialized in this constructor
>
> Eine Idee woran das liegt oder ob da was fehlt, was die Funktionalität
> einschränkt?

Das liegt daran, daß der Konstruktor der Klasse diese Felder nicht 
initialisiert. Er verläßt einfach drauf, daß die einzige Instanz der 
Klasse global deklariert ist und deswegen mit hex0 initialisiert wird. 
Offenbar gibt es keine gravierenden Probleme damit, sonst wäre das 
anders gebaut.

von Maximilian S. (ms95)


Lesenswert?

Morgen habe ich spätestens den LA!!

Mir ist noch was eingefallen, bei allem was ich jetzt mal mit dem 
SerialMonitor ausprobiert hatte, wurden für den Tiny die Pins von RX und 
TX klar definiert. Könnte man das jetzt nicht auch machen, um sich 
wirklich sicher zu sein, wo TX und RX sind?

von Maximilian S. (ms95)


Lesenswert?

Noch eine Frage:

In der SPI.cpp und der R69.cpp wird einiges mit dem Slave-Select Pin 
gemacht. Es gibt beim Tiny aber ja gar keinen Pin der grundsätzlich 
dafür vorgesehen ist. Wo wird der definiert? Muss man diesen selber 
definieren?
MISO,MOSI und SCK kann ich ja verstehen, da es für diese feste PINs 
gibt. Nur was ist mit SS (manchmal auch CS genannt)???

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,



der SS muß nur bei den Mega-Typen besonders beachtet werden und als 
Ausgang geschaltet sein. Bei Deinem Tiny kommt das nicht vor.
Notfalls kannst Du bei einem z.B mega88 im Dabla die Passage nachlesen.

mfG

von Maximilian S. (ms95)


Lesenswert?

Christian S. schrieb:
> Bei Deinem Tiny kommt das nicht vor.

Aber das RFM-Modul hat auch einen SS-Pin, dieser muss doch mit dem 
SS-PIN vom Tiny verbunden werden?

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Morgen habe ich spätestens den LA!!
>
> Mir ist noch was eingefallen, bei allem was ich jetzt mal mit dem
> SerialMonitor ausprobiert hatte, wurden für den Tiny die Pins von RX und
> TX klar definiert. Könnte man das jetzt nicht auch machen, um sich
> wirklich sicher zu sein, wo TX und RX sind?

Der Chip selbst hat eben keine Rx/Tx, aber die 
Tiny84-Softserial-Implementierung benutzt die beiden Pins des 
Analog-Komparators AN1/AN2.

Bei einem Mega328 gibt es eine UART und die hat genau definierte Pins.

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

Carl D. schrieb:
> Bei einem Mega328 gibt es eine UART und die hat genau definierte Pins.

Aber ich will ja den SS_Pin definieren für die Kommunikation zwischen 
Tiny und RFM. Gehe ich recht in der Annahme, dass der SS_Pin in der 
SPI.cpp standardmäßig auf Pin 3 gelegt wird?
Muss man das in der .ino anpassen und wenn ja, wie? Weil der SS_Pin wird 
ja definitiv für die Kommunikation von RFM mit Tiny benötigt.
In dem Code meiner .ino wird ja auch durch den Befehel
>> radio.send
das SPI-Kommunikationsprotokoll aus der SPI.cpp ausgeführt.

von Christian S. (roehrenvorheizer)


Lesenswert?

Maximilian S. schrieb:

> Aber das RFM-Modul hat auch einen SS-Pin, dieser muss doch mit dem
> SS-PIN vom Tiny verbunden werden?


Müssen muß er das nicht, nur weil er so heißt. Kann man machen, falls 
als Ausgang konfiguriert.

NSS = SPI Chip select input

Das ist einfach der chip-select Eingang und ist low-aktiv. Den kannst Du 
an einen beliebigen Ausgang des Mikrocontrollers anschießen. Ob Deine 
Arduino-Umgebung und das vorgefertigte Programm ihn dann richtig 
bedienen können, steht auf einem anderen Blatt. Das müßte man dann 
anpassen Im Quelltext.

Steht im Dabla des RFM69 unter 5.2.1. SPI Interface

>Weil der SS_Pin wird ja definitiv für die Kommunikation von RFM mit Tiny 
>benötigt.
Dann wirst Du ein Unterprogramm benötigen, das mit Hilfe der normalen 
Pins ein SPI-Interface nachbildet in software, weil dies am Tiny so 
nicht als Hardware vorhanden ist. Der leichtere Weg wäre also, 
mindestens einen ATMega8, Mega88 und Konsorten zu verwenden.


Und ich glaube, Du hast die Datenblätter der Komponenten noch nicht 
wirklich inhaliert und verstanden. Natürlich möchte man zu Anfang immer 
am besten eine funktionierende Spielwiese haben, aufgrund derer man 
danach alles ausprobieren und verstehen kann. Aber die 
Entwickungsumgebung erfolgreich zu installieren ist auch schon ein 
Kunststück.

mfG

: Bearbeitet durch User
von Maximilian S. (ms95)


Angehängte Dateien:

Lesenswert?

1) Christian S. schrieb:
> Dann wirst Du ein Unterprogramm benötigen, das mit Hilfe der normalen
> Pins ein SPI-Interface nachbildet in software, weil dies am Tiny so
> nicht als Hardware vorhanden ist. Der leichtere Weg wäre also,
> mindestens einen ATMega8, Mega88 und Konsorten zu verwenden.

Leider muss ich es trotzdem mit dem ATtiny machen. Wenn es grundsätzlich 
nicht möglich ist, würde ich schon umsteigen auf einen anderen µC. Ich 
will alles versuchen, um die Projektvorgabe exakt zu lösen.


2) In der TinySoftwareSerial gibt es eine Warnung, die ich nich ganz 
nachvollziehen kann (siehe Anhang). Ist diese schlimm und muss behoben 
werden?

3) Christian S. schrieb:
> Dann wirst Du ein Unterprogramm benötigen, das mit Hilfe der normalen
> Pins ein SPI-Interface nachbildet in software, weil dies am Tiny so
> nicht als Hardware vorhanden ist.

In der Sloeber IDE gibt es bereits eine SPI Bibliothek, die auch auf den 
ATTiny angepasst ist. Damit sollte das Problem mit dem SPI-Interface 
gelöst sein. Mein Problem ist nur weiterhin, an welcher Stelle ich genau 
den SS_PIN definiere

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> 1) Christian S. schrieb:
>> Dann wirst Du ein Unterprogramm benötigen, das mit Hilfe der normalen
>> Pins ein SPI-Interface nachbildet in software, weil dies am Tiny so
>> nicht als Hardware vorhanden ist. Der leichtere Weg wäre also,
>> mindestens einen ATMega8, Mega88 und Konsorten zu verwenden.

Las dich verwirren. SPI ist so simpel gestrickt, daß das auch mit der 
USI eines Tiny geht. USI ist eigentlich nur ein Schieberegister (wie 
auch die große SPI) und einem kleinen Zähler um nicht jedes einzelne Bit 
per Software machen zu müssen.

> Leider muss ich es trotzdem mit dem ATtiny machen. Wenn es grundsätzlich
> nicht möglich ist, würde ich schon umsteigen auf einen anderen µC. Ich
> will alles versuchen, um die Projektvorgabe exakt zu lösen.

Du könntest natürlich die Aufgabe zweiteilen. Erst mal auf dem 
Standard-Arduino zum laufen bekommen und dann die Tiny84 spezifischen 
Probleme lösen

>
> 2) In der TinySoftwareSerial gibt es eine Warnung, die ich nich ganz
> nachvollziehen kann (siehe Anhang). Ist diese schlimm und muss behoben
> werden?

Da die Endemeldung des AVR-Dude zu sehen ist, hat das Compilieren 
funktioniert. Das ist eine Meldung von CDT, also Eclipse, das versucht 
Fehler selbst zu erkennen, in dem Fall findet der Compiler aber, daß es 
keinen Grund für eine virtuelle Methode gibt, da es nur eine Klasse 
Serial gibt. Er ruft also gleich die tüchtige Methode auf, ohne erst 
über vtable auf die richtige Methodenadresse zugreifen zu müssen. 
Pointer-Operationen vermeidet man auf AVRs lieber. Statt einem CALL 
braucht man 4 LD + ICALL und zerstört (mindestens) R30/R31. Aber wie 
gesagt, GCC kennt sich da aus.

> 3) Christian S. schrieb:
>> Dann wirst Du ein Unterprogramm benötigen, das mit Hilfe der normalen
>> Pins ein SPI-Interface nachbildet in software, weil dies am Tiny so
>> nicht als Hardware vorhanden ist.
>
> In der Sloeber IDE gibt es bereits eine SPI Bibliothek, die auch auf den
> ATTiny angepasst ist. Damit sollte das Problem mit dem SPI-Interface
> gelöst sein. Mein Problem ist nur weiterhin, an welcher Stelle ich genau
> den SS_PIN definiere

Die gibt es auch außerhalb, Sloeber verpackt das nur schön in einem 
Eclipse-CDT, so daß man endlich einen Editor hat, der den Namen 
verdient. Außerdem ist das Installieren von Plattformen (inkl. 
Toolchains), Boards und Libraries sehr einfach.

Schwieriger ist dann die Frage, welche Lib unterstützt welche Plattform. 
AVR-Libs müssen nicht zu einem ESP-Chip passen.

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

> In der Sloeber IDE gibt es bereits eine SPI Bibliothek, die auch auf den >ATTiny 
angepasst ist

Vielleicht wäre es vorteilhaft, wenn Du diesen Teil des Quelltextes mal 
direkt zum Lesen zur Verfügung stellen würdest. Ich wüßte nicht, wo ich 
da suchen soll, da ich Deine Softwarepakete nicht kenne. Fragen zu den 
RFM-Modulen sind in der Vergangenheit oft stecken gebieben.

MfG

von Carl D. (jcw2)


Lesenswert?

Maximilian S. schrieb:
> Morgen habe ich spätestens den LA!!
>
> Mir ist noch was eingefallen, bei allem was ich jetzt mal mit dem
> SerialMonitor ausprobiert hatte, wurden für den Tiny die Pins von RX und
> TX klar definiert. Könnte man das jetzt nicht auch machen, um sich
> wirklich sicher zu sein, wo TX und RX sind?

Heute ist Morgen!

Ist der LA da? Funktioniert er? Welche Software benutzt er? Hat er 
Serial-/SPI-Decoder?

Damit könntest du sehen was der Tiny so erzählt.

: Bearbeitet durch User
von Maximilian S. (ms95)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

also ich habe herausgefunden, wo man die PINs für RX und TX selber 
einstellen kann. Das macht man in der pins_arduino.h (siehe Bild Tx und 
Rx PINs).

Dadurch habe ich mir alles so definiert, dass meine Konfiguration passt 
und die Serielle Kommunikation zumindest einseitig klappt. Also ich kann 
seriell Daten vom Attiny mittels UNO auslesen.

Des Weiteren ist in der pins_arduino.h die PIN-Belegung für den ATtiny 
vorgegeben (siehe Bild SPI-PIN Belegung Tiny). Dort ist auch der SS-Pin 
definiert und liegt wie vermutet auf PIN 3 (siehe Bild SPI-PIN).

Carl D. schrieb:
> Ist der LA da?

Der LA ist angekommen. Ich werde ihn jetzt in Betrieb nehmen und 
ausprobieren. Mein Gedanke ist jetzt meinen modifizierten Code, quasi 
Senden in Dauerschleife mit einer kleinen Kontrolle über eine LED, auf 
den Tiny zu spielen und die SPI-Verbindungen an den LA anzuschließen und 
gucken was passiert. Das bedeutet:
#define SS   3
#define MOSI 5
#define MISO 6
#define SCK  4
Auch wenn dann nichts auf dem SPI-Bus liegt, sollte ja zumindest beim 
Start jedes Cycles irgendwas zu sehen sein.

Mein Code, der dauerhaft einen vollen Puffer sendet findet ihr hier:
https://pastebin.com/VbWPn1Gg
Außerdem könnt ihr auf einem Screenshot sehen, dass der Puffer immer 
voll ist (siehe Bild Voller Puffer).

Carl D. schrieb:
> Funktioniert er? Welche Software benutzt er? Hat er
> Serial-/SPI-Decoder?

Sobald ich ihn in Betrieb habe, melde ich mich!

Christian S. schrieb:
> Vielleicht wäre es vorteilhaft, wenn Du diesen Teil des Quelltextes mal
> direkt zum Lesen zur Verfügung stellen würdest. Ich wüßte nicht, wo ich
> da suchen soll, da ich Deine Softwarepakete nicht kenne.

klar, ich packe einfach mal ein paar Bibliotheken hier rein:

SPI.h                  -> https://pastebin.com/n9NNJsFd
SPI.cpp                -> https://pastebin.com/d27Rc33Y
pins_arduino.h         -> https://pastebin.com/pvXqDiwx
TinySoftwareSerial.h   -> https://pastebin.com/gLrA6fai
TinySoftwareSerial.cpp -> https://pastebin.com/GEn3hNCX

Ich hoffe, dass die SPI-Verbindung zum RFM-Modul so klappen wird. Werde 
jetzt wie gesagt, mit dem LA mal gucken was an MISO etc. ankommt. 
Vielleicht gibt es danach ja neue Erkenntnisse!

: Bearbeitet durch User
von Carl D. (jcw2)


Lesenswert?

Hi Max,
von deiner Sorte bräuchten wir mehr. Irgendwann hat mich die "richtige" 
Arbeit wieder so eingespannt, daß ich keine Zeit mehr hatte. Trotzdem 
hast du dich durchgebissen. Ich hatte schon befürchtet, das endet wie 
andere Arduino-Projekte, aber ich lass mich gerne positiv überraschen.

 +10

von Christian S. (roehrenvorheizer)


Lesenswert?

Ja, "voller Puffer" sendet wohl 64 gleiche Zeichen.
Der Empfänger sollte dann passend konfiguriert sein, auch was die 
Register 0x37 bis 0x3A angeht. AES kann erst mal abgeschaltet bleiben.

MfG

von Maximilian S. (ms95)


Angehängte Dateien:

Lesenswert?

Leider war ich gestern unterwegs und wollte nichts zwischen Tür und 
Angel erzwingen. Deswegen geht es heute weiter. Auch wenn noch nicht 
viel, aber hier schon mal ein paar gute Nachrichten:

Carl D. schrieb:
> Funktioniert er?

Ich habe für einen einfachen Test an dem positiven Ende der LED einen 
Channel von dem LA angeschlossen und GND von LA mit GND verbunden. Das 
hat schon mal geklappt und ich habe auch eine Aufnahme gemacht (siehe 
Bild LED-Test Logic Analyzer ).

Carl D. schrieb:
> Welche Software benutzt er?

Ich habe mir die kostenlose Software von Saleae Logic runtergeladen. 
Soll zwar nur ne Demoversion sein, ist aber voll funktionsfähig.

Carl D. schrieb:
> Hat er
> Serial-/SPI-Decoder?

Wenn ich deine Frage richtig verstehe, bietet die Software beides an und 
dementsprechen kann der LA das denke ich auch. Und das sind ne ganze 
Palette an Decodern/Analyzern (siehe Bild Decoder).

Christian S. schrieb:
> auch was die
> Register 0x37 bis 0x3A angeht.

Da muss ich mal gucken, im Datenblatt haben die Register ja eine 
Standardeinstellung. In wie weit muss diese umgestellt werden?
In der Rfm69.cpp sind Register 0x37, 0x38 und 0x39 konfiguriert. Ich 
habe es mal online gestellt:
-> https://pastebin.com/DSDnG050




Jetzt gucke ich mal was auf den SPI-Leitungen passiert, wenn ich
1) den Tiny programmiere
2) der Code auf dem Tiny ausgeführt wird OHNE angeschlossenes RFM69
3) der Code auf dem Tiny ausgeführt wird mit angeschlossenes RFM69

: Bearbeitet durch User
von Maximilian S. (ms95)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt mal meinen Code drauf gespielt und dabei die Leitungen
MOSI
MISO
SCK
überwacht (siehe Bild SPI beim Programmieren). Als ich noch die Reset 
Leitung vom Tiny aufnehmen wollte, gab es Probleme. Ich schätze mal, 
weil er sich so dauerhaft reseted hat.
An meiner Aufnahme wundert mich, dass alle drei Leitungen nach Abschluss 
der Programmieren auf HIGH gehen. Ist das der Standard beim Tiny?

von Maximilian S. (ms95)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt mal die radio.send-Funktion in den Code eingebaut.
Beim Compilieren tritt kein Fehler auf. Aber sobald der Mikrocontroller 
in der Loop an diese Stelle kommt, scheint er sich aufzuhängen und im 
Serial-Monitor kommen ganz wirre Zeichen raus, die sich unendlich 
fortsetzen (siehe Bild Sendefehler). Es ändert nichts, ob das RFM69 
angeschlossen ist oder nicht. Weiß einer Rat?




Nach Anpassung des Codes konnte ich jetzt dafür sorgen, dass 
zumindestens die Sendeschleife durchläuft und sich nicht aufhängt (siehe 
Bild Sendefehler2).

Angepasster Code:

https://pastebin.com/WmssvknT


Jetzt auch die Aufnahmen vom LA der SPI-Leitungen bei Ausführung des 
Codes
(siehe Bilder Großaufnhame LA, Feinaufnahme LA)

: Bearbeitet durch User
von Maximilian S. (ms95)


Lesenswert?

SOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO, ENDLICH GESCHAFFT!!!! ES FUNKTIONIERT
MIT DEM ATTINY84 UND DEM rfm69!!!!!!!!!!!!!!!!!!!
VIIEEELEN VIELEN DANK HIER AN ALLE!!!!!!!!!!!!!!!!

BESONDERER DANK GEHT AN:

Arduino Fanboy D. (ufuf)
Christian S. (roehrenvorheizer)
Carl D. (jcw2)

von Einer K. (Gast)


Lesenswert?

Ich danke dir für deine lobende Erwähnung.

Aber selbst nach mehrfachen lesen des Threads bleibt mir verborgen, wie 
ich an diesem Verbrechen mitgewirkt haben soll.

Ich fühle mich irgendwie unschuldig, bis verwirrt.

Außerdem, wenn schon schuldig, dann bleibst du die Lösung schuldig.
OK, evtl. gehen dir die Gefühle und Erwartungen anderer am A*sch vorbei.
Auch gut, mich solls nicht belasten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.