Не могу понять, вгружается ли hex?

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

  1. Vetrinus

    Vetrinus Гик

    Здравствуйте.
    Вгружаю скомпилированный в proteus hex в процессор.
    Код (C++):
    Cформированная командная строка:
    avrdude.exe -p m328p -c usbasp -P usb -U flash:w:"C:\Users\vtihon\Desktop\Debug1.3.hex":a


    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.00s

    avrdude.exe: Device signature = 0x1e950f
    avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
                 To disable this feature, specify the -D option.
    avrdude.exe: erasing chip
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: reading input file "C:\Users\vtihon\Desktop\Debug1.3.hex"
    avrdude.exe: input file C:\Users\vtihon\Desktop\Debug1.3.hex auto detected as Intel Hex
    avrdude.exe: writing flash (1154 bytes):

    Writing | ################################################## | 100% 0.76s

    avrdude.exe: 1154 bytes of flash written
    avrdude.exe: verifying flash memory against C:\Users\vtihon\Desktop\Debug1.3.hex:
    avrdude.exe: load data flash data from input file C:\Users\vtihon\Desktop\Debug1.3.hex:
    avrdude.exe: input file C:\Users\vtihon\Desktop\Debug1.3.hex auto detected as Intel Hex
    avrdude.exe: input file C:\Users\vtihon\Desktop\Debug1.3.hex contains 1154 bytes
    avrdude.exe: reading on-chip flash data:

    Reading | ################################################## | 100% 0.65s

    avrdude.exe: verifying ...
    avrdude.exe: 1154 bytes of flash verified

    avrdude.exe: safemode: Fuses OK (E:07, H:D9, L:62)

    avrdude.exe done.  Thank you.
    Смущает ОЧЕНЬ странное поведение МК. Вгрузил блинк на одну ногу, а он либо на другой, либо его нет вообще. Еще хотелось бы понять, что значит строка: avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    Как можно прошить хекс не установив частоту тактирующих импульсов интерфейса, через который шьешь?
    Прошу помощи.
     
  2. rkit

    rkit Гуру

    Хекс загрузился нормально. Частоту использует ту, которая по умолчанию.
     
  3. Vetrinus

    Vetrinus Гик

    Хм, ок. Тогда самый волнующий симптом: вгружаю блинк на ноге A5, 28 нога процессора, а он моргает НА ДРУГОЙ НОГЕ и с ДРУГОЙ ЧАСТОТОЙ. Причем при симуляции в proteus все работает идеально. Могло ли такое поведение быть причиной косяков во фьюзах?
     
  4. Igor68

    Igor68 Гуру

    Переводчик в яндекс:
    предупреждение: невозможно установить период сцк. пожалуйста, проверьте обновления микропрограммы в нем делается.
    Вот (Скорее вы уже это искали через поисковик но...):
    http://arduino.ru/forum/otvlechennye-temy/proshivka-usbasp
    http://homes-smart.ru/index.php?id=34&Itemid=171&option=com_content&view=article

    В конфигурации avrdude в файле конфигурации так же есть назначения пинов и т.д.
    Извините, что вмешиваюсь!
     
  5. Vetrinus

    Vetrinus Гик

    А можно чуть чуть поподробнее? Гугл по этому запросу выдает явно не то, что вы подразумевали.
     
  6. rkit

    rkit Гуру

    Я бы в первую очередь проверял, не перепутал ли чип.
     
  7. Vetrinus

    Vetrinus Гик

    Т.е. может там лежит атмега8? Нет, там именно 328P.
     
  8. rkit

    rkit Гуру

    При сборке хекса.
     
  9. ZAZ-965

    ZAZ-965 Гуру

    Для UNO другие фьюзы
    Код (C++):
    uno.bootloader.tool=avrdude
    uno.bootloader.low_fuses=0xFF
    uno.bootloader.high_fuses=0xDE
    uno.bootloader.extended_fuses=0x05
    uno.bootloader.unlock_bits=0x3F
    uno.bootloader.lock_bits=0x0F
     
  10. Vetrinus

    Vetrinus Гик

    На самом деле, я прошиваю не ардуино, а голый процессор, причем без внешнего кварца.
    Единственное, никак не могу заставить проц работать на правильной частоте. Слишком медленно работает. Запутался во всех этих конфигурациях, где прямые, где инверсные, как понять какой активен, а какой нет...
     
  11. Vetrinus

    Vetrinus Гик

    [​IMG]
    Вот так, в общем, выглядит та конфигурация, которую я сейчас заливаю.
    Работает дико медленно. Подскажите, пожалуйста, как изменить.
     
    Последнее редактирование: 12 дек 2016
  12. Airbus

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

    Да фьюзы тёмный лес у всех прошивающих программ по разному. Здесь про фьюзы. А здесь Дудка с встроенным фьюз калькулятором там сразу всё видно что включено а что нет и на какой частоте Кварц или вообще без него. а я вообще отошёл от галочек использую значения Low фьюз и High фьюз. Никогда не ошибёшься!Да и вообще в последнее время обленился настолько что пишу под Мега8/168/328 с внешним кварцом 16 Мгц (ничего не напоминает?)И USART стабильнее работает и вообще вся схема да и шьётся быстрее а потом когда отлажу Камень вынимаю из Ардуины и ставлю её в целевую плату.Можно писать и компилить в Кодвижн или Студии а НЕХ файл заливать в Ардуину при помощи Xloader.
     
  13. Airbus

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

    У Вас Low фьюз Е2 High фьюз 99 Тоесть бут область 1024 words (99) и встроенный Гена 2 Мгц (E2) поэтому может и работает медленно?
     
  14. AlexU

    AlexU Гуру

    Ругается на устаревшую прошивку программатора USBASP. Версия прошивки программатора (устройства) должна соответствовать версии, которую ожидает avrdude.

    Судя по этому выводу:
    в качестве тактовой частоты используется внутренний генератор 8 МГц и установлен фьюз CKDIV8 -- деление тактовой частоты на 8.
    Что бы контроллер и прошивка работали согласованно на нужной частоте нужно:
    1. установить нужный источник тактовой частоты микроконтроллера -- внешний кварц, внутренний генератор и т.п. Делается через фьзы CKSEL0..3. В вашем случае (L:62 -- смотри вывод "Fuses OK (E:07, H: D9, L:62)") в качестве источника установлен внутренний генератор 8 МГц.
    2. установить правильное значение делителя тактовой частоты -- регистр CLKPR. В вашем случае при старте контроллера из-за активированного фьюза CKDIV8 (L:62 -- смотри вывод "Fuses OK (E:07, H: D9, L:62)") значение регистра установиться таким, что бы тактовая частота делилась на 8. Если хотите, что бы микроконтроллер работал на максимальной частоте, то нужно значение регистра CLKPR поменять в коде программы (если не хотите трогать фьюз CKDIV8) или нужно деактивировать фьюз CKDIV8 (если не хотите менять регистр CLKPR).
    3. установить правильное значение макроса F_CPU. Значение этого макроса должно соответствовать значению тактовой частоты микроконтроллера (с учётом первых двух пунктов). Если значение F_CPU будет отличаться от тактовой частоты, то будет нарушена работа функций, связанных со временем -- всякие delay, micros и т.п.
    Постя скриншоты всяких графических оболочек для avrdude только хуже делаете. Они всё написаны хрен пойми как -- в одних галочка значит "активный фьюз", в других "неактивный". Плюс не понятно это реальные фьзы взятые из контроллера или программулина сама решила так галочки расставить. Пойди разберись.
     
  15. Airbus

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

    Di Halt предлагает ориентироваться на Spien этот фьюз всегда активен и "убрать" его нельзя. Так что если Spien помечен галочкой то значит "галочка" показывает установленный фьюз. Если же Spien без галочки "галочка" показывает выключенный фьюз. А вообще надо работать с фьюз байтами как сказал выше. Там вероятность ошибки нулевая. Есть и фьюз калькуляторы онлайн и там тоже можно получить фьюз байты которые потом сразу и прошить.