Hello everyone,
I'm using Arduino IDE, having a working project on Atmega328P.
I need to switch to Atmega328PB and the same sketch did not compile.
Using Minicore for the board definition, Mozzi version 1.1.2
Here are the errors :
---------------------------------------------------------------------------
In file included from C:\Users\User\Documents\Arduino\libraries\Mozzi\MozziGuts_impl_AVR.hpp:14:0,
from C:\Users\User\Documents\Arduino\libraries\Mozzi\MozziGuts.cpp:35:
C:\Users\User\Documents\Arduino\libraries\Mozzi\utility/TimerOne.h: In member function 'void TimerOne::setPwmDuty(char, unsigned int)':
C:\Users\User\Documents\Arduino\libraries\Mozzi\utility/TimerOne.h:157:14: error: 'TIMER1_A_PIN' was not declared in this scope
if (pin == TIMER1_A_PIN)
^~~~~~~~~~~~
C:\Users\User\Documents\Arduino\libraries\Mozzi\utility/TimerOne.h:157:14: note: suggested alternative: 'TIMER1A'
if (pin == TIMER1_A_PIN)
^~~~~~~~~~~~
TIMER1A
C:\Users\User\Documents\Arduino\libraries\Mozzi\utility/TimerOne.h: In member function 'void TimerOne::pwm(char, unsigned int)':
C:\Users\User\Documents\Arduino\libraries\Mozzi\utility/TimerOne.h:175:14: error: 'TIMER1_A_PIN' was not declared in this scope
if (pin == TIMER1_A_PIN)
^~~~~~~~~~~~
C:\Users\User\Documents\Arduino\libraries\Mozzi\utility/TimerOne.h:175:14: note: suggested alternative: 'TIMER1A'
if (pin == TIMER1_A_PIN)
^~~~~~~~~~~~
TIMER1A
C:\Users\User\Documents\Arduino\libraries\Mozzi\utility/TimerOne.h: In member function 'void TimerOne::disablePwm(char)':
C:\Users\User\Documents\Arduino\libraries\Mozzi\utility/TimerOne.h:208:14: error: 'TIMER1_A_PIN' was not declared in this scope
if (pin == TIMER1_A_PIN) {
^~~~~~~~~~~~
C:\Users\User\Documents\Arduino\libraries\Mozzi\utility/TimerOne.h:208:14: note: suggested alternative: 'TIMER1A'
if (pin == TIMER1_A_PIN) {
^~~~~~~~~~~~
TIMER1A
In file included from C:\Users\User\Documents\Arduino\libraries\Mozzi\MozziGuts.h:224:0,
from C:\Users\User\Documents\Arduino\libraries\Mozzi\MozziGuts.cpp:15:
C:\Users\User\Documents\Arduino\libraries\Mozzi\MozziGuts_impl_AVR.hpp: In function 'void startAudio()':
C:\Users\User\Documents\Arduino\libraries\Mozzi\AudioConfigStandardPlus.h:23:29: error: 'TIMER1_A_PIN' was not declared in this scope
#define AUDIO_CHANNEL_1_PIN TIMER1_A_PIN // defined in TimerOne/config/known_16bit_timers.h
^
C:\Users\User\Documents\Arduino\libraries\Mozzi\MozziGuts_impl_AVR.hpp:201:11: note: in expansion of macro 'AUDIO_CHANNEL_1_PIN'
pinMode(AUDIO_CHANNEL_1_PIN, OUTPUT); // set pin to output for audio
^~~~~~~~~~~~~~~~~~~
C:\Users\User\Documents\Arduino\libraries\Mozzi\AudioConfigStandardPlus.h:23:29: note: suggested alternative: 'TIMER1A'
#define AUDIO_CHANNEL_1_PIN TIMER1_A_PIN // defined in TimerOne/config/known_16bit_timers.h
^
C:\Users\User\Documents\Arduino\libraries\Mozzi\MozziGuts_impl_AVR.hpp:201:11: note: in expansion of macro 'AUDIO_CHANNEL_1_PIN'
pinMode(AUDIO_CHANNEL_1_PIN, OUTPUT); // set pin to output for audio
^~~~~~~~~~~~~~~~~~~
--------------------------------------------------------
It seems there is some changes in the timers definition for the 328PB compared to 328P.
Do you know any workaround ?
Also notice I'm using Arduino IDE 1.8.1, when trying to compile this project with Arduino IDE 2.3.2 there is lots of new errors even for the working version.
Thanks for your help, let me know if you need more information.