Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/24: Рейтинг темы: голосов - 24, средняя оценка - 4.54
Mymtoud
0 / 0 / 0
Регистрация: 02.05.2016
Сообщений: 7
1

Программный UART

02.09.2016, 23:27. Просмотров 4791. Ответов 3
Метки нет (Все метки)

Здравствуйте!

Из-за отсутствия второго аппаратного UARTa мне нужно реализовать его программным образом.
Настроил ножку приема информации ("Rx") как вход + прерывание по спадающему фронту, в котором запускаю таймер и отключаю это прерывание. Таймер работает на частоте 9600 и у него настроено прерывание на половину периода, в котором я читаю состояние ноги "Rx" 10 раз ( 1 старт, 8 данные, 1 стоп ). По окончании приема ( после 10го прерывания ) я отключаю таймер и разрешаю прерывание на "Rx".

Прием первого байта работает корректно, а все последующие принимаются со смещением в один бит ( как 2 старт бита )

https://snag.gy/8uj27g.jpg- отправил 0x01, принял корректно.
https://snag.gy/jSkibn.jpg - отправил 0x01 снова - считал 2 старт бита?. Стоп бит запишется в 11ю...
И так со всеми последующими данными. Костыль городить не хочу. Помогите разобраться

http://pastebin.com/QVsc3RWY

Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2016, 23:27
Ответы с готовыми решениями:

Программный UART на STM8S003
Доброго времени суток. Требуется сделать программную реализацию UART для МК STM8S003F3, т.к....

Программный UART для 8051, на С
Доброго времени суток. В общем и целом задача такова, есть программа на компе формирующая посылки...

ST-Link/2 & UART
На дискавирине 429ой UART 429го соединён с стлинком. Знает кто, как до него достучаться? upd....

передача по UARt
Доброго времени суток. Хочу передавать по юарту показания с таймера, написал программу, а выдает...

UART dsPIC
Всем привет! Есть проблема с PIC void __attribute__((__interrupt__, no_auto_psv))...

3
НИПИЛН
0 / 0 / 0
Регистрация: 13.05.2016
Сообщений: 12
03.09.2016, 00:31 2
После приема посылки перед разрешением прерывания на Rx флаг возникновения прерывания сбрасываете?
0
Mymtoud
0 / 0 / 0
Регистрация: 02.05.2016
Сообщений: 7
03.09.2016, 19:03 3
Цитата Сообщение от НИПИЛН
После приема посылки перед разрешением прерывания на Rx флаг возникновения прерывания сбрасываете?
144 Строчка кода: http://pastebin.com/QVsc3RWY

Код
        HAL_GPIO_EXTI_IRQHomdler(GPIO_PIN_10); //???? Без этого сразу же срабатывает EXTI15_10_IRQHomdler
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); // Мы можем начинать новый прием
0
Mymtoud
0 / 0 / 0
Регистрация: 02.05.2016
Сообщений: 7
03.09.2016, 21:32 4
Проблема скрывалась в флаге прерывания таймера. Добавил __HAL_TIM_CLEAR_IT(&htim1, TIM_IT_CC1); перед разрешением прерывания
0
03.09.2016, 21:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2016, 21:32

Не работает UART
Добрый день, У меня не получается запустить uart на модуле stm32 (для pinboard) имеется 2...

STM32F407 и UART
Всем доброго дня. Использую 6 UART-ов для опроса приборов на скорости 921600 с периодом 100мс....

LPC2468 + UART
Недавно начал изучать ARM. На первый раз решил сделать UART. В целом что-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru