UART и AVR

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
                              Hi All !

С полгода назад пришлось разобраться с сабжем и все работало на ура. Hо вот
сейчас необходимо срочно дописать программу а я забыл как работает UART, а
времени почти нет(:()...
Есть такая ситуация:
Имеется мобильный телефон siemens подключенный к 90S2313 через UART.
Изначальная скорость обмена 57600. Есть входящий звонок: телефон выдает
переодически сигнал RING.
Вопрос: как с минимальными затратами (как можно проще) определить этот сигнал и
снять трубку? У меня есть предположение но весьма сомнительно что оно
максимально простое: я могу отловить пришедшую букву "R" на UART (прерывание на
приход байта). В этом же прерывании сделать паузу на прием остальных 4-х
символов+еще чуть-чуть и передать комманду сьема трубки. Обязательно ли
выдерживать паузу? Связь насколько я помню полудуплексная (как я понимаю, паузу
необходимо выдержать ибо телефон в это время передает и принять не будет или
контроллер просто передавать не будет). Выберите правильное утверждение, если
оно есть в предидущем предложении.

 ▌·▐·│▌·│··│                          Воскресенье, Октябрь 09 2005 23:04
 2·461▌32·23                        Всего хорошего. Alexander.


UART и AVR

Sun Oct 09 2005 22:04, Alexander Panasovsky wrote to All:

 AP> Имеется мобильный телефон siemens подключенный к 90S2313 через UART.
 AP> Изначальная скорость обмена 57600. Есть входящий звонок: телефон выдает
 AP> переодически сигнал RING.
 AP> Вопрос: как с минимальными затратами (как можно проще) определить этот
 AP> сигнал и снять трубку? У меня есть предположение но весьма сомнительно
 AP> что оно максимально простое: я могу отловить пришедшую букву "R" на UART
 AP> (прерывание на приход байта). В этом же прерывании сделать паузу на прием
 AP> остальных 4-х символов+еще чуть-чуть и передать комманду сьема трубки.


UART в AVR полнодуплексный. Т. е. параллельно с приемом можно что-нибудь
передавать. Нельзя (без принятия специальных мер), находясь в обработчике
прерывания от приемника, выполнить прерывание от передатчика.

С уважением, Денис


Re: UART и AVR
Пpивет, Alexander !
 AP> ..Есть такая ситуация: Имеется мобильный телефон siemens подключенный
 AP> к 90S2313 чеpез UART. Изначальная скоpость обмена 57600. Есть
 AP> входящий звонок: телефон выдает пеpеодически сигнал
 AP> RING. Вопpос: как с минимальными затpатами (как можно пpоще)
 AP> опpеделить этот сигнал и снять тpубку?

Hу пpоще складавать пpинятые байты в небольшей кольцевой буфеp,
и по пpиходу байта 0x0D или 0x0A,(пpактически пpовеpить что там последнее)
пpовеpить ответ от модема.
 AP> У меня есть пpедположение но весьмасомнительно что оно максимально
 AP> пpостое: я могу отловить пpишедшую букву "R" на UART (пpеpывание на
 AP> пpиход байта). В этом же пpеpывании сделать
 AP> паузу на пpием остальных 4-х символов+еще чуть-чуть и пеpедать
 AP> комманду сьема тpубки. Обязательно ли выдеpживать паузу?
Паузы, особенно в пpеpывании - зло. Так же учитывая что у 90s2313 не так
много лишней кодовой памяти, лучше без выкpутасов с паузами. С буфеpом и коpоче
и надежней.
 AP> Связь насколько я помню полудуплексная (как я понимаю, паузу
 AP> необходимо выдеpжать ибо телефон в это вpемя пеpедает и пpинять не
 AP> будет или контpоллеp пpосто пеpедавать не будет).
После пеpедачи в конче ответа 0x0D,0x0A, пулудуплексный модем должен быть готов
к пpиему.

Anatoly.


Site Timeline