Проблема с Arduino для макета Mega8

Я пытаюсь создать Arduino, используя микроконтроллер Mega8. После стольких усилий с проблемами синхронизации/ответа/подписи и прочтения предыдущих вопросов наконец удалось это сделать (почти). Однако у меня все еще есть некоторые странные проблемы.

Я загрузил скетч arduinoISP в Uno для программирования чипов: AtMega8A-PU и AtMega8L-8PI (у меня была пара L-версий много лет назад).

В качестве загрузчика выбрана плата Mega8 из NG в IDE 1.8.5, затем загружена в Mega8A-PU. для версии L клонировал часть ng в boards.txt, уменьшил частоту F_CPU до 8 МГц (тот же код загрузчика) и загрузил в 8l

Теперь я могу загружать скетчи в оба устройства, используя коммутационную плату с последовательным USB-портом/avrisp mkII.

Моя первая проблема заключается в том, что когда я отсоединяю плату преобразователя, ни один из микроконтроллеров не может запуститься, если я не подниму или не вытащу контакт RxD (#2), который я случайно нахожу. кажется, они оба застряли в загрузчике. даже если я оставлю контакт сброса плавающим (с использованием внутреннего подтягивания) и подключу контакт rxd, они будут работать нормально при подаче питания (с раздражающей задержкой в 15–16 секунд). Номинал резистора я пробовал 1К и 10К, но никакой разницы в работе и времени задержки нет. он не запускается с открытым rxd. Я не смог найти причину?

еще вопрос, запуск кода на мега 8L такой же надежный, как и на 8А? (это нужно для нижнего V)

Больше пояснений: они оба работают с Xtals и конденсаторами 22pf на макетной плате. 8l также отлично работает с Xtal 16 МГц при напряжении 5 В.

скетч (знаю, это не очень поможет):

void setup() {
  Serial.begin(19200);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  tone(10,3520);
}

volatile unsigned int i, var = 1;

void loop() {
  digitalWrite(9, HIGH); 
  for(i = 0; i < 1500; i++) 
                 var += ((var * 3) / 2); 
                 // делаем что-то (если компилятор не стирает это для оптимизации :D )
  digitalWrite(9, LOW);  
  Serial.println(millis());
}

Пример выхода 8A и (аналогично) uno:

7 11 15 19 23 27 31 35 39 44 48 52 56 60 64 68 72 76 80 84 89 93 97 101 106 110

Выход 8L при 3,3 В при 8 МГц:

16 24 32 40 51 59 67 75 86 94 102 110
Вывод

tone() одинаков для всех

Благодарен за вашу помощь

, 👍1


1 ответ


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

0

Я нашел здесь: https://www.arduino.cc/en/Hacking/Bootloader ?from=Tutorial.Bootloader

Этот загрузчик NG/mega8 не включает внутреннее подтягивание контакта rx и не выходит из загрузчика, даже если он получает ненужные данные по rx (что было в моем случае из-за того, что он оставался открытым и плавающим). Он также намеренно имеет задержку от 6 до 8 секунд.

Возможно, я воспользуюсь другим загрузчиком, поскольку ссылка на исходный код на странице не работает, или просто запрограммирую версию L без какого-либо загрузчика и лучших параметров предохранителя.

,