проблемы с загрузчиком не должны зависеть от размера скетча
"читал, много думал"(с)
Изучаю проблему уже в течении года с перерывами. В русскоязычном инете именно проблемы старта не обнаружено. А срабатывает он стабильно, запускается потом не всегда :) Как раз год назад даже оптибут "смейкал"(итить его душу этот линукс) т.к. в стандарте под 2560 его нет. И там, если не ошибаюсь, ещё веселее стало - добавилась зависимость от напряжения :О
Как выставишь все настройки один раз через программатор нажми "Записать загрузчик" - вместе с ним и фьюзы нужные запишутся. Потом можно смело тереть загрузчик и загружать бинарник.
:О Сейчас залил блинк через USBASP. Залилось, проверилось без ошибок, НО НЕРАБОТАЕТ. Это всё еще на MegaCore. А вот на родных помницца мне заливалось и фунциклировало. Правда непомню через что шил, т.к. была и дудка с графической оболочкой, и кодевижнавр и атмел студия с самодельным avrisp mk2.
может просто мега дохлая, у меня была такая надавишь на кристалл - работает, отпустил, иногда работает, иногда нет, все ноги пропаяны, в самом кристалле глюк
Что то ты делаешь не так, не может быть чтобы у, если не миллионов, но тысяч людей все работало без загрузчика, а у тебя нет. Я вообще с этим не сталкивался. Правда и от помигать встроенным диодом до шить без загрузчика у меня 3 года ушло, неспешно, по выходным иногда (2-3 часа в день) и иногда в будни (примерно так же). В сумме может быть 2-3 месяца по 8 часов, и то не факт.
Что-то ты делаешь не так. Как давно этим занимаешься?
Прикол в том, что типа шьётся, проверяется, а в конце выдаёт "Ой, всё"(с) Можно было грешить на IDE или программатор, но загрузчик то из неё и через него шьётся.
Время тут не показатель, тут важнее "нтелехт"(с) и необходимость Первый проект на CodeVisionAVR датирован десятым годом(поморгать диодиком, обработать кнопку, вывести "hello world" . Остальные не сильно сложнее. С ардуиной столкнулся года четыре назад и забил на голые камни(библиотеки наше ВСЁ)
Настрой через чувака фьюзы, там по сути только тактирование важно, остальное можно оставить по умолчанию. Скомпилируй прошивку по скрину выше (ту же тактовую с того же источника (внешний/внутренний) указывай), и загрузи через чувака .hex
ЗЫ: долго писал, ты уже ответил. Похоже что-то с камнем.
Думаю проблема в том что в 2560 несколько страниц flash и JMP 0x0000 срабатывает только внутри страницы и если она не нулевая, то выполняется не тот код.
Какая именно плата или "голый" чип? Почему никто не попросил считать фьюзы ???
To Komandir: Плата - готовая Arduino Mega2560 и, соответственно, фюзы от загрузчика родной IDE 1.8.12 т.е. "как у всех"(с)
По поводу 4-х страниц - круто! Знать бы теперь как решить. Я ведь эту дебильную теорию о влиянии размера на перезагрузку не из пальца высосал. начинал ещё с 1.8.5 и в какой-то момент решил добавить собаку, а то чё мы как ламмеры:) Заработало, ну и славненько. Код со временем увеличивался и в один прекрасный момент решил проверить собаку, а она того - сдохла. Помыкался, помучался, даже перешёл а оптибут(там-то и было самое интересное - нестабильность срабатывания, то работает то нет на одной и той-же заливке) что подтверждает о неправильном старте. В итоге забил, вернулся на родной загрузчик и продолжил множить говнокод. В какой- то не менее прекрасный момент проверил собака - а она "сабака страшная"(с) - РАБОТАЕТ!!! И это притом, что старые куски, при котором она не стартовала, остались в коде. И так было несколько раз.
Т.к. "добить скотину"(с) всё-же хочется, а идеи и сведения из интернета уже кончились - решил поспрашивать здесь.
To Boom: Хоть и отошли от главного вопроса, можно и эту "скотину добить". Всё же похоже на глюки компилятора именно для
меги(получается, что и миллионы и тысячи ни чего не доказывают :)
Подробности: восстановил родные фюзы через IDE, сделал хексы блинка, залил через дудку хехс без загрузчика - не работает(постоянно горит светодиод). Залил хекс с загрузчиком - видно что загрузчик отрабатывает, но программа не стартует (пара морганий, затем постоянное горение) А вот теперь самое интересное - подключаем плату к USB и заливаем скетч стандартным способом - РАБОТАЕТ. Т.е. загрузчик через SPI залился и работает, а программа залилась, но хрен там плавал
Поставил на bootrst, залил фюзы, перезапустил - не стартует. Повторно залил хекс - заблинкало. Круто.
А это как-то поможет в решении основного вопроса, т.к. шить через сторонние программы и менять фюзы обычный пользователь не будет(раньше спалит всё к чертям:)
Я бы залил внешним программатором HEX нужного мне загрузчика и также выставил верные фьюзы. Если в IDE просто заливать скетчи через загрузчик - фьюзы меняться не должны и скетч не должен затирать загрузчик. Что там и как IDE прописывает при заливке загрузчика - зависит много от чего !!!
(это если вообще нужен загрузчик)
А если не нужен (1-8 килобайт на дороге не валяются), то выставить D9 FF FD и лить скетчи внешним программатором не трогая больше фьюзы.
(в таком режиме как WDT себя ведет на вашем МЕГАскетче ???)
:О Про незатирание фюзов при заливке через UART это понятно, а вот вариантность заливки загрузчика из стандартного набора плат это как? Фюзы же жестко прописаны в файлах настройки, вариативности выбора во внешней среде практически нет(ну, разве что, выбор старого загрузцика для наны и 168 ядра).
И кстати задолбался перекидывать дрова на USBASP задигом на десятой винде. Под ардуино ИДЕ свой, под дудку свой. Может есть способ проще? Avrisp mk2 самолепный раньше ни с дудкой ни с ардуиной ИДЕ не работал, сейчай пока не пробовал.
Arduino IDE все манипуляции делает запуская консольную avrdude с разными текстовыми параметрами. Я графическими утилитами не пользуюсь обычно. Видимо сама avrdude разных версий.
Никак. Через дудку льётся, но не проходит верификацию(ругается на лок биты, хотя они "типа" такие же как в заводском голом чипе. А через UART вообще не шьётся. Загрузчик вроде залил через хекс с загрузчиком(масло, блин масляное), ресет пытался поймать - ничего. Бум разбираться.
В подтверждение дебильной теории - размер = глюк с перезагрузкой, вчера провел эксперимент. В скетче, гарантированно не перезапускающийся при срабатывании собаки, сделал следующее: В одном из меню программы, которые закопаны глубоко и в обычной работе не участвуют, закоментил кучу надписей(т.е. ни на что не влияющая хрень вроде) Скетч из чуть больше 240кБ стал чуть меньше. И вуаля - вачдог перезапускает.
Думаю проблема в том что в 2560 несколько страниц flash и JMP 0x0000 срабатывает только внутри страницы и если она не нулевая, то выполняется не тот код.
Какая именно плата или "голый" чип? Почему никто не попросил считать фьюзы ???
интересная мысль! WDT обязан уметь выбирать страницу 0 в таком случае...
C:\arduino-1.8.12\hardware\tools\avr/bin/avrdude -CC:\arduino-1.8.12\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cusbasp -Pusb не меняем это все что касается программатора и платы.
А дальше можем использовать ключи и делать ВСЁ ЧТО УГОДНО.
Читай про пробелмы с загрузчиком
проблемы с загрузчиком не должны зависеть от размера скетча
Читай про пробелмы с загрузчиком
проблемы с загрузчиком не должны зависеть от размера скетча
"читал, много думал"(с)
Изучаю проблему уже в течении года с перерывами. В русскоязычном инете именно проблемы старта не обнаружено. А срабатывает он стабильно, запускается потом не всегда :) Как раз год назад даже оптибут "смейкал"(итить его душу этот линукс) т.к. в стандарте под 2560 его нет. И там, если не ошибаюсь, ещё веселее стало - добавилась зависимость от напряжения :О
Сотри загрузчик и зашей код без него - узнаешь он ли виноват или нет.
Когда то пробовал. По-моему программа вообще не стартовала изначально. Попробую ещё раз.
Смотреть нужно на то, чем сброс по WDT отличается от хардового. И/или софтового.
Думаю, ни чем, не считая флагов в регистре.
дык WDT может же просто прерывания генерировать без перезагрузки.
Или я не понял и вопрошающему что то другое нужно?
"Мкей"(с). В приведённом примере(в первом моём сообщении) что генерируется?
Сотри загрузчик и зашей код без него - узнаешь он ли виноват или нет.
Шил с IDE через USBASP. Скомпилировалось, залилось , проверялось и тадам
Reading | #################################################Произошла ошибка при загрузке скетча # | 100% 135.26s avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0000 0x08 != 0x0c avrdude: verification error; content mismatch avrdude done. Thank you.Ессесьно не стартует, загрузчик - затерся.
А у тебя MegaCore то вообще стоит? ( https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json )
Только то, что в стандартном зипе.
Ну так поставь, компилировать нужно без загрузчика.
Спасибо, попробую. Но это не решение проблемы, а костыль всё же. Да и фюзы останутся родными.
Это не костыль - а понять в чем причина. Если в загрузчике - будешь уже им заниматься. А если ничего не изменится - значит что-то не то в коде.
Да и фюзы останутся родными.
Как выставишь все настройки один раз через программатор нажми "Записать загрузчик" - вместе с ним и фьюзы нужные запишутся. Потом можно смело тереть загрузчик и загружать бинарник.
Потому и уточнил. Пробую.
Прошил загрузчик, убедился в работоспособности залив блинк через USB.
И полная копия #58 http://arduino.ru/forum/apparatnye-voprosy/vsegda-li-wdt-perezagruzhaet-kontroller?page=1#comment-651916
:О Сейчас залил блинк через USBASP. Залилось, проверилось без ошибок, НО НЕРАБОТАЕТ. Это всё еще на MegaCore. А вот на родных помницца мне заливалось и фунциклировало. Правда непомню через что шил, т.к. была и дудка с графической оболочкой, и кодевижнавр и атмел студия с самодельным avrisp mk2.
Дичь какая-то, все должно работать. Ты загружаешь код с выставленными как в #61 настройками?
Ещё какая :)
Почти, всё же программатор надо установить USBASP.
Гружу по пути: Скетч > загрузить через программатор.
IDE - портабля(не установочная)
может просто мега дохлая, у меня была такая надавишь на кристалл - работает, отпустил, иногда работает, иногда нет, все ноги пропаяны, в самом кристалле глюк
Нет, проверено на разных мегах, глюк повторяется.
Что то ты делаешь не так, не может быть чтобы у, если не миллионов, но тысяч людей все работало без загрузчика, а у тебя нет. Я вообще с этим не сталкивался. Правда и от помигать встроенным диодом до шить без загрузчика у меня 3 года ушло, неспешно, по выходным иногда (2-3 часа в день) и иногда в будни (примерно так же). В сумме может быть 2-3 месяца по 8 часов, и то не факт.
Что-то ты делаешь не так. Как давно этим занимаешься?
Прикол в том, что типа шьётся, проверяется, а в конце выдаёт "Ой, всё"(с) Можно было грешить на IDE или программатор, но загрузчик то из неё и через него шьётся.
Время тут не показатель, тут важнее "нтелехт"(с) и необходимость Первый проект на CodeVisionAVR датирован десятым годом(поморгать диодиком, обработать кнопку, вывести "hello world" . Остальные не сильно сложнее. С ардуиной столкнулся года четыре назад и забил на голые камни(библиотеки наше ВСЁ)
Никто и не говорил отказываться от библиотек. И на асм переходить тем более. Приведи вывод «Ой все», включи полный вывод в настройках.
Воть, уже дважды приводил. http://arduino.ru/forum/apparatnye-voprosy/vsegda-li-wdt-perezagruzhaet-kontroller?page=1#comment-651916
Сейчас прошил блинк через USBASP уну и... РАБОТАЕТ. Беда похоже настройках ИДЕ для МЕГИ.
Вернул оригинальный загрузчик в МЕГУ. Залил блинк через USBASP и... проверка прошла но НЕ МОРГАИТЬ.
C:\arduino-1.8.12\arduino-builder -dump-prefs -logger=machine -hardware C:\arduino-1.8.12\hardware -hardware C:\Users\Bar\AppData\Local\Arduino15\packages -tools C:\arduino-1.8.12\tools-builder -tools C:\arduino-1.8.12\hardware\tools\avr -tools C:\Users\Bar\AppData\Local\Arduino15\packages -built-in-libraries C:\arduino-1.8.12\libraries -libraries C:\Users\Bar\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -ide-version=10812 -build-path C:\Users\Bar\AppData\Local\Temp\arduino_build_825418 -warnings=default -build-cache C:\Users\Bar\AppData\Local\Temp\arduino_cache_232857 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\arduino-1.8.12\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\arduino-1.8.12\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\arduino-1.8.12\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\arduino-1.8.12\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Users\Bar\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\Bar\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -verbose C:\arduino-1.8.12\examples\01.Basics\Blink\Blink.ino C:\arduino-1.8.12\arduino-builder -compile -logger=machine -hardware C:\arduino-1.8.12\hardware -hardware C:\Users\Bar\AppData\Local\Arduino15\packages -tools C:\arduino-1.8.12\tools-builder -tools C:\arduino-1.8.12\hardware\tools\avr -tools C:\Users\Bar\AppData\Local\Arduino15\packages -built-in-libraries C:\arduino-1.8.12\libraries -libraries C:\Users\Bar\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -ide-version=10812 -build-path C:\Users\Bar\AppData\Local\Temp\arduino_build_825418 -warnings=default -build-cache C:\Users\Bar\AppData\Local\Temp\arduino_cache_232857 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\arduino-1.8.12\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\arduino-1.8.12\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\arduino-1.8.12\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\arduino-1.8.12\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Users\Bar\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\Bar\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -verbose C:\arduino-1.8.12\examples\01.Basics\Blink\Blink.ino Using board 'mega' from platform in folder: C:\arduino-1.8.12\hardware\arduino\avr Using core 'arduino' from platform in folder: C:\arduino-1.8.12\hardware\arduino\avr Detecting libraries used... "C:\\arduino-1.8.12\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.12\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.12\\hardware\\arduino\\avr\\variants\\mega" "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418\\sketch\\Blink.ino.cpp" -o nul Generating function prototypes... "C:\\arduino-1.8.12\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.12\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.12\\hardware\\arduino\\avr\\variants\\mega" "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418\\sketch\\Blink.ino.cpp" -o "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418\\preproc\\ctags_target_for_gcc_minus_e.cpp" "C:\\arduino-1.8.12\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418\\preproc\\ctags_target_for_gcc_minus_e.cpp" Компиляция скетча... "C:\\arduino-1.8.12\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.12\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.12\\hardware\\arduino\\avr\\variants\\mega" "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418\\sketch\\Blink.ino.cpp" -o "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418\\sketch\\Blink.ino.cpp.o" Compiling libraries... Compiling core... Using precompiled core: C:\Users\Bar\AppData\Local\Temp\arduino_cache_232857\core\core_arduino_avr_mega_cpu_atmega2560_5c993afd736b5a0121375850753f3d54.a Linking everything together... "C:\\arduino-1.8.12\\hardware\\tools\\avr/bin/avr-gcc" -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections,--relax -mmcu=atmega2560 -o "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418/Blink.ino.elf" "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418\\sketch\\Blink.ino.cpp.o" "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418/..\\arduino_cache_232857\\core\\core_arduino_avr_mega_cpu_atmega2560_5c993afd736b5a0121375850753f3d54.a" "-LC:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418" -lm "C:\\arduino-1.8.12\\hardware\\tools\\avr/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418/Blink.ino.elf" "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418/Blink.ino.eep" "C:\\arduino-1.8.12\\hardware\\tools\\avr/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418/Blink.ino.elf" "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418/Blink.ino.hex" "C:\\arduino-1.8.12\\hardware\\tools\\avr/bin/avr-size" -A "C:\\Users\\Bar\\AppData\\Local\\Temp\\arduino_build_825418/Blink.ino.elf" Скетч использует 1448 байт (0%) памяти устройства. Всего доступно 253952 байт. Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 8183 байт для локальных переменных. Максимум: 8192 байт. C:\arduino-1.8.12\hardware\tools\avr/bin/avrdude -CC:\arduino-1.8.12\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cusbasp -Pusb -Uflash:w:C:\Users\Bar\AppData\Local\Temp\arduino_build_825418/Blink.ino.hex:i avrdude: Version 6.3-20190619 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "C:\arduino-1.8.12\hardware\tools\avr/etc/avrdude.conf" Using Port : usb Using Programmer : usbasp AVR Part : ATmega2560 Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PA0 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00 flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00 lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : usbasp Description : USBasp, http://www.fischl.de/usbasp/ avrdude: auto set sck period (because given equals null) avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x1e9801 (probably m2560) avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: auto set sck period (because given equals null) avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: reading input file "C:\Users\Bar\AppData\Local\Temp\arduino_build_825418/Blink.ino.hex" avrdude: writing flash (1448 bytes): Writing | ################################################## | 100% 0.90s avrdude: 1448 bytes of flash written avrdude: verifying flash memory against C:\Users\Bar\AppData\Local\Temp\arduino_build_825418/Blink.ino.hex: avrdude: load data flash data from input file C:\Users\Bar\AppData\Local\Temp\arduino_build_825418/Blink.ino.hex: avrdude: input file C:\Users\Bar\AppData\Local\Temp\arduino_build_825418/Blink.ino.hex contains 1448 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.86s avrdude: verifying ... avrdude: 1448 bytes of flash verified avrdude done. Thank you.Настрой через чувака фьюзы, там по сути только тактирование важно, остальное можно оставить по умолчанию. Скомпилируй прошивку по скрину выше (ту же тактовую с того же источника (внешний/внутренний) указывай), и загрузи через чувака .hex
ЗЫ: долго писал, ты уже ответил. Похоже что-то с камнем.
Думаю проблема в том что в 2560 несколько страниц flash и JMP 0x0000 срабатывает только внутри страницы и если она не нулевая, то выполняется не тот код.
Какая именно плата или "голый" чип? Почему никто не попросил считать фьюзы ???
del
Хотелось бы увидеть фьюзы при залитом и неработающем hex блинка. Т.е. заливаем hex, проверяем что не работает, считываем фьюзы.
С такими фьюзами первым стартует загрузчик. Поменяйте HIGH на D9 - что бы первым стартовал скетч.
Удалил. То были фюзы после после хекса с загрузчиком(но ведь не должно быть разницы, правда?(мем с падмой)
Это после залитого хекса без загрузчика
Ничего не поменялось ! Пока D8 на D9 не поменяете - первым будет стартовать загрузчик !
Поставил на bootrst, залил фюзы, перезапустил - не стартует. Повторно залил хекс - заблинкало. Круто.
А это как-то поможет в решении основного вопроса, т.к. шить через сторонние программы и менять фюзы обычный пользователь не будет(раньше спалит всё к чертям:)
Я бы залил внешним программатором HEX нужного мне загрузчика и также выставил верные фьюзы. Если в IDE просто заливать скетчи через загрузчик - фьюзы меняться не должны и скетч не должен затирать загрузчик. Что там и как IDE прописывает при заливке загрузчика - зависит много от чего !!!
(это если вообще нужен загрузчик)
А если не нужен (1-8 килобайт на дороге не валяются), то выставить D9 FF FD и лить скетчи внешним программатором не трогая больше фьюзы.
(в таком режиме как WDT себя ведет на вашем МЕГАскетче ???)
:О Про незатирание фюзов при заливке через UART это понятно, а вот вариантность заливки загрузчика из стандартного набора плат это как? Фюзы же жестко прописаны в файлах настройки, вариативности выбора во внешней среде практически нет(ну, разве что, выбор старого загрузцика для наны и 168 ядра).
И кстати задолбался перекидывать дрова на USBASP задигом на десятой винде. Под ардуино ИДЕ свой, под дудку свой. Может есть способ проще? Avrisp mk2 самолепный раньше ни с дудкой ни с ардуиной ИДЕ не работал, сейчай пока не пробовал.
Arduino IDE все манипуляции делает запуская консольную avrdude с разными текстовыми параметрами. Я графическими утилитами не пользуюсь обычно. Видимо сама avrdude разных версий.
Как с D9 FF FD себя ведет WDR в вашем скетче ?
Никак. Через дудку льётся, но не проходит верификацию(ругается на лок биты, хотя они "типа" такие же как в заводском голом чипе. А через UART вообще не шьётся. Загрузчик вроде залил через хекс с загрузчиком(масло, блин масляное), ресет пытался поймать - ничего. Бум разбираться.
В подтверждение дебильной теории - размер = глюк с перезагрузкой, вчера провел эксперимент. В скетче, гарантированно не перезапускающийся при срабатывании собаки, сделал следующее: В одном из меню программы, которые закопаны глубоко и в обычной работе не участвуют, закоментил кучу надписей(т.е. ни на что не влияющая хрень вроде) Скетч из чуть больше 240кБ стал чуть меньше. И вуаля - вачдог перезапускает.
Может старая дудка не умеет правильно 2560 прошивать ???
Делаем Erase chip в AVRDUDE
Выставляем D9 FF FD в AVRDUDE
Прошиваем скетч в IDE через внешний программатор
(у меня нет под рукой физической 2560 для попробовать ...)
Думаю проблема в том что в 2560 несколько страниц flash и JMP 0x0000 срабатывает только внутри страницы и если она не нулевая, то выполняется не тот код.
Какая именно плата или "голый" чип? Почему никто не попросил считать фьюзы ???
интересная мысль! WDT обязан уметь выбирать страницу 0 в таком случае...
Я сейчас почитал ... JMP может 4М адресовать. Так что тут что то другое скорее всего.
Может старая дудка не умеет правильно 2560 прошивать ???
Делаем Erase chip в AVRDUDE
Выставляем D9 FF FD в AVRDUDE
Прошиваем скетч в IDE через внешний программатор
(у меня нет под рукой физической 2560 для попробовать ...)
Блинк шьётся и работает, моё шьётся, но не проходит проверку как и в #58
Снова залил родной загрузчик, D9(отличия только в установленых локах11 и 12) и... Блинк шьётся и работает, моё шьётся, не проходит проверку.
Попробую позже оживить avrisp mk2 и закинуть через студию и/или кодевижон.
Но, в любом случае, сдаётся мне что не там "собака порылась". О, каламбур про вачдог:)
У меня как-то было такое - Mega с прошивкой >64k периодически не шилась через IDE.
Вооть. Чуется, что чудит компилятор со встроенной дудкой.
А если LOCK биты оставить в покое (по дефолту) ?
У вас в логе есть:
C:\arduino-1.8.12\hardware\tools\avr/bin/avrdude -CC:\arduino-1.8.12\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cusbasp -Pusb -Uflash:w:C:\Users\Bar\AppData\Local\Temp\arduino_build_825418/Blink.ino.hex:i
Это IDE вызывает консольную avrdude.
C:\arduino-1.8.12\hardware\tools\avr/bin/avrdude -CC:\arduino-1.8.12\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cusbasp -Pusb не меняем это все что касается программатора и платы.
А дальше можем использовать ключи и делать ВСЁ ЧТО УГОДНО.
"А что есть истина"(с) :) дефолтные заводского чипа или дефолтные загрузчика Arduino IDE?
В любом случае, через дудку блинк шьётся и с установленными галками на 11 и 12 и без. А моё вот http://arduino.ru/forum/apparatnye-voprosy/vsegda-li-wdt-perezagruzhaet-kontroller?page=1#comment-652019
Я сейчас почитал ... JMP может 4М адресовать. Так что тут что то другое скорее всего.
шина адреса 22-х битная?