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

 
 
> Отладка 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
Ответов
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



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

 


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


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