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

 
 
 
Reply to this topicStart new topic
> Программный UART. Чем ловить старт бит ?
Goofy
сообщение Oct 2 2009, 05:29
Сообщение #1


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

Группа: Свой
Сообщений: 169
Регистрация: 17-09-07
Из: Красноярск
Пользователь №: 30 600



Контроллер Mega8, нужет 2й UART
Везде где приходилось встречать упоминание о софтовом УАРТе, старт бит ловят компаратором.
Может потому что этот переферийный модуль более распостранён?
Мне бы удобнее было ловить от внешнего прерывания: INT0, INT1.
В чём я при этом буду неправ ?
Go to the top of the page
 
+Quote Post
Aner
сообщение Oct 2 2009, 05:35
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



програмно второй UART ( нормальный не получить) это с ограничениями, компромисами и всеравно криво.
у нас норально не получилось, по понятным причинам. Пришлось перейти на 162_ой.
Go to the top of the page
 
+Quote Post
Goofy
сообщение Oct 2 2009, 06:17
Сообщение #3


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

Группа: Свой
Сообщений: 169
Регистрация: 17-09-07
Из: Красноярск
Пользователь №: 30 600



Цитата(Aner @ Oct 2 2009, 13:35) *
програмно второй UART ( нормальный не получить) это с ограничениями, компромисами и всеравно криво.
у нас норально не получилось, по понятным причинам. Пришлось перейти на 162_ой.


А полноценный не нужно. Нужно медленно писать, редко и медленно читать
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Oct 2 2009, 06:25
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Goofy @ Oct 2 2009, 08:29) *
Везде где приходилось встречать упоминание о софтовом УАРТе, старт бит ловят компаратором.

Мало искали.
//* EXT_INT0 - External Interrupt Routine 0
//* This routine is executed when a negative edge on the incoming serial
//* signal is detected. It disables further external interrupts and enables
//* timer interrupts (bit-timer) because the UART must now receive the
//* incoming data.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Oct 2 2009, 07:36
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Goofy @ Oct 2 2009, 09:29) *
Контроллер Mega8, нужет 2й UART
Везде где приходилось встречать упоминание о софтовом УАРТе, старт бит ловят компаратором.

Аналоговым компаратором ? А нахрена ? Или речь о компараторах таймера ?
Цитата
Может потому что этот переферийный модуль более распостранён?
Мне бы удобнее было ловить от внешнего прерывания: INT0, INT1.
В чём я при этом буду неправ ?

Если скорость не очень большая, то почему бы и нет. Я предпочитаю использовать ICP, а семплер по компаратору таймера. Фронт старт-бита ловится точно, а вот семплер будет гулять в зависимости от времени входа в прерывание (а если старт-бит ловить по INT, то и здесь будет гулять, что явно не на пользу надежности, даже если крутится цикл без прерываний и cli). В случае ICP на полтора бита можно при необходимости прикрыть прерывания...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Oct 2 2009, 07:44
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



До 19200 бод софтовый уарт не представляет сложностей, и уж тем более криво слепить его - это надо очень постараться. Старт-бит ловится интом, для приема можно использовать любое свободное прерывание таймера. Если же нужен дуплекс- тут конечно посложнее, надо еще одно прерывание от таймера и сделать так, чтобы оно было с наивысшим приоритетом.
Go to the top of the page
 
+Quote Post
Petka
сообщение Oct 2 2009, 08:45
Сообщение #7


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

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Goofy @ Oct 2 2009, 09:29) *
Контроллер Mega8, нужет 2й UART
Везде где приходилось встречать упоминание о софтовом УАРТе, старт бит ловят компаратором.
Может потому что этот переферийный модуль более распостранён?
Мне бы удобнее было ловить от внешнего прерывания: INT0, INT1.
В чём я при этом буду неправ ?


Делал на внешних прерываниях. Работает надёжно до 57600 включительно без какого-либо использования АСМа. Можно было и 115200, но надо было всё вылизывать. 9600 сделаете вообще легко.
Go to the top of the page
 
+Quote Post
Laptop
сообщение Oct 3 2009, 08:46
Сообщение #8


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

Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103



Цитата(_Pasha @ Oct 2 2009, 11:44) *
До 19200 бод софтовый уарт не представляет сложностей, и уж тем более криво слепить его - это надо очень постараться. Старт-бит ловится интом, для приема можно использовать любое свободное прерывание таймера. Если же нужен дуплекс- тут конечно посложнее, надо еще одно прерывание от таймера и сделать так, чтобы оно было с наивысшим приоритетом.

С передачей как раз намного проше. Делал для отладки передачу на выводе с output compare. Точность понятное дело отличная. Прием был не актуален, так что не писал.
Go to the top of the page
 
+Quote Post

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

 


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


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