Проблема с 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() одинаков для всех
Благодарен за вашу помощь
@user174174, 👍1
1 ответ
Лучший ответ:
Я нашел здесь: https://www.arduino.cc/en/Hacking/Bootloader ?from=Tutorial.Bootloader
Этот загрузчик NG/mega8 не включает внутреннее подтягивание контакта rx и не выходит из загрузчика, даже если он получает ненужные данные по rx (что было в моем случае из-за того, что он оставался открытым и плавающим). Он также намеренно имеет задержку от 6 до 8 секунд.
Возможно, я воспользуюсь другим загрузчиком, поскольку ссылка на исходный код на странице не работает, или просто запрограммирую версию L без какого-либо загрузчика и лучших параметров предохранителя.
- Как записать загрузчик?
- Не удается снова загрузиться после смены платы
- Разница в загрузчике Arduino Nano ATmega328P
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
- Arduino Nano не отвечает, желтый светодиод быстро мигает
- ESP32-CAM первый: 0x8 TG1WDT_SYS_RESET загрузочный цикл
- Как получить свою схему (Arduino) Pro Micro, чтобы можно было программировать ее через GPIO вместо USB?