Шьем ATMega328P через...

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

  1. CryNET

    CryNET Гик

    Наступил тот самый момент, когда мне надоел Wiring и пора съезжать на C или ASM. Хочу начать изучать архитектуру AVR, конечно, не на проф. уровне, а для понимания че да как там...

    Хочу уже начать баловаться, а мешает одна вредная штука - бутлодер. Честно скажу - почти знаю о нем ничего.
    Сразу в дебри забегать не хочу, хочу потихоньку идти и изучать.

    Вопрос, собственно, вот в чем:
    Бутлодер, я так понял, нужен, чтобы не шить контроллер через программатор (ICSP интерфейс?), а легко и просто по Tx и Rx залить программу?
    Тогда тут возникает несколько вопросов:
    - Вот скомпилил я программу, получил .hex. Если я залью через avr-dude (?), как среда ArduinoIDE, то бутлодер себя не заденет и зальет рядом с собой программу? Avrdude, получается, с бутлодером контроллера работает?
    - Если я прошью тот же .hex через программатор по ICSP, то я затру бутлодер и не смогу больше заливать программки "по usb через avrdude", а только через этот программатор? Программа так же будет работать неизменно?
     
  2. Onkel

    Onkel Гуру

    у атмег можно шить через icsp и через hiVoltage, но я ,например, через hi voltage ни разу не шил.
    Для понимания - поставьте учебный CodeVision, у него очень полезная для новичков фича - генератор кода. Например, можно сгенерить автоматически функции прерывания по uart, ногодрыгание по таймерам, работу с DS18B20 - и на этих рабочих примерах спокойно изучать.
     
    Securbond нравится это.
  3. AlexU

    AlexU Гуру

    Всё зависит от функций бутлоадера. Если использовать соответствующий бутлоадер из комплекта Arduino IDE, то "да" -- "легко и просто по Tx и Rx залить программу".
    Всё зависит от того как будете прошивать. Если с использованием ISP программатора, то перед заливкой вся flash стирается (включая бутлоадер). Если через последовательный порт (RX/TX), то бутлоадер себя стирать не будет.
    Да, у avrdude есть такой режим работы (активируется опцией '-c arduino').
    Вопрос немного не понятный, наверно Вы не совсем точно представляете процесс прошивки с помощью avrdude. Avrdude -- это программа, которая заливает прошивку в контроллер с использованием программаторов. В случае с Arduino UNO можно прошивать котроллер через последовательный порт (USART интерфейс) благодаря бутлоадеру, зашитому в контроллер, который выполняет функции программатора. Если есть ISP-программатор, то avrdude сможет прошить контроллер без использования бутлоадера, зашитого в контроллер. Так же связка ISP-программатор + avrdude позволяет легко восстановить бутлоадер в контроллере. Да и прошивать можно пользовательскую прошивку с бутлоадером одновременно.
     
    CryNET нравится это.
  4. Airbus

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

    По HV ничего сложного точно также только микру надо вытаскивать и она пишется и читается независимо от фьюзов.Единственное что бесит нет работы с фьюзбайтами только биты.А я уже к числам привык как то удобнее и шансов залочить нема.CodeVision-хорошая вешь и не только для новичков очень мне нравиться даже если много ненужного мусора генерит в коде.Вообщем Рекомендую!НЕХ заливаю через бутлоадер в Ардуину с помощью этой программы XLoader А вообще у меня целое ведро программаторов и 512 байт для Лодыря жаба душит оставлять поэтому Лодырем не пользуюсь шью через ISP.
     
  5. CryNET

    CryNET Гик

    Спасибо, AlexU, за разъяснения. Стало намного понятнее.
    Ладно, буду пробовать. У меня есть LPT "5 проводков" (ещё вроде называют "Программатор Громова"?), но я думаю им не стоит пользоваться, если есть бутлодер :)
    Возможно, в светлом будущем приобрету, наконец, USB программатор :)
     
  6. CryNET

    CryNET Гик

    Airbus, спасибо за совет и статью!
     
  7. Airbus

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

  8. Airbus

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

    Э нет 5 проводков это STK200 на LPT порт а Громов это Мега вешь!На СОМ порт Читай
     
  9. CryNET

    CryNET Гик

    Да, перепутал :)

    А фьюзы, я так понял, предустановки камня. Можно чето включать/выключать и настраивать.
    Но новичку туда лучше не лезть, я так понимаю :)
    Вроде при прошивке бутлодера нужные фьюзы тоже шьются для работы arduino (через среду программирования если шить бутлодер)?
     
  10. Airbus

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

    Хех!Фьюзы штука тонкая!И новичку лучше туда не лезть (хотя знать надо!)как Вы правильно заметили и в Ардуину они прошиваются однажды и вся прелесть программирования через Бут в том что нельзя сбить фьюзы.Они там установлены так lfuse:0xff hfuse:0xde А тут фьюз калькулятор.
     
    Последнее редактирование: 10 фев 2016
  11. AlexU

    AlexU Гуру

    Avrdude по-умолчанию фьюзы не трогает (при старте он считывает фьюзы, а при завершении работы проверяет, что они не были изменены, и при необходимости восстанавливает первоначальные значения фьюзов). Что бы изменить фьюзы, надо задать правильные параметры при запуске avrdude.
     
  12. Airbus

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

    Немного не понял-как Дудка восстанавливает первоначальные значения фьюзов?Там если нажал кнопку Write то всё записывается а назад уже не вернуть.
     
  13. AlexU

    AlexU Гуру

    Avrdude -- консольная программа, кнопки нет. Возможно Вы пользуютесь какой-нибудь графической оболочкой над avrdude (таких множество можно найти). У avrdude есть такая опция '-u'. Если её явно не указать, то avrdude перед завершением работы восстановит фьюзы, даже в том случае, если они явно были изменены в процессе работы программы.
     
  14. Airbus

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

    Пользуюсь вот этой.
    Э...А тогда вопрос до каких значений восстановит фьюзы?До дефолтных чтоли?Например я ошибочно "убрал" SPIEN то что тогда?Не запишет это изменение или спросит?Или вообще не спросит а приведёт фьюзы в состояние то какое они были до моего вмешательства или в дефолтное состояние?
     
  15. AlexU

    AlexU Гуру

    Выше описывал в общих словах принцип работы:
    Немного перефразирую: по-умолчанию (без ключа '-u') avrdude первым делом считывает различную информацию (в том числе и фьюзы); в процессе работы avrdude может изменить фьюзы (пользователь указал перезаписать фьюзы через аргументы или в терминальном режиме пользователь перезаписал фьюзы) -- фьюзы будут реально изменены; перед завершением работы avrdude опять считает значение фьюзов из МК и, если значения будут отличаться от тех, что были на момент запуска программы, то avrdude перезапишет фьюзы значениями, считанными при запуске (т.е. восстановит состояние "до").
    Этакая защита "от дурака".

    PS: не проверял, что случится, если аварийно завершить avrdude. По идее фьюзы должны остаться изменёнными.
     
    Airbus нравится это.
  16. Airbus

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

    А понятно!В принципе я так и думал
     
  17. VitalyS

    VitalyS Нуб

    Нужно понимать, что прошивка фьюз может быть такая, что ваш МК либо не запустится либо будет полностью залочен для последовательного программирования, и вот тогда без специального устройства вы не сможете сбросить фьюзы в дефолт.
     
  18. AlexU

    AlexU Гуру

    Речь шла немного о другом -- в течении одного сеанса работы avrdude восстановит изменённые фьюзы в состояние "до", если специально не указать через опцию, что фьюзы можно изменить. Этот механизм специально придуман, для того, что бы случайно не залочить МК.