Перейти к содержанию
    

Поєтому и вопрос: подскажите, плз, где посмотреть расшифровку команд и параметров STK500-2?
На сайте ATMEL, в свободном доступе:

Страница: http://atmel.com/dyn/products/app_notes.as...ment_Tools/Kits

Прямая ссылка: http://atmel.com/dyn/resources/prod_documents/avr061.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Но это не то, братцы", как говорил Тарас Бульба :)

 

В протоколе 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...

Изменено пользователем drvlas

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Но это не то, братцы", как говорил Тарас Бульба :)
Та же страница, 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Та же страница, 10 строчек ниже

Да что-то я не пойму. Этот документ я и загрузил уже давно. Просматриваю 37 страничек и не нахожу численного значения команд. Например, команда с кодом 0x0D - как определить, каким именем ее атмеловцы называют в сием прекрасном документе? Подскажите, плз, если Вы меня поняли...

AVRDUDE не тема этого топика. Студия прекрасно умеет понижать частоту ISP.

Спасибо, поищу!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да что-то я не пойму. Этот документ я и загрузил уже давно. Просматриваю 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мда, тяжелый случай. Я ниже ссылку дал...

Я не понимаю... Атмеловский 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

 

Далее все пучком - читает, верифицирует, нет проблем.

Пробовал на нескольких микросхемах, со (слегка) разными по длине файлами - результат повторяется.

 

Что скажете?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что скажете?
Для начала спрошу, пробовали ли Вы программировать контроллер через AVRStudio?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала внесу маленькую поправку: все же не на одном месте программирование "замирает" и н даже бывает, что проскакивает без остановки.

 

А в Студии вот что пишет:

 

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!

 

Более подробно (мониторинг траффика) не исследовал. Нужно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел несколько ошибок. Вкладываю новую прошивку.

Проверена работа с AVRStudio, CodeVisionAVR, avrdude. Проверялись AT90S2313, ATtiny13, ATtiny2313, ATmega16, ATmega32

AVRISP_USB_Prog.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

prottoss Залил сегодня вашу прошивку(последнюю). К сожалению, в CV на семействе М16Х при попытке программирования EEPROM все так-же:"STK-500 error leaving programming mode". В Студии все шьется.

Так-что глюк похоже все-таки в CV, только вот что и почему только на одной серии...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

prottoss Залил сегодня вашу прошивку(последнюю). К сожалению, в CV на семействе М16Х при попытке программирования EEPROM все так-же:"STK-500 error leaving programming mode". В Студии все шьется.

Так-что глюк похоже все-таки в CV, только вот что и почему только на одной серии...

Хм... не понятно, как вход в режим программирования зависит от того, какую память мы собираемся шить?:) Я не помню сейчас, какой версией CV я испытывал прошивку. Приду домой, отпишусь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И так. Только что проверил работу программатора с новой прошивкой на CodeVisionAVR версий 1.25.7; 2.04.2; 2.04.6.

В МК ATmega16 и флэш и еепром программируется без ошибок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И так. Только что проверил работу программатора с новой прошивкой на CodeVisionAVR версий 1.25.7; 2.04.2; 2.04.6.

В МК ATmega16 и флэш и еепром программируется без ошибок.

:cranky: Ничего не понимаю... Я лично шью через stk-200 и ICE2-проблем нет.

Моим коллегам в командировках периодически требуется перепрошивка девайсов на мегах.Для этого они купили 2 мастеркитовых клона ваших программаторов.

С родной прошивкой у них сразу не заладилось.Были перешиты на прошивки от Ink.Заработало,но вылезла эта проблема.Сегодня я перешил на вашу версию-практически ничего не поменялось,только стал работать зеленый светодиод.

Причем от компьютера это не зависит точно-не работает одинаково на 2 РС и 2 ноутах.От версии CV не зависит тоже-не пашет на всех и на СhipBlaster тоже.На студии работает.

Выйду на работу-попробую поснифать обмен по юсб,больше мыслей нет.

Почему у вас работает-не понимаю...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:cranky: Ничего не понимаю...
Есть один момент, который возможно Вам поможет. Дело в том, что уровни лог.1 для входа RESET и XTAL1 выше, чем для остальных линий ВВ МК. По этому я рекомендую на RESET программируемого МК ставить внешний подтягивающий резистор номиналом 10-47 кОм. Если используется тактирование МК от линии LED программатора, то на XTAL1 так же рекомендуется посадить такой же подтягивающий резистор. Хотя, у меня лично с XTAL1 проблем никогда не возникало.

 

Хотя я все же таки не пойму, какая связь между входом в режим программирования и программированием именно ЕЕПРОМа

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это промышленные устройства,резистор по RESET там стоит.Тактируются меги от кварца 7,37 Мгц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...