реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Влияние JTAG-а на работу программы
stalko
сообщение Feb 22 2013, 07:30
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Доброго времени суток всем!
За все время работы с мегами (с икс-мегами в частности) впервые столкнулся с таким абсолютно дурацким "приколом".
Суть такая: проц (ATXmega128A3U) коннектится к Bluetooth модулю через UART, используя AT-команды, при этом идет индикация подмаргивающим светодиодом, BT-модуль ищет пару, соединяется, после чего проц включает USB, проводит энумерацию в системе, светодиод загорается постоянно.
В целом ничего смертельного. Написал, отладился...
Отцепляю JTAG... и вижу... к паре BT никаких попыток соединения, светодиод продолжает моргать, в системе устройства нет... Снова подцепляю JTAG, запускаю... все работает со свистом... Отцепляю... где-то встает намертво. Методом "светодиодоподмаргивания" нашел место. Выяснилось, что часть обмена проц даже успевает провести, но там длина команд и ответов маленькая, как только строки начинаются длиннее, начинается ерунда.
Перецепил JTAG (USBJTAG MkII) в PDI... Все работает...
Вариантов в голове крутится много, начиная от плохих земель, кончая "уезжанием" скорости UART-а. Но зацепиться пока не знаю за что. Вдруг кто уже сталкивался с похожими приколами? Может что присоветуете?
P.S. По сути не думаю, что там что-то страшное, но состояние слегка близко к панике, ибо железяку бы сегодня надо доделать, а еще и день короткий.
P.P.S. Посылаю строки через DMA UART-а, принимаю побайтово, через прерывания, так как заранее длина приемной посылки не известна достоверно.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Feb 22 2013, 07:47
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(stalko @ Feb 22 2013, 11:30) *
Вариантов в голове крутится много, начиная от плохих земель, кончая "уезжанием" скорости UART-а.

...

P.S. По сути не думаю, что там что-то страшное, но состояние слегка близко к панике, ибо железяку бы сегодня надо доделать, а еще и день
короткий.
P.P.S. Посылаю строки через DMA UART-а, принимаю побайтово, через прерывания, так как заранее длина приемной посылки не известна достоверно.


JTAG возможно что-то замедляет... DMA говорит о отовности при начале передачи последнего байта, а какая-то реакция должна произойти после его передачи? Проверка: если понизить скорость обмена с BT, перестать должно работать в любом случае, не только без j-tag...
Go to the top of the page
 
+Quote Post
stalko
сообщение Feb 22 2013, 08:29
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Цитата(Genadi Zawidowski @ Feb 22 2013, 11:47) *
DMA говорит о отовности при начале передачи последнего байта, а какая-то реакция должна произойти после его передачи?

Да, собственно, никакой... Послал, и кручусь, жду, пока наберется строка ответа от модуля. И только после проверки ответа будет другая команда (если будет). Довольно примитивная машина состояний: передал-принял-передал-принял...
Цитата(Genadi Zawidowski @ Feb 22 2013, 11:47) *
Проверка: если понизить скорость обмена с BT, перестать должно работать в любом случае, не только без j-tag...

Об этом я уже думал, но это не так просто, к сожалению (если Вы про физическую скорость UART-а, а не про паузы между посылками, конечно). Кстати, вот плохо, что у XMeg нельзя настроить паузу между байтами в DMA. У АРМов, если я не путаю, ее можно задать...
Go to the top of the page
 
+Quote Post
zombi
сообщение Feb 22 2013, 08:48
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(stalko @ Feb 22 2013, 10:30) *
как только строки начинаются длиннее, начинается ерунда.
Но зацепиться пока не знаю за что

Вот за это и цепляйтесь. От чего тактируемся?
Go to the top of the page
 
+Quote Post
stalko
сообщение Feb 22 2013, 08:58
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Цитата(zombi @ Feb 22 2013, 12:48) *
Вот за это и цепляйтесь.

Ясно, что за это цепляться, знать бы чем biggrin.gif
Цитата(zombi @ Feb 22 2013, 12:48) *
От чего тактируемся?

Для USB у XMeg почти без вариантов: от внутреннего RC-шника, который причем раскачан до 48МГц. От него же, через делитель идет и системный клок, и для периферии.
P.S. В целом, проблема решена. По идее Genadi Zawidowski я вставил внутри основного цикла паузу на 0,5мсек (потом уменьшу). К моему удивлению, все сразу начало работать. Теперь бы еще все протестировать с самого начала, как бы такие паузу чего другого не зацепили
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Feb 22 2013, 09:42
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Я-то думал, Вы разберётесь... и вместо паузы где-то добавите ожидание конца передачи. Но понятно, день короткий...
Go to the top of the page
 
+Quote Post
stalko
сообщение Feb 25 2013, 07:12
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Цитата(Genadi Zawidowski @ Feb 22 2013, 13:42) *
Я-то думал, Вы разберётесь... и вместо паузы где-то добавите ожидание конца передачи. Но понятно, день короткий...

Ожидание конца передачи там есть изначально... это как бы априори... Тут, похоже, нужны именно ПАУЗЫ. Такое чувство, что проц на модуле... как бы сказать... не очень
P.S. Хотя, подумал над Вашей фразой... Мы явно говорим о разных вещах... Я о проверки на окончание передачи перед новой посылкой, но в Вашем контексте это не имеет смысла... Вы предлагаете ожидать окончания передачи прежде чем начинать прием (или не прием, а ОБРАБОТКУ?) ответа? Извините, а смысл? Что это дает, собственно?
P.P.S. Исходя из мысли о том, что не справляется проц модуля я постарался его разгрузить, и отключил эхо у модуля. После чего все заработало всех всяких пауз.

Сообщение отредактировал stalko - Feb 25 2013, 09:03
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Feb 25 2013, 18:14
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



При той информации, что Вы дали о задаче, я мог предположить только то, что где-то алгоритм зависит от TX EMPTY (не от TX READY) - судя по характеру проявлений и по тому, что "пауза помогла".
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 09:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01409 секунд с 7
ELECTRONIX ©2004-2016