prottoss 0 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба Поєтому и вопрос: подскажите, плз, где посмотреть расшифровку команд и параметров STK500-2?На сайте ATMEL, в свободном доступе: Страница: http://atmel.com/dyn/products/app_notes.as...ment_Tools/Kits Прямая ссылка: http://atmel.com/dyn/resources/prod_documents/avr061.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drvlas 0 5 сентября, 2010 Опубликовано 5 сентября, 2010 (изменено) · Жалоба "Но это не то, братцы", как говорил Тарас Бульба :) В протоколе STK500 все числа есть, а ведь меня интересует STK500-2. А вот по нему численных значенией как раз нет. Ну, я почти все уже расшифровал. Но вопрос, кажется, перешел из разряда обмена командами между программатором и компом в новую интресную плоскость. Вот что я установил. Если в программе устанавливается предделитель, то процессор начинает работать с новой частотой после исполнения соответствующей команды. Например, CLKPR= (1<<CLKPS2) | (1<<CLKPS0); // 8 MHz / 32 = 250 kHz Ну, пусть себе. Но вот пришел импульс сброса от внешнего программатора. И этот импулсь, как я думал, сбрасывает предделитель. А вот фигушки! Путем сидения и потения я увидел, что внешняя частота ISP просто слишком велика для моего процессора. Например, по инфо от программы stk500 (ключ -J при запуске ее из командной строки) исходная частота работы ISP - около 1,8 МГц. Естественно, что для внутренней частоты 8 МГц это не проблема, а вот при работе проца на 250 кГц - полный капец. Значит, предполагаю я, предделитель CLKPR не сбрасывается при поступлении импульса сброса. Не удивительно ли? Или это известный факт? Еще один вопрос. Как правильно задать ДУДКе понижение частоты SPI? Я пробовал ключ -i <delay>, задавая 20-50 мкс, но что-то результата не увидел. Поэтому сейчас работаю с БАТ-файлом, в котором сначала через программу stk500 подаю команду понижения частоты работы интерфейса, а затем из avrdude программирую (т.к. ДУДКа сам умеет и верифицировать). Как-то коряво получается. Да и на программирование прямо из Студии пора переходить. Там тоже как-то надо уметь понижать частоту. Да-с, кнопочки "ТОРМОЗ" не хватает в этом ВМ9010... Изменено 5 сентября, 2010 пользователем drvlas Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба "Но это не то, братцы", как говорил Тарас Бульба :)Та же страница, 10 строчек ниже AVR068: STK500 Communication Protocol(37 pages, revision C, updated 06/06) http://atmel.com/dyn/resources/prod_documents/AVR068.zip Как правильно задать ДУДКе понижение частоты SPI? Я пробовал ключ -i <delay>, задавая 20-50 мкс, но что-то результата не увидел. Поэтому сейчас работаю с БАТ-файлом, в котором сначала через программу stk500 подаю команду понижения частоты работы интерфейса, а затем из avrdude программирую (т.к. ДУДКа сам умеет и верифицировать). Как-то коряво получается. Да и на программирование прямо из Студии пора переходить. Там тоже как-то надо уметь понижать частоту. Да-с, кнопочки "ТОРМОЗ" не хватает в этом ВМ9010... AVRDUDE не тема этого топика. Студия прекрасно умеет понижать частоту ISP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drvlas 0 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба Та же страница, 10 строчек ниже Да что-то я не пойму. Этот документ я и загрузил уже давно. Просматриваю 37 страничек и не нахожу численного значения команд. Например, команда с кодом 0x0D - как определить, каким именем ее атмеловцы называют в сием прекрасном документе? Подскажите, плз, если Вы меня поняли... AVRDUDE не тема этого топика. Студия прекрасно умеет понижать частоту ISP. Спасибо, поищу! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба Да что-то я не пойму. Этот документ я и загрузил уже давно. Просматриваю 37 страничек и не нахожу численного значения команд. Например, команда с кодом 0x0D - как определить, каким именем ее атмеловцы называют в сием прекрасном документе? Подскажите, плз, если Вы меня поняли... Спасибо, поищу! Мда, тяжелый случай. Я ниже ссылку дал... Хорошо. Сам скачаю, распакую и вставлю в сообщение //**** ATMEL AVR - A P P L I C A T I O N N O T E ************************ //* //* Title: AVR068 - STK500 Communication Protocol //* Filename: command.h //* Version: 1.0 //* Last updated: 31.01.2005 //* //* Support E-mail: [email protected] //* //************************************************************************** // *****************[ STK message constants ]*************************** #define MESSAGE_START 0x1B //= ESC = 27 decimal #define TOKEN 0x0E // *****************[ STK general command constants ]************************** #define CMD_SIGN_ON 0x01 #define CMD_SET_PARAMETER 0x02 #define CMD_GET_PARAMETER 0x03 #define CMD_SET_DEVICE_PARAMETERS 0x04 #define CMD_OSCCAL 0x05 #define CMD_LOAD_ADDRESS 0x06 #define CMD_FIRMWARE_UPGRADE 0x07 // *****************[ STK ISP command constants ]****************************** #define CMD_ENTER_PROGMODE_ISP 0x10 #define CMD_LEAVE_PROGMODE_ISP 0x11 #define CMD_CHIP_ERASE_ISP 0x12 #define CMD_PROGRAM_FLASH_ISP 0x13 #define CMD_READ_FLASH_ISP 0x14 #define CMD_PROGRAM_EEPROM_ISP 0x15 #define CMD_READ_EEPROM_ISP 0x16 #define CMD_PROGRAM_FUSE_ISP 0x17 #define CMD_READ_FUSE_ISP 0x18 #define CMD_PROGRAM_LOCK_ISP 0x19 #define CMD_READ_LOCK_ISP 0x1A #define CMD_READ_SIGNATURE_ISP 0x1B #define CMD_READ_OSCCAL_ISP 0x1C #define CMD_SPI_MULTI 0x1D // *****************[ STK PP command constants ]******************************* #define CMD_ENTER_PROGMODE_PP 0x20 #define CMD_LEAVE_PROGMODE_PP 0x21 #define CMD_CHIP_ERASE_PP 0x22 #define CMD_PROGRAM_FLASH_PP 0x23 #define CMD_READ_FLASH_PP 0x24 #define CMD_PROGRAM_EEPROM_PP 0x25 #define CMD_READ_EEPROM_PP 0x26 #define CMD_PROGRAM_FUSE_PP 0x27 #define CMD_READ_FUSE_PP 0x28 #define CMD_PROGRAM_LOCK_PP 0x29 #define CMD_READ_LOCK_PP 0x2A #define CMD_READ_SIGNATURE_PP 0x2B #define CMD_READ_OSCCAL_PP 0x2C #define CMD_SET_CONTROL_STACK 0x2D // *****************[ STK HVSP command constants ]***************************** #define CMD_ENTER_PROGMODE_HVSP 0x30 #define CMD_LEAVE_PROGMODE_HVSP 0x31 #define CMD_CHIP_ERASE_HVSP 0x32 #define CMD_PROGRAM_FLASH_HVSP 0x33 #define CMD_READ_FLASH_HVSP 0x34 #define CMD_PROGRAM_EEPROM_HVSP 0x35 #define CMD_READ_EEPROM_HVSP 0x36 #define CMD_PROGRAM_FUSE_HVSP 0x37 #define CMD_READ_FUSE_HVSP 0x38 #define CMD_PROGRAM_LOCK_HVSP 0x39 #define CMD_READ_LOCK_HVSP 0x3A #define CMD_READ_SIGNATURE_HVSP 0x3B #define CMD_READ_OSCCAL_HVSP 0x3C // *****************[ STK status constants ]*************************** // Success #define STATUS_CMD_OK 0x00 // Warnings #define STATUS_CMD_TOUT 0x80 #define STATUS_RDY_BSY_TOUT 0x81 #define STATUS_SET_PARAM_MISSING 0x82 // Errors #define STATUS_CMD_FAILED 0xC0 #define STATUS_CKSUM_ERROR 0xC1 #define STATUS_CMD_UNKNOWN 0xC9 // *****************[ STK parameter constants ]*************************** #define PARAM_BUILD_NUMBER_LOW 0x80 #define PARAM_BUILD_NUMBER_HIGH 0x81 #define PARAM_HW_VER 0x90 #define PARAM_SW_MAJOR 0x91 #define PARAM_SW_MINOR 0x92 #define PARAM_VTARGET 0x94 #define PARAM_VADJUST 0x95 #define PARAM_OSC_PSCALE 0x96 #define PARAM_OSC_CMATCH 0x97 #define PARAM_SCK_DURATION 0x98 #define PARAM_TOPCARD_DETECT 0x9A #define PARAM_STATUS 0x9C #define PARAM_DATA 0x9D #define PARAM_RESET_POLARITY 0x9E #define PARAM_CONTROLLER_INIT 0x9F // *****************[ STK answer constants ]*************************** #define ANSWER_CKSUM_ERROR 0xB0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drvlas 0 7 сентября, 2010 Опубликовано 7 сентября, 2010 · Жалоба Мда, тяжелый случай. Я ниже ссылку дал... Я не понимаю... Атмеловский PDF документ с таким же номером у меня скачан, там совсем иное изложение вопроса. Я потому по Вашей ссылке и не стал еще раз качать... Ну, ладно, все хорошо, что хорошо кончается. Спасибо большое! Если Вам интересно, то вот какая у меня выскакивает ошибочка при программировании ATmega48PA на перепрошитом мастеркитовском изделии. Даю бат файл: stk500 -dATmega48PA -I500k avrdude.exe -p m48p -c stk500 -y -U flash:w:..\foo.hex lock:w:0x3c:m Он понижает частоту SPI, затем начинает запись. И, что повторяется ВСЕГДА, в самом конце (99% из 2756 байт) пишет такое: stk500v2-command(): unknown status 0x81 stk500v2_paged_write: write command failed После этого задумывается на 10-15 секунд и, о чудо! - заканчивает программировать: рисует снова бар на 100% и сообЧает 2756 bytes of flash written Далее все пучком - читает, верифицирует, нет проблем. Пробовал на нескольких микросхемах, со (слегка) разными по длине файлами - результат повторяется. Что скажете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 7 сентября, 2010 Опубликовано 7 сентября, 2010 · Жалоба Что скажете?Для начала спрошу, пробовали ли Вы программировать контроллер через AVRStudio? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drvlas 0 7 сентября, 2010 Опубликовано 7 сентября, 2010 · Жалоба Для начала внесу маленькую поправку: все же не на одном месте программирование "замирает" и н даже бывает, что проскакивает без остановки. А в Студии вот что пишет: Getting isp parameter.. SD=0x01 .. OKOK Reading FLASH input file.. OK Setting mode and device parameters.. OK! Entering programming mode.. OK! Erasing device.. OK! Programming FLASH .. FAILED! Leaving programming mode.. OK! Более подробно (мониторинг траффика) не исследовал. Нужно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 12 сентября, 2010 Опубликовано 12 сентября, 2010 · Жалоба Нашел несколько ошибок. Вкладываю новую прошивку. Проверена работа с AVRStudio, CodeVisionAVR, avrdude. Проверялись AT90S2313, ATtiny13, ATtiny2313, ATmega16, ATmega32 AVRISP_USB_Prog.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
WHILE 0 13 сентября, 2010 Опубликовано 13 сентября, 2010 · Жалоба prottoss Залил сегодня вашу прошивку(последнюю). К сожалению, в CV на семействе М16Х при попытке программирования EEPROM все так-же:"STK-500 error leaving programming mode". В Студии все шьется. Так-что глюк похоже все-таки в CV, только вот что и почему только на одной серии... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 13 сентября, 2010 Опубликовано 13 сентября, 2010 · Жалоба prottoss Залил сегодня вашу прошивку(последнюю). К сожалению, в CV на семействе М16Х при попытке программирования EEPROM все так-же:"STK-500 error leaving programming mode". В Студии все шьется. Так-что глюк похоже все-таки в CV, только вот что и почему только на одной серии... Хм... не понятно, как вход в режим программирования зависит от того, какую память мы собираемся шить?:) Я не помню сейчас, какой версией CV я испытывал прошивку. Приду домой, отпишусь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 13 сентября, 2010 Опубликовано 13 сентября, 2010 · Жалоба И так. Только что проверил работу программатора с новой прошивкой на CodeVisionAVR версий 1.25.7; 2.04.2; 2.04.6. В МК ATmega16 и флэш и еепром программируется без ошибок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
WHILE 0 13 сентября, 2010 Опубликовано 13 сентября, 2010 · Жалоба И так. Только что проверил работу программатора с новой прошивкой на CodeVisionAVR версий 1.25.7; 2.04.2; 2.04.6. В МК ATmega16 и флэш и еепром программируется без ошибок. :cranky: Ничего не понимаю... Я лично шью через stk-200 и ICE2-проблем нет. Моим коллегам в командировках периодически требуется перепрошивка девайсов на мегах.Для этого они купили 2 мастеркитовых клона ваших программаторов. С родной прошивкой у них сразу не заладилось.Были перешиты на прошивки от Ink.Заработало,но вылезла эта проблема.Сегодня я перешил на вашу версию-практически ничего не поменялось,только стал работать зеленый светодиод. Причем от компьютера это не зависит точно-не работает одинаково на 2 РС и 2 ноутах.От версии CV не зависит тоже-не пашет на всех и на СhipBlaster тоже.На студии работает. Выйду на работу-попробую поснифать обмен по юсб,больше мыслей нет. Почему у вас работает-не понимаю... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 13 сентября, 2010 Опубликовано 13 сентября, 2010 · Жалоба :cranky: Ничего не понимаю...Есть один момент, который возможно Вам поможет. Дело в том, что уровни лог.1 для входа RESET и XTAL1 выше, чем для остальных линий ВВ МК. По этому я рекомендую на RESET программируемого МК ставить внешний подтягивающий резистор номиналом 10-47 кОм. Если используется тактирование МК от линии LED программатора, то на XTAL1 так же рекомендуется посадить такой же подтягивающий резистор. Хотя, у меня лично с XTAL1 проблем никогда не возникало. Хотя я все же таки не пойму, какая связь между входом в режим программирования и программированием именно ЕЕПРОМа Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
WHILE 0 13 сентября, 2010 Опубликовано 13 сентября, 2010 · Жалоба Это промышленные устройства,резистор по RESET там стоит.Тактируются меги от кварца 7,37 Мгц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться