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

 
 
> Отладка USART'ов, STM32F103 + Jet-Link Ultra + IAR 7.20.1
ivainc1789
сообщение Jun 9 2014, 09:26
Сообщение #1


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

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Jet-Link Ultra отладчик неплохой, верой и правдой служит уже не первый год, но сейчас к нему есть наблюдения...
Есть два устройства - Master и Slave, реализованы на STM32F103 и общаются по RS-485. Master посылает пакет из нескольких байтов и принимает отклик от Slave'а. Программно реализован контроль передачи пакета ЧЕРЕЗ ПРЕРЫВАНИЯ с помощью USART3 на скорости 9600 Бод. Пока не подключаю отладчик, все замечательно работает.
Теперь делаем следующее:
1. Ставим log breakpoint в соотв место обработчика прерывания по флагу TXE, чтобы выдавался лог по факту передачи каждого байта. Осциллом садимся на TX вывод STM32F103 и видим, что байты передаются не пакетом, а с задержками около 10 (!!!) ms после каждого байта. Выключаем log breakpoint и видим, что байты передаются пакетом как и положено.
2. Ставим log breakpoint в соотв место обработчика прерывания по флагу RXNE, чтобы выдавался лог по факту приема каждого байта. Вижу только прием первого байта пакета...

Вопрос: в чем причина такого поведения? Скорость соединения 2МГц (так написано в панели jet-link'а). Должно же быть все быстрее?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
A. Fig Lee
сообщение Jun 9 2014, 09:59
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



A JetLink как соединяется?
через USB? Там наверное, USB Full Speed и пакеты идут один в миллисекунду?
Один байт - один пакет.
Ы?

И это, TXE/RXNE если память не изменяет, они вроде автоматически обнуляются после обращения к буфферу?
Здесь тоже могла собака порытся: отладчик прочитал, флаг сбросился, все застряло

Сообщение отредактировал A. Fig Lee - Jun 9 2014, 10:01


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Jun 9 2014, 10:23
Сообщение #3


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

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(A. Fig Lee @ Jun 9 2014, 18:09) *
A JetLink как соединяется?
И это, TXE/RXNE если память не изменяет, они вроде автоматически обнуляются после обращения к буфферу?
Да, отладчик соед по USB и кабель должен быть очень хороший и короткий. Поначалу соединял его первым попавшимся - так он работать не хотел, пришлось раскошелиться на специальный full speed.
Совершенно верно, у STM32F1 USART флаги сначала анализироваться должны, а потом считываться байт (при приеме). Ессно, я ставлю log break ПОСЛЕ считывания байта в прерывании, так что здесь вроде все честно...
Пробовал и JTAG и SWD - разницы нет. Особенно удобно смотреть при передаче байтов с осциллом на пине TX: тока вкл log - сразу "растягивается" пакет, выкл. log - пакет "смыкается".
Для контроля передачи байтов такое поведение еще допустимо - SLAVE спокойно принимает байты с задержками, но когда он выплевывает ответ - ясное дело, Master с подключенным отладчиком и log'ом просто не успевает нормально принять все байты после первого...
Неужели никто не сталкивался с таким эффектом? Или я в опциях проекта галку какую-нибудь забыл поставить?
Go to the top of the page
 
+Quote Post
skripach
сообщение Jun 10 2014, 03:57
Сообщение #4


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
Вопрос: в чем причина такого поведения? Скорость соединения 2МГц (так написано в панели jet-link'а). Должно же быть все быстрее?

Не должно, 10мс не так и плохо. Не надо путать скорость с пингом. sm.gif
И вообще отлаживать прерывания жилинком последнее дело.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Jun 10 2014, 04:53
Сообщение #5


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

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(skripach @ Jun 10 2014, 12:07) *
Не должно, 10мс не так и плохо. Не надо путать скорость с пингом. sm.gif
Тогда выходит, что сеть RS-485 не отладить принципиально - на какой мастер или слэйв ни ткнись - посмотреть например наличие битых пакетов в сети принципиально невозможно?
Теоретически, при достижении log breakpoint отладчик должен выполнить простое действие - прочитать несколько байт. Сомневаюсь, что с такими высокоскоростными интерфейсами на это может уйти 10ms ...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 10 2014, 05:44
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



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

но в целом любую протокольщину хорошо отлаживать сообщениями в порт. Вы не лезете в обмен и не сбиваете времянку. Например в USB вообще во время обмена ничего делать нельзя, любое движение и хост выкидывает ваше устройство.

Так что поднимайте еще один UART, выводите его на компьютер и смотрите что там происходит!

Хорошим тоном сделать сразу 3 уровня отладки
1. без отладки в порт ничего не пишется
2. только ошибки, в порт пишется только диагностическая информация, найденные ошибки
3. полная отладка, пишется все и принятые сообщения и ответы.

сразу делаете функцию SendDebug(FLAG, Data);

и дефайните ее на 3 уровня, в 1 случае делаете ее пустой
во 2, 3 случае по FLAG определяете это ошибки или полные сообщения и делаете пустой нужную функцию...
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Jun 10 2014, 05:57
Сообщение #7


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

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата
блин я отлаживал кучу...
Да все это понятно, вопрос стоял не об этом, а верно ли поведение jet-link'а или что-то не так настроено в связке IDE - отладчик.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:12
Рейтинг@Mail.ru


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