Timers issue with Atmega328PB

30 views
Skip to first unread message

m4vrick

unread,
Mar 1, 2024, 2:42:49 AMMar 1
to Mozzi-users
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.

Mr Sensorium

unread,
Mar 4, 2024, 9:50:48 PMMar 4
to Mozzi-users
Reply all
Reply to author
Forward
0 new messages