TMRcpm: wrong library syntax?

I wanted to upload a code with the TMRcpm library and I got this error message:

In file included from /Users/***/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/io.h:99:0,
                 from /Users/***/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/pgmspace.h:90,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/api/String.h:31,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/api/IPAddress.h:24,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/api/ArduinoAPI.h:30,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/Arduino.h:23,
                 from /Users/***/Documents/Arduino/libraries/TMRpcm/pcmConfig.h:20,
                 from /Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:5:
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:20:30: error: 'ICIE1' was not declared in this scope
     const byte togByte = _BV(ICIE1); //Get the value for toggling the buffer interrupt on/off
                              ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:103:36: error: 'TIMSK1' was not declared in this scope
         volatile byte *TIMSK[] = {&TIMSK1};
                                    ^~~~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:103:36: note: suggested alternative: 'TIMSK'
         volatile byte *TIMSK[] = {&TIMSK1};
                                    ^~~~~~
                                    TIMSK
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:104:37: error: 'TCCR1A' was not declared in this scope
         volatile byte *TCCRnA[] = {&TCCR1A};
                                     ^~~~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:104:37: note: suggested alternative: 'TCCRnA'
         volatile byte *TCCRnA[] = {&TCCR1A};
                                     ^~~~~~
                                     TCCRnA
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:105:37: error: 'TCCR1B' was not declared in this scope
         volatile byte *TCCRnB[] = {&TCCR1B};
                                     ^~~~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:105:37: note: suggested alternative: 'TCCRnB'
         volatile byte *TCCRnB[] = {&TCCR1B};
                                     ^~~~~~
                                     TCCRnB
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:106:44: error: 'OCR1A' was not declared in this scope
         volatile unsigned int *OCRnA[] = {&OCR1A};
                                            ^~~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:106:44: note: suggested alternative: 'OCRnA'
         volatile unsigned int *OCRnA[] = {&OCR1A};
                                            ^~~~~
                                            OCRnA
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:107:45: error: 'ICR1' was not declared in this scope
         volatile unsigned int *ICRn[]   = {&ICR1};
                                             ^~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:107:45: note: suggested alternative: 'ICRn'
         volatile unsigned int *ICRn[]   = {&ICR1};
                                             ^~~~
                                             ICRn
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:108:43: error: 'TCNT1' was not declared in this scope
         volatile unsigned int *TCNT[] = {&TCNT1};
                                           ^~~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:108:43: note: suggested alternative: 'TCNT'
         volatile unsigned int *TCNT[] = {&TCNT1};
                                           ^~~~~
                                           TCNT
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:111:48: error: 'OCR1B' was not declared in this scope
             volatile unsigned int *OCRnB[] = {&OCR1B};
                                                ^~~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:111:48: note: suggested alternative: 'OCRnB'
             volatile unsigned int *OCRnB[] = {&OCR1B};
                                                ^~~~~
                                                OCRnB
In file included from /Users/***/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/io.h:99:0,
                 from /Users/***/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/pgmspace.h:90,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/api/String.h:31,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/api/IPAddress.h:24,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/api/ArduinoAPI.h:30,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/Arduino.h:23,
                 from /Users/***/Documents/Arduino/libraries/TMRpcm/pcmConfig.h:20,
                 from /Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:5:
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp: In member function 'void TMRpcm::timerSt()':
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:220:27: error: 'WGM11' was not declared in this scope
         *TCCRnA[tt] = _BV(WGM11) | _BV(COM1A1) | _BV(COM1B0) | _BV(COM1B1); //WGM11,12,13 all set to 1 = fast PWM/w ICR TOP
                           ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:220:40: error: 'COM1A1' was not declared in this scope
         *TCCRnA[tt] = _BV(WGM11) | _BV(COM1A1) | _BV(COM1B0) | _BV(COM1B1); //WGM11,12,13 all set to 1 = fast PWM/w ICR TOP
                                        ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:220:54: error: 'COM1B0' was not declared in this scope
         *TCCRnA[tt] = _BV(WGM11) | _BV(COM1A1) | _BV(COM1B0) | _BV(COM1B1); //WGM11,12,13 all set to 1 = fast PWM/w ICR TOP
                                                      ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:220:54: note: suggested alternative: 'CMD10'
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:220:68: error: 'COM1B1' was not declared in this scope
         *TCCRnA[tt] = _BV(WGM11) | _BV(COM1A1) | _BV(COM1B0) | _BV(COM1B1); //WGM11,12,13 all set to 1 = fast PWM/w ICR TOP
                                                                    ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:224:23: error: 'WGM13' was not declared in this scope
     *TCCRnB[tt] = _BV(WGM13) | _BV(WGM12) | _BV(CS10);
                       ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:224:36: error: 'WGM12' was not declared in this scope
     *TCCRnB[tt] = _BV(WGM13) | _BV(WGM12) | _BV(CS10);
                                    ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:224:49: error: 'CS10' was not declared in this scope
     *TCCRnB[tt] = _BV(WGM13) | _BV(WGM12) | _BV(CS10);
                                                 ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:224:49: note: suggested alternative: 'CMD10'
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp: In member function 'void TMRpcm::setPin()':
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:263:9: error: 'SPSR' was not declared in this scope
         SPSR |= (1 << SPI2X);
         ^~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:263:9: note: suggested alternative: 'SS'
         SPSR |= (1 << SPI2X);
         ^~~~
         SS
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:263:23: error: 'SPI2X' was not declared in this scope
         SPSR |= (1 << SPI2X);
                       ^~~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:263:23: note: suggested alternative: 'SPI_t'
         SPSR |= (1 << SPI2X);
                       ^~~~~
                       SPI_t
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:264:9: error: 'SPCR' was not declared in this scope
         SPCR &= ~((1 <<SPR1) | (1 << SPR0));
         ^~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:264:9: note: suggested alternative: 'SCL'
         SPCR &= ~((1 <<SPR1) | (1 << SPR0));
         ^~~~
         SCL
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:264:24: error: 'SPR1' was not declared in this scope
         SPCR &= ~((1 <<SPR1) | (1 << SPR0));
                        ^~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:264:24: note: suggested alternative: 'SPI0'
         SPCR &= ~((1 <<SPR1) | (1 << SPR0));
                        ^~~~
                        SPI0
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:264:38: error: 'SPR0' was not declared in this scope
         SPCR &= ~((1 <<SPR1) | (1 << SPR0));
                                      ^~~~
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:264:38: note: suggested alternative: 'SPI0'
         SPCR &= ~((1 <<SPR1) | (1 << SPR0));
                                      ^~~~
                                      SPI0
