Прошивка микроконтроллера ATmega328P

Тема в разделе "Микроконтроллеры AVR", создана пользователем Nathan, 11 фев 2018.

  1. Nathan

    Nathan Нерд

    Подскажите, пожалуйста, как прошить микроконтроллер ATmega328P? Через какие пины он прошивается: Rx/Tx/RST (и питание) или по SPI? Нужно ли подключать кварцевый резонатор при прошивке?
    До этого прошивал микроконтроллер Attiny84. Установил поддержку контроллеров Attiny84/85 в Arduino IDE. Записал ArduinoISP в Arduino Uno, прошил контроллер.
    А с ATmega328P не получается. Пробовал установить поддержку Atmega в Arduino IDE – в итоге не удалось прошить загрузчик, скетч, естественно, не залился.
    Попытался установить виртуальный FTDI, чтобы Arduino Uno прошивала как через последовательный порт, но пункта последовательный порт в меню Arduino IDE так и не появилось.
    Как правильно залить скетч из Arduino IDE в ATmega328P?
     

    Вложения:

    • IMG_0183.JPG
      IMG_0183.JPG
      Размер файла:
      1,3 МБ
      Просмотров:
      2.370
  2. b707

    b707 Гуру

    Можно как через последовательный порт, так и через SPI. Для прошивки через последовательный порт нужно, чтобы в контроллере уже был загрузчик. Если вы купили микросхемы МК отдельно - в них скорее всего никакого загрузчика нет, тогда первый раз их нужно прошивать по SPI/ Как это делается - описано в сотнях местах в инете, не вижу смысла повторять.
    Если МК будет работать на 8 МГц или ниже - кварц не обязателен.
     
  3. Nathan

    Nathan Нерд

    b707, то есть вот так подключать контроллер к Arduino по SPI, чтобы запрограммировать его?
     

    Вложения:

  4. b707

    b707 Гуру

    да.
    1. В плату Ардуино прошить скетч "Arduino as ISP"
    2. Добавить в Ардуино ИДЕ поддержку голого МК.
    3. Выбрать в менеджере плат эту добавленную плату и программатор ArduinoasISP .- и нажать "Записать загрузчик"
     
    CYITEP_BAC9I нравится это.
  5. Nathan

    Nathan Нерд

    b707, загрузчик получается прошить в Uno. А вот записать скетч в контроллер нет (делает 10 попыток и всё).
    Вот такую ошибку пишет:
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x58
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x1c
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x1c
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x1c
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x1c
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x1c
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x1c
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x1c
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x1c
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x1c
    Проблема загрузки в плату. Помощь по загрузке: http://www.arduino.cc/en/Guide/Troubleshooting#upload .
     

    Вложения:

  6. b707

    b707 Гуру

    У вас все спуталось.
    Если вы хотите грузить скетчи в контроллер через загрузчик, то "Ардуину как ISP" надо от МК отключить, подключить к пинам 0 и 1 контроллера переходник USB-UART и грузить через него.
    Или можно грузить через "Ардуину как ISP" - выбрать в меню "Скетч-Загрузить через программатор" - но тогда загрузчик вам не нужен, вы его при этой загрузке сотрете.
     
    Nathan нравится это.
  7. parovoZZ

    parovoZZ Гуру

    Ардуино создаёт два файла - с загрузчиком и без. Если включить логгирование, то в логах будет указан путь к прошивке с загрузчиком. Он лежит во временной папке и при следующей сессии будет недоступен. В этом плане студия гораздо удобнее.
     
  8. parovoZZ

    parovoZZ Гуру

    И жди сюрпризов при работе с USART
     
  9. Nathan

    Nathan Нерд

    b707, спасибо! Контроллер прошился. Но попытался прошить второй и не получается. Arduino пишет, что неправильная сигнатура.
    Но бывает по разному пишет об ошибке.
    Либо так:
    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override this check.

    Либо так:
    avrdude: Expected signature for ATmega328P is 1E 95 0F
    Double check chip, or use -F to override this check.
    Найден неправильный микроконтроллер. Вы указали правильную плату в меню Инструменты -> Плата?

    Странно, что это получается при нажатии переходной платы, что установлена на Arduino Uno (первая картинка).
    Нужно стереть всё в МК? Или как сделать?
     
  10. Belkin

    Belkin Гик

    Nathan, если надо прошить голый МК, то гораздо проще это сделать через USBISP-программатор, как уже было сказано вначале.
    Подключение 6-ю проводками - MISO, MOSI. CLK, RESET, Vcc, GND...
    И не городить этажерку из Ардуино и скетчей.
     
  11. parovoZZ

    parovoZZ Гуру

    Дудка, которая с ардуиной - это фуфел какой-то. Я скачал нормальную и вообще забыл про какие-то там сигнатуры, неверные частоты и прочую невнятную байду.
     
    Airbus нравится это.
  12. Airbus

    Airbus Радиохулиган Модератор

    Эт точно!
     
  13. Szirovicza Csaba

    Szirovicza Csaba Нерд

    :)благодаря
     
  14. ostrov

    ostrov Гуру

  15. Bott

    Bott Гик

    О!Вот это весчь!Сколько стоит?Где брали?
     
  16. ostrov

    ostrov Гуру

    На Али брал, не помню почем, тыщи три. Вот она все может и почти со всеми.
     
  17. a1000

    a1000 Гуру

    А если выбрать скетч - экспорт в бинарный файл, то можно выбрать куда сохранить хекс файлы. И они уже никуда не пропадут.
     
  18. ostrov

    ostrov Гуру

    Не с любыми платами прокатывает (я про IDE). Некоторые hex приходится искать.
     
  19. a1000

    a1000 Гуру

    Не буду спорить, со всеми платами не пробовал, но то что пробовал - получилось всё. Включая голые микроконтроллеры добавленные вручную.
     
  20. parovoZZ

    parovoZZ Гуру

    В нормальных IDE не надо вообще ничего нигде искать - всё лежит рядом.