Приветствую!
Создал проект на ATtiny13 и хочу из Proteus 8.13, его штатными средствами, заливать прошивку напрямую в голый ATtiny по SPI.
В качестве программатора - Arduino nano (Arduino as ISP).
Проект компилируется и без проблем работает в симуляторе.
Полученный debug.hex опять же без проблем заливается через Arduino nano (Arduino as ISP) программами AVRDUDE Prog и SinaProg.
Но вот из самого Proteusa прошиваться никак не хочет.
Вернее прошивка заливается, индикация на ардуине индицирует передачу данных, AVRDUDE пишет: "
avrdude.exe done. Thank you.Firmware upload COMPLETE." То есть весь процесс прошивки проходит успешно, но прошиваемый контроллер не работает.
Курил мануал, а именно:
visualDesigner help (74 страница). Но там ничего по существу нет. Настройки для новичков.
В гугле ничего найти не удалось на эту тему.
Полагаю что настроены неправильно fuse и некорректный набор команд AVRDUDE. Уже день потратил на эту херабору.
Может кто сталкивался подскажите как решить.
Ниже приведу свои настройки проекта и вывод AVRDUDE.
Меню "Настройки проекта":
Вывод AVRDUDE при компиляции и прошивке:
Компиляция:
Цитата:
|
avr-gcc.exe -Wall -gdwarf-2 -fsigned-char -MD -MP -DF_CPU=9600000 -O1 -mmcu=attiny13 -o "main.o" -c "../main.c"
avr-gcc.exe -mmcu=attiny13 -o "./Debug.elf" "main.o"
avr-objcopy -O ihex -R .eeprom "./Debug.elf" "./Debug.hex"
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex "./Debug.elf" "./Debug.eep" || exit 0
Compiled successfully.
|
Прошивка:
Цитата:
|
Firmware is already compiled.
Uploading firmware 'Debug.elf'
avrdude.exe: AVR device initialized and ready to accept instructions
avrdude.exe: Device signature = 0x1e9007 (probably t13)
avrdude.exe: reading input file "C:/Users/DYDUS~1/AppData/Local/Temp/VSM Studio/642938b1af024983babf0b4bc6600470/ATTINY13_1/Debug/Debug.elf"
avrdude.exe: writing flash (970 bytes):
avrdude.exe: 970 bytes of flash written
avrdude.exe done. Thank you.
Firmware upload COMPLETE.
|
Есть теще вкладка "Options" в меню свойств проекта и там как раз можно прописать команды AVRDUDE, но я так и не разобрался как это сделать. В туториалах о ней ни слова...
В общем просьба подсказать куда копать и вообще работает ли корректно эта опция.
UPD:Решено!
Как и предполагал проблема была в настройках программы для прошивки AVRDUDE, так как компилятор WinAvr выдавал рабочий HEX файл (проверялось SinaProg).
Почему-то господа в Labcenter решили, что flash-память микроконтроллера перед прошивкой стирать не нужно и в настройках AVRDUDE прописали команду
-D (тобишь опцию которая запрещает очистку памяти чипа перед программированием)!
Я ХЗ чем там руководствовались и какие на то были причины (кроме как доставить людям гембель)...
Помимо того, еще прописали команды сокращающие до минимума вывод лога
-q и запрет на проверку содержимого памяти при записи
-V!
То есть подосрали вдвойне: запретили стирание памяти перед прошивкой и убрали расширенный вывод лога, что бы это нельзя было увидеть!
Короче, правится всё в файле avrdude.xml (путь: \Labcenter Electronics\Proteus 8 Professional\DATA\VSM Studio\programmers\avrdude.xml).
В конце файла настройки AVRDUDE выглядели так:
Код:
|
‹PROCESS TOOL="AVRDUDE" NAME="Program Firmware" ID="PROGRAM" CMDLINE="%OPTIONS% -Uflash:w:%INFILE%"›
‹FILE TYPE="HEX" NAME=""%INFILE%":i"/›
‹FILE TYPE="ELF" NAME=""%INFILE%":e"/›
‹OPTION NAME="-D"/›
‹OPTION NAME="-V"/›
‹OPTION NAME="-q"/›
‹/PROCESS› |
Нафиг убрать строки ‹OPTION NAME="-D"/›, ‹OPTION NAME="-V"/›‹OPTION NAME="-q"/›
Особенно
‹OPTION NAME="-D"/›!
Как итог:
- Контроллер прошивается непосредственно из Proteus, причем как в режиме Releas (HEX файлом) так и в режиме Debug (ELF файлом);
- Программатор Arduino as ISP - работает.
Всем спасибо за участие!