|
UART2 на STM32F100C4 сплошные глюки :') |
|
|
|
Sep 18 2012, 11:34
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748

|
Цитата(Bob176 @ Sep 18 2012, 15:05)  мне идея нужна... Ну, не хотите по существу, я тоже в абстракцию уйду  Идея проста - написание своих велосипедов без достаточно вдумчивого чтения манов чревато глюками и потерянным временем
|
|
|
|
|
Sep 18 2012, 12:20
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 23-01-09
Пользователь №: 43 870

|
Цитата(MBR @ Sep 18 2012, 15:34)  Ну, не хотите по существу, я тоже в абстракцию уйду  Идея проста - написание своих велосипедов без достаточно вдумчивого чтения манов чревато глюками и потерянным временем  уважаемый MBR вы считаете проблема в коде? в инициализации? в прерывании? в начале поста я выкладывал исходники.. особенно в них ничего не поменялось... данные принимаются верно, значит скорость задана правильно, на низкой частоте все работает корректно... что может привести к тому, что на высокой частоте передаётся ещё один байт мне пока не понятно ... , вот и интересуюсь, может кто уже сталкивался с такой проблемой... или натолкнёт идейкой на решение ..
|
|
|
|
|
Sep 18 2012, 12:56
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748

|
Цитата(Bob176 @ Sep 18 2012, 16:20)  в начале поста я выкладывал исходники.. особенно в них ничего не поменялось... Там была ссылка на нерабочий вариант. scifi, скорее всего, прав насчет полудуплекса. Правильная логика отправки должна быть следующая: разрешаем TXE, делаем отправку. После отправки последнего байта в обработчике запрещаем TXE, разрешаем TC. И только когда снова придем в обработчик TC - запрещаем TC и трансмиттер. Но Ваша лень сделать копипасту превращает это лишь в предположения. Я могу дать ссылку на мой рабочий исходник с полудуплексом для F2 - там разница лишь в установке baud rate, при передаче данных регистры те же.
|
|
|
|
|
Sep 18 2012, 16:44
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(Bob176 @ Sep 18 2012, 15:05)  оптопары скорострельные H11L1 Очень скорострельные Turn–On Time 1,2 (max 4) us Turn–Off Time 1,2 (max 4) us when RL = 270R If=1,2mA А теперь посчитаем грубо 1/115200=8,68us, что остается в остатке? Осциллограф и еще раз осциллограф.
|
|
|
|
|
Sep 19 2012, 11:12
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 23-01-09
Пользователь №: 43 870

|
Цитата(scifi @ Sep 18 2012, 16:44)  Есть идейка: потыкайте осциллографом вашу схему. К тому же вы упоминали про полудуплекс: вдруг при переключении режима приём-передача на линии образуется выброс? Ну и вообще полезно убедиться, что проблема не в железе, прежде чем нырять в софт. Да, scifi, хорошо бы посмотреть осциллографом, да у меня дома древний, аналоговый... сложно им что то увидеть, да и JTAGA на плате нет и отладчик Keilа этот проц не поддерживает ... вот и мучаюсь... про полудуплекс ... полудуплекс - подразумевает передачу данных и приём в разные моменты времени и раньше я думал, что что у меня именно такой случай, а оказалось нет ... полный дуплекс  . В данном случае полудуплекс получится при передаче и приёме по одному проводу и разделении во времени..., а я всёж использую 2 провода, хотя и преобразую потом в RS-485 да, в железе может быть проблема, полностью согласен.. надеюсь сегодня вечером доберусь до платы и продолжу эксперименты Цитата Очень скорострельные biggrin.gif DmitryM а Вы что применяете? ..... хотя, я думаю оптопары справляются, ведь данные не искажаются, а появляется ещё один байт ...
Сообщение отредактировал Bob176 - Sep 19 2012, 11:16
|
|
|
|
|
Sep 19 2012, 13:19
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(Bob176 @ Sep 19 2012, 15:12)  В данном случае полудуплекс получится при передаче и приёме по одному проводу и разделении во времени..., а я всёж использую 2 провода, хотя и преобразую потом в RS-485 А в RS485 у Вас сколько проводов? Вы ж управляете включением-выключением приемника/передатчика RS485, вот Вам и полудуплекс. Кстати, не забыли, что у многих приемопередатчиков RS485 выход приемника переходит в Z-состояние. Там хоть подтяжка есть? или болтается в воздухе? Цитата DmitryM а Вы что применяете? ..... хотя, я думаю оптопары справляются, ведь данные не искажаются, а появляется ещё один байт ... ADUM1201, например.
|
|
|
|
|
Sep 19 2012, 16:15
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 23-01-09
Пользователь №: 43 870

|
Цитата(DmitryM @ Sep 19 2012, 17:19)  А в RS485 у Вас сколько проводов? Вы ж управляете включением-выключением приемника/передатчика RS485, вот Вам и полудуплекс. DmitryM, я раньше тоже так думал, но в применении к данному случаю, полудуплекс - если и приём и передача ведутся по одному проводу Тх ! на выходе приемника подтяжка есть. ADUM1201 - уж больно дорогое решение
Сообщение отредактировал Bob176 - Sep 19 2012, 16:18
|
|
|
|
|
Sep 19 2012, 17:46
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 23-01-09
Пользователь №: 43 870

|
ну всё, разобрался! передавал один лишний байт, была ошибка в программе ... а прерывание всё честно отрабатывало теперь всё ок!!! DmitryM , scifi и всем спасибо !!!
Сообщение отредактировал Bob176 - Sep 19 2012, 18:20
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|