In file included from /Users/***/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/io.h:99:0,
                 from /Users/***/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/pgmspace.h:90,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/api/String.h:31,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/api/IPAddress.h:24,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/api/ArduinoAPI.h:30,
                 from /Users/***/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/cores/arduino/Arduino.h:23,
                 from /Users/***/Documents/Arduino/libraries/TMRpcm/pcmConfig.h:20,
                 from /Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:5:
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp: In member function 'void TMRpcm::stopPlayback()':
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:395:35: error: 'TOIE1' was not declared in this scope
     *TIMSK[tt] &= ~(togByte | _BV(TOIE1));
                                   ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp: In member function 'void TMRpcm::pause()':
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:415:33: error: 'ICIE1' was not declared in this scope
             *TIMSK[tt] |= ( _BV(ICIE1) | _BV(TOIE1) );
                                 ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:415:46: error: 'TOIE1' was not declared in this scope
             *TIMSK[tt] |= ( _BV(ICIE1) | _BV(TOIE1) );
                                              ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:421:30: error: 'TOIE1' was not declared in this scope
         *TIMSK[tt] &= ~( _BV(TOIE1) );
                              ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp: In member function 'void TMRpcm::play(const char*, long unsigned int)':
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:573:34: error: 'TOIE1' was not declared in this scope
     *TIMSK[tt] = ( togByte | _BV(TOIE1) );
                                  ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp: In function 'void TIMER1_CAPT_vect()':
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:629:48: error: 'TOIE1' was not declared in this scope
                 *TIMSK[tt] &= ~( togByte | _BV(TOIE1) );
                                                ^
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp: In member function 'void TMRpcm::disable()':
/Users/***/Documents/Arduino/libraries/TMRpcm/TMRpcm.cpp:743:36: error: 'TOIE1' was not declared in this scope
     *TIMSK[tt] &= ~( togByte | _BV(TOIE1) );
                                    ^
Multiple libraries were found for "SD.h"
  Used: /Users/***/Documents/Arduino/libraries/SD
  Not used: /Users/***/Library/Arduino15/libraries/SD
exit status 1

Compilation error: exit status 1

I'm using: Arduino Nano every, IDE 2.2.1, TMRcpm library version 1.3.4.
I have absolutely no knowledge of Arduino libraries and how they work. Any tips on how I can get the Library working? Thanks!

From a very brief reading of the repository, the TMRpcm library is not compatible with the ATmega4809 processor used in the Nano Every.

And a search of the forums for "TMRpcm Nano Every" would have turned up

Thanks for your answer. Is there an alternative library I could use?

Probably you would have to write it yourself.

There is a very good book from Tom Almy called "Far Inside The Arduino: Nano Every Supplement" He covers comprehensibly all the things you can do with it.

You can get the code from his examples here
https://almy.us/arduinoeverybook.html

He covers examples of increasing the PWM frequency for all the timers in the processor. As well as how to get the ADC to run 8 times faster than a standard Nano Classic.

Better still buy the book.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.