bvn123 0 26 июня, 2022 Опубликовано 26 июня, 2022 · Жалоба Я хочу разобраться с программированием МК 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 Последовательность передачи в байте: сначала младший бит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 26 июня, 2022 Опубликовано 26 июня, 2022 · Жалоба Обычно на TX 1k5 резистор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 26 июня, 2022 Опубликовано 26 июня, 2022 · Жалоба On 6/26/2022 at 8:18 PM, adnega said: Обычно на TX 1k5 резистор. Запаян именно 1к5, при тестах добавлял последовательно 3к3, т.к. встречалась инф. как о 4к7, так и о 1к5 (последний номинал вроде из-за того, что в каком-то адаптере уже есть 2к2) - изменяется уровень "0", но принципиальных изменений в картинке и в буфере Rx нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 26 июня, 2022 Опубликовано 26 июня, 2022 · Жалоба А цель у вас какая? Программировать через UART-преобразователь? Это видели? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 27 июня, 2022 Опубликовано 27 июня, 2022 · Жалоба цель - программировать через адаптер на 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 бит, попытался ответить, но столкнулся с коллизией... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 28 июня, 2022 Опубликовано 28 июня, 2022 · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AI7 0 16 июля, 2022 Опубликовано 16 июля, 2022 · Жалоба On 6/28/2022 at 5:42 PM, bvn123 said: Заменил на Tx адаптера > катод диода Шоттки ; анод > к Rx адаптера и через 470 Ом > UPDI pin ATmega808, получил ответы от ATmega808 по UPDI. Если получили ответ от ATmega808, то интересно, какие у ответа уровни логического сигнала по цифровому осциллографу. У меня они оказывались несколько смещенными. Для разработчика программатор должен быть совмещён с отладчиком. Для хорошего отладчика надо, чтобы МК мог сам передавать байты в компьютер, а у UPDI вроде как нет такой возможности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 17 августа, 2022 Опубликовано 17 августа, 2022 · Жалоба On 7/16/2022 at 1:45 PM, AI7 said: Если получили ответ от ATmega808, то интересно, какие у ответа уровни логического сигнала по цифровому осциллографу. У меня они оказывались несколько смещенными. Для разработчика программатор должен быть совмещён с отладчиком. Для хорошего отладчика надо, чтобы МК мог сам передавать байты в компьютер, а у UPDI вроде как нет такой возможности. Значения уровней на конт.Rx адаптера и на ATmega808/конт. UPDI - не уверен, что измерял их после того, как программатор заработал, на осциллограмме в первом сообщении виден уровень ответа МК, хотя только короткого импульса - что-то было с выбором номинала резистора, в зависимости от него уровень лог.нуля менялся. Посмотрел записи осциллографа - это единственная осциллограмма, которая сохранилась по этой теме. Осваивать работу с МК, конечно, удобнее со стартовым комплектом, отладчиком, рабочими примерами программ, но я начина с самодельного LPT-программатора, чтобы вообще познакомиться с AVR, потом по привычке обходился симуляторами и инфой, которую выводил на комп через UART, а для AVR и самодельными программаторами. У UPDI есть возможность читать/записывать из/в память, в т.ч. в регистры - они отображаются в общем адресном пространстве всей памяти для atmega808. Другой вопрос, что я могу это делать своим приложением, не интегрированным в среду разработки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 21 августа, 2022 Опубликовано 21 августа, 2022 · Жалоба On 7/16/2022 at 1:45 PM, AI7 said: интересно, какие у ответа уровни логического сигнала Все осциллограммы при считывании фьюз-байта, первая (UPDI_UPDI-Tx_ReadFuse.jpg) - вся последовательность. Программатор: адаптер USB<>UART, от его контактов: от Tx через диод Шоттки; от Rx через резистор 510 Ом к контакту UPDI. Шкалы напряжений для каналов выровнены (по возможности). Картинки кликабельны. считывание фьюз-байта, желтый - UPDI, голубой - Tx, Остальное - фрагменты: Желтый - Rx, голубой - Tx Zoom предыдущей Желтый - UPDI, голубой - Tx Zoom предыдущей Приложение на основе найденного на GitHub проекта: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AI7 0 27 октября, 2022 Опубликовано 27 октября, 2022 · Жалоба 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 знаю, плохо только то, что в документации режим программатора плохо описан. Дошёл до стадии, когда прочитал сигнатуру отлаживаемого МК, после чего из-за подорожания остановил разработку. Лучше всего встроить дебаггер в среду разработки, чем сейчас и занимаюсь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться