Fatal error: avr/interrupt.h: No such file or directory

Hi,

Now i have been googeling for a while now but i can’t fix this problem.

When using ESP32 i download this library: https://github.com/PaulStoffregen/SoftwareSerial

Then load the example skatch “SoftwareSerialExample”:

/*
  Software serial multple serial test
 
 Receives from the hardware serial, sends to software serial.
 Receives from software serial, sends to hardware serial.
 
 The circuit: 
 * RX is digital pin 10 (connect to TX of other device)
 * TX is digital pin 11 (connect to RX of other device)
 
 Note:
 Not all pins on the Mega and Mega 2560 support change interrupts, 
 so only the following can be used for RX: 
 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
 
 Not all pins on the Leonardo support change interrupts, 
 so only the following can be used for RX: 
 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
 
 created back in the mists of time
 modified 25 May 2012
 by Tom Igoe
 based on Mikal Hart's example
 
 This example code is in the public domain.
 
 */
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()  
{
  // Open serial communications and wait for port to open:
  Serial.begin(57600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

While compiling i get this error message:

Arduino:1.8.8 (Mac OS X), Board:“ESP32 Dev Module, Disabled, Default, 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None”

Dropbox/Arduino/libraries/SoftwareSerial-master/SoftwareSerial.cpp:41:27: fatal error: avr/interrupt.h: No such file or directory
compilation terminated.
exit status 1
Fout bij het compileren voor board ESP32 Dev Module

This problem seems rare on the net?
Can enyone help?

  • i have installed fresh arduino IDE

I have found that i should have to have a avr folder in the system library folder, but i don’t?
Is this right?

tnx a lot

That software serial library is not compatible with the ESP32 - it is only compatible with AVR-based boards.

You have upto 3 serial ports on the ESP32. See Secret Serial Port For Arduino/ESP32 | Hackaday
Do you need more ?

tnx for the info.

I have been using this library GitHub - crisap94/MHZ19: MH-Z19 CO2 sensor library for ESP8266 or Arduino before it was modifyed 2 days a go. Now i had some problems with the sensor readings and installed the latest files from this github developer. And sinds then i get this error.

How can i use this library with ESP32? On the GitHub page it says it is tested with ESP32?

This is the main description of the library on github:
Arduino IDE library for operating the MH-Z19 CO2 sensor in ESP-WROOM-02/32(ESP8266/ESP32) or Arduino
version 0.3

Tnx again!

There are other ESP 32 library’s for the MHZ19 (CO2 sensor) but on them too i get the same error.

This is example from a other library, same issue:

#include <Arduino.h>
#include "MHZ19.h"                                         // include main library
//#include <SoftwareSerial.h>                                // Remove if using HardwareSerial

#define RX_PIN 10                                          // Rx pin which the MHZ19 Tx pin is attached to
#define TX_PIN 11                                          // Tx pin which the MHZ19 Rx pin is attached to
#define BAUDRATE 9600                                      // Native to the sensor (do not change)

MHZ19 myMHZ19;                                             // Constructor for MH-Z19 class
//SoftwareSerial mySerial(RX_PIN, TX_PIN);                   // Constructor for Stream class *change for HardwareSerial, i.e. ESP32 ***

HardwareSerial mySerial(2);                              // ESP32 Example 

unsigned long getDataTimer = 0;                             // Variable to store timer interval

void setup()
{
    Serial.begin(9600);                                     // For ESP32 baudarte is 115200 etc.

    mySerial.begin(BAUDRATE);                               // Begin Stream with MHZ19 baudrate
    
    //mySerial.begin(BAUDRATE, SERIAL_8N1, RX_PIN, TX_PIN); // ESP32 Example 

    myMHZ19.begin(mySerial);                                // *Important, Pass your Stream reference 

    myMHZ19.autoCalibration();                              // Turn ABC ON. Disable with autoCalibration(false)
}

void loop()
{
    if (millis() - getDataTimer >= 2000)                    // Check if interval has elapsed (non-blocking delay() equivilant)
    {
        int CO2;                                            // Buffer for CO2
        CO2 = myMHZ19.getCO2();                             // Request CO2 (as ppm)

        Serial.print("CO2 (ppm): ");                      
        Serial.println(CO2);                                

        int8_t Temp;                                         // Buffer for temperature
        Temp = myMHZ19.getTemperature();                     // Request Temperature (as Celsius)
        Serial.print("Temperature (C): ");                  
        Serial.println(Temp);                               

        getDataTimer = millis();                            // Update interval
    }
}

Kumalix:
tnx for the info.

I have been using this library GitHub - crisap94/MHZ19: MH-Z19 CO2 sensor library for ESP8266 or Arduino before it was modifyed 2 days a go. Now i had some problems with the sensor readings and installed the latest files from this github developer. And sinds then i get this error.

The #include directive for SoftwareSerial has been in that library from the very start. This leaves only two possible explanations for how you would have ever been able to use the library in the past:

  • You had a different SoftwareSerial library installed, which was compatible with ESP32. Such a library must exist if we are to believe the claims of the author that their library works on ESP32. It's a shame they weren't kind enough to document where we could find the library they're using.
  • You were using a different library. Note that there are often multiple incompatible Arduino libraries with a generic name like "MHZ19".