Код, хорошо работающий на Arduino Uno, не работает с Mega 2560.

Ниже приведен блок кода из моего сценария. Он использует таймер1. Почему он несовместим с Arduino Mega?

TCCR1A = theTCCR1A; // 0b10000010;
/*10 очищается при совпадении, устанавливается в BOTTOM для compA.
00 compB изначально отключен, позже переключен на очистку при совпадении, установлен на BOTTOM.
00
10 WGM1 1:0 для сигнала 15.
*/
  TCCR1B = 0b00011001;
  /*000
   11 WGM1 3:2 for waveform 15.
   001 no prescale on the counter.
   */
  TIMSK1 = 0b00000001;
  /*0000000
   1 TOV1 Flag interrupt enable.
   */
  sei();             // Включаем глобальные прерывания.
  // Установка выходных контактов.
  DDRB   = 0b00000110; // Установите PB1 и PB2 в качестве выходов.
  pinMode(13, OUTPUT); // Устанавливаем вывод триггера на выход

, 👍0


1 ответ


Лучший ответ:

0

Это не работает, потому что код, который вы пишете, будет работать только на ATmega328. Каждый чип ATmega328 без проблем запустит этот код. Если вы хотите, чтобы Mega выполняла ту же задачу, что и Uno, вам придется переписать весь код и использовать функции Arduino (такие как pinMode, digitalRead и т. д.) или прочитать Техническое описание ATmega2560 и используйте регистры ATmega2560. Также найдите Раскладка контактов ATmega2560, она понадобится вам, если вы хотите использовать регистры.

,