Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программный UART. Чем ловить старт бит ?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Goofy
Контроллер Mega8, нужет 2й UART
Везде где приходилось встречать упоминание о софтовом УАРТе, старт бит ловят компаратором.
Может потому что этот переферийный модуль более распостранён?
Мне бы удобнее было ловить от внешнего прерывания: INT0, INT1.
В чём я при этом буду неправ ?
Aner
програмно второй UART ( нормальный не получить) это с ограничениями, компромисами и всеравно криво.
у нас норально не получилось, по понятным причинам. Пришлось перейти на 162_ой.
Goofy
Цитата(Aner @ Oct 2 2009, 13:35) *
програмно второй UART ( нормальный не получить) это с ограничениями, компромисами и всеравно криво.
у нас норально не получилось, по понятным причинам. Пришлось перейти на 162_ой.


А полноценный не нужно. Нужно медленно писать, редко и медленно читать
Dog Pawlowa
Цитата(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.
rx3apf
Цитата(Goofy @ Oct 2 2009, 09:29) *
Контроллер Mega8, нужет 2й UART
Везде где приходилось встречать упоминание о софтовом УАРТе, старт бит ловят компаратором.

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

Если скорость не очень большая, то почему бы и нет. Я предпочитаю использовать ICP, а семплер по компаратору таймера. Фронт старт-бита ловится точно, а вот семплер будет гулять в зависимости от времени входа в прерывание (а если старт-бит ловить по INT, то и здесь будет гулять, что явно не на пользу надежности, даже если крутится цикл без прерываний и cli). В случае ICP на полтора бита можно при необходимости прикрыть прерывания...
_Pasha
До 19200 бод софтовый уарт не представляет сложностей, и уж тем более криво слепить его - это надо очень постараться. Старт-бит ловится интом, для приема можно использовать любое свободное прерывание таймера. Если же нужен дуплекс- тут конечно посложнее, надо еще одно прерывание от таймера и сделать так, чтобы оно было с наивысшим приоритетом.
Petka
Цитата(Goofy @ Oct 2 2009, 09:29) *
Контроллер Mega8, нужет 2й UART
Везде где приходилось встречать упоминание о софтовом УАРТе, старт бит ловят компаратором.
Может потому что этот переферийный модуль более распостранён?
Мне бы удобнее было ловить от внешнего прерывания: INT0, INT1.
В чём я при этом буду неправ ?


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

С передачей как раз намного проше. Делал для отладки передачу на выводе с output compare. Точность понятное дело отличная. Прием был не актуален, так что не писал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.