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

UPDI atmega808 и преобразователь USB<>UART в качестве программатора: как проверить работу минимальными средствами?

Я хочу разобраться с программированием МК ATmega808 через преобразователь USB<>UART,

подключаю контакт UPDI МК к контактам преобразователя USB<>UART на CP2102: к Tx через резистор 4к7, к Rx напрямую.

Просмотрев тех.описание UPDI МК, предположил, что для проверки работы будет достаточно

подать 0 в течение 52мс (сброс - 2 сигнала BREAK на самой малой скорости 300 бит/с при длине слова 12 бит) , опционально выдержать паузу (но не более 13мс, иначе МК перейдет в режим debug), запросить SIB МК, подав команду 0x55 0xE5 на желаемой скорости передачи, принять ответ от МК - 16 байт SIB.

Пробовал передавать такую последовательность на скоростях 300, 9600, 115200 бит/с,

Примерно через интервал, равный передаче 10 слов, приходит короткий импульс от МК (через 1,14мс при 115200; через 13мс при 9600).

В приёмном буфере вижу то, что передал: 0x00 0x55 0xE5

В чем ошибка?

Правильно ли я понял, что для считывания SIB передавать ключи не требуется?

 

Проекты на Python и C с Githab скачал, ссылки на них не требуются,

хотелось бы понять, что не соответствует требованиям тех.описания.

 

На осциллограмме передача последовательности:

окончание 52мс импульса BREAK - 4мс ПАУЗА - отправка '0x55 0xE5' на скорости 9600:   0(start) 10101010 0(EvenParity) 11(2stopbits)   0(start) 10100111 1(EvenParity) 11(2stopbits) - через 13мс импульс от ATmega808

Последовательность передачи в байте: сначала младший бит

br9600_Tx_55_E5.jpg

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


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

On 6/26/2022 at 8:18 PM, adnega said:

Обычно на TX 1k5 резистор.

Запаян именно 1к5, при тестах добавлял последовательно 3к3, т.к. встречалась инф. как о 4к7, так и о 1к5 (последний номинал вроде из-за того, что в каком-то адаптере уже есть 2к2) - изменяется уровень "0", но принципиальных изменений в картинке и в буфере Rx нет.

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


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

А цель у вас какая? Программировать через UART-преобразователь? Это видели?

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


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

цель - программировать через адаптер на CP2102 и своё ПО; с githab скачивал именно этот проект на C, в нём есть функция считывания SIB микроконтроллера LINK_Read_SIB(), но обращения к этой функции не видно, т.е., в какой последовательности к ней обращаться, я не нашел. возможно, посмотрю в исходном проекте на python - где-то попадалось начало работы со считывания SIB.

под C-проект понадобилась среда codeclocks (скачал, просмотрел проект), далее нужно установить и привязать к среде компилятор gcc для отладки, чтобы восстановить последовательность вызовов или использовать откомпилированное ПО как есть (пока gcc не устанавливал).

возможно, приобрести адаптер CH340

на githab попадалась статья, в которой критиковалось использование CP2102 в этих целях.

в общем, надо разбираться. ожидал, что проще это сделать по описанию.

есть тонкости в возможностях CP2102 - они отличаются от CH340: организовать два BREAKs на скорости 300 бит/с с паузой в 1 стоп-бит, а затем паузу не более 13мс не могу из-за особенностей библиотеки под CP2102 и возможности выбора программной задержки.

по старту могу организовать то, что на осциллограмме, но это вроде не противоречит требованиям даташита

здесь тоже появились ответы:

https://www.avrfreaks.net/forum/updi-programmer-how-can-it-be-tested-minimal-means

пишут, что на скорости 9600 импульс от atmega808 через 13мс - признак того, что м808 распознал скорость передачи, выдержал интервал в 128 бит, попытался ответить, но столкнулся с коллизией...

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


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

On 6/26/2022 at 8:18 PM, adnega said:

Обычно на TX 1k5 резистор.

Ответ на https://www.avrfreaks.net/forum/updi-programmer-how-can-it-be-tested-minimal-means о том, что ATmega808 отвечает, но обнаруживает коллизию, позволил предположить, что проблема может быть в соединении TX адаптера > 1к5 > UPDI pin; я также пробовал добавлять последовательно 3к3 и 11к - ответ UPDI: импульс менее 1мкс.

Заменил на Tx адаптера > катод диода Шоттки ; анод > к Rx адаптера и через 470 Ом > UPDI pin ATmega808,

получил ответы от ATmega808 по UPDI.

Рекомендации отсюда:

https://github.com/SpenceKonde/AVR-Guidance/blob/master/UPDI/jtag2updi.md

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


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

On 6/28/2022 at 5:42 PM, bvn123 said:

Заменил на Tx адаптера > катод диода Шоттки ; анод > к Rx адаптера и через 470 Ом > UPDI pin ATmega808,

получил ответы от ATmega808 по UPDI.

Если получили ответ от ATmega808, то интересно, какие у ответа уровни логического сигнала по цифровому осциллографу. У меня они оказывались несколько смещенными.

 

Для разработчика программатор должен быть совмещён с отладчиком. Для хорошего отладчика надо, чтобы МК мог сам передавать байты в компьютер, а у UPDI вроде как нет такой возможности.

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


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

On 7/16/2022 at 1:45 PM, AI7 said:

Если получили ответ от ATmega808, то интересно, какие у ответа уровни логического сигнала по цифровому осциллографу. У меня они оказывались несколько смещенными.

 

Для разработчика программатор должен быть совмещён с отладчиком. Для хорошего отладчика надо, чтобы МК мог сам передавать байты в компьютер, а у UPDI вроде как нет такой возможности.

Значения уровней на конт.Rx адаптера и на ATmega808/конт. UPDI - не уверен, что измерял их после того, как программатор заработал,

на осциллограмме в первом сообщении виден уровень ответа МК, хотя только короткого импульса - что-то было с выбором номинала резистора, в зависимости от него уровень лог.нуля менялся.

Посмотрел записи осциллографа - это единственная осциллограмма, которая сохранилась по этой теме.

 

Осваивать работу с МК, конечно, удобнее со стартовым комплектом, отладчиком, рабочими примерами программ, но я начина с самодельного LPT-программатора, чтобы вообще познакомиться с AVR, потом по привычке обходился симуляторами и инфой, которую выводил на комп через UART, а для AVR и самодельными программаторами.

У UPDI есть возможность читать/записывать из/в память, в т.ч. в регистры - они отображаются в общем адресном пространстве всей памяти для atmega808. Другой вопрос, что я могу это делать своим приложением, не интегрированным в среду разработки.

 

 

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


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

On 7/16/2022 at 1:45 PM, AI7 said:

интересно, какие у ответа уровни логического сигнала

Все осциллограммы при считывании фьюз-байта, первая (UPDI_UPDI-Tx_ReadFuse.jpg) - вся последовательность.

Программатор:

адаптер USB<>UART,  от его контактов: от Tx через диод Шоттки; от Rx через резистор 510 Ом к контакту UPDI.

Шкалы напряжений для каналов выровнены (по возможности). Картинки кликабельны.

 

UPDI_UPDI-Tx_ReadFuse.jpg

считывание фьюз-байта, желтый - UPDI, голубой - Tx,

Остальное - фрагменты:

UPDI_Rx-Tx.jpg

Желтый - Rx, голубой - Tx

 

UPDI_Rx-Tx_Zoom.jpg

Zoom предыдущей

 

UPDI_UPDI-Tx.jpg

Желтый - UPDI, голубой - Tx

 

UPDI_UPDI-Tx_Zoom.jpg

Zoom предыдущей

 

Приложение на основе найденного на GitHub проекта:

Programmer_UPDI_BOOTLOADER.jpg

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


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

On 8/17/2022 at 7:08 PM, bvn123 said:

Значения уровней на конт.Rx адаптера и на ATmega808/конт. UPDI - не уверен, что измерял их после того, как программатор заработал,

на осциллограмме в первом сообщении виден уровень ответа МК, хотя только короткого импульса - что-то было с выбором номинала резистора, в зависимости от него уровень лог.нуля менялся.

Посмотрел записи осциллографа - это единственная осциллограмма, которая сохранилась по этой теме.

 

Осваивать работу с МК, конечно, удобнее со стартовым комплектом, отладчиком, рабочими примерами программ, но я начина с самодельного LPT-программатора, чтобы вообще познакомиться с AVR, потом по привычке обходился симуляторами и инфой, которую выводил на комп через UART, а для AVR и самодельными программаторами.

У UPDI есть возможность читать/записывать из/в память, в т.ч. в регистры - они отображаются в общем адресном пространстве всей памяти для atmega808. Другой вопрос, что я могу это делать своим приложением, не интегрированным в среду разработки.

 

 

У меня нулевой уровень ответа от МК оказался несколько больше нуля, хотя должен бы быть, практически, равен нулю. Смотрел на двух МК серии AVR32DA. Предполагал, что, возможно, попали такие МК.

На ваших осциллограммах нулевой уровень вроде как тоже смещён, так что, возможно, это не случайность, а какая-то специфика этой серии.

 

На мой взгляд, для дебаггера (это программатор плюс отладчик) лучше поставить МК, который и будет непосредственно работать с отлаживаемым МК. Этот МК связан с компьютером через USB при помощи CH340G.

А для этого МК никакие резисторы и диоды не нужны, ведь у МК вывод TxD можно отключить. Это сильно улучшает ситуацию, а стоит копейки.

Похоже, из-за резистора на ваших осциллограммах видны сильные завалы фронтов, что очень плохо.

 

Хотел сделать дебаггер на AVR32DA32, который может работать одновременно с двумя отлаживаемыми МК. Часто приходится работать с распределёнными системами с несколькими МК.

AVR32DA32 – довольно богатая на периферию микросхема, в частности, есть два SPI, что мне нужно, и стоила относительно недорого – 200 рублей.

Однако после известных событий МК многократно подорожал, разработку пришлось остановить. Сейчас вроде как подешевел, скоро, наверно, продолжу разработку.

Стартовый комплекс и прочее мне вроде как не нужны, ядро AVR знаю, плохо только то, что в документации режим программатора плохо описан.

Дошёл до стадии, когда прочитал сигнатуру отлаживаемого МК, после чего из-за подорожания остановил разработку.

 

Лучше всего встроить дебаггер в среду разработки, чем сейчас и занимаюсь.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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