Страница 1 из 4
UART
Добавлено: Ср дек 28, 2005 11:27:03
sich
Очень хотелось бы разобраться с этим УАПП. Как я понимаю, это простая аппаратная реализация посл.интерфейса (как на МК51?)...
1? чтобы гонять по нему различные протоколы (напр. RS232,485) нужна только программная часть??? или это уже готовый RS-232 ?
2? Можно ли по этому UART протащить 1wire? и как? у него же RXDиTXD в одном флаконе (проводе)...
3? кто-нить применял это чудо для своих поделок? Интересно, насколько это эффективно, поскольку мне кажется это можно и на 2-х пинах порта организовать (разве что скорость здесь можно выставить точно)....
Добавлено: Ср дек 28, 2005 15:06:15
Serega
Это есть аппаратный RS-232. 1-wire не получится. Но! В мегах (ATMEGA какие-то) есть и аппаратный 1-ваир.
Воть. Ноги RXD и TXD соединяем с соответствующими выводами COM-порта - и радуемся

Добавлено: Чт янв 12, 2006 01:02:11
Alexey_B
Это в каких таких ATmega есть поддержка 1-wire на аппаратном уровне, искал по этой серии, не нашел
Добавлено: Чт янв 12, 2006 01:09:33
Serega
М-да?
Ну значит я чет напутал.
Ладно, извиняюсь за дезинформацию

Добавлено: Чт янв 12, 2006 01:43:55
sich
а где реально этот УАПП использовать? для связи с компом? а как туда данные запихивать/принимать?
Добавлено: Чт янв 12, 2006 01:49:16
Serega
Куда запихивать?
В контроллере - пишем программулину, которая выводит данные по UART или принимает. Подключаем к КОМ-порту компа.
На компе - с помощью терминальной проги. Например, стандартного виндозного гипертерминала. Или пишем свою прогу.
Добавлено: Пт янв 13, 2006 21:31:06
Spider
Serega писал(а):Это есть аппаратный RS-232. 1-wire не получится. Но! Воть. Ноги RXD и TXD соединяем с соответствующими выводами COM-порта - и радуемся

А разве преобразование уровней не надо? напрмиер MAX2323?
Добавлено: Пт янв 13, 2006 21:37:44
Serega
Желательно но не обязательно.

Добавлено: Пн янв 16, 2006 08:08:59
Mamonth
Возьми библиотечку и пример для начала, в том же WinAVR есть, скомпилируй и попробуй. Там если с бибиотекой вообще все просто. Инициализация и потом прмо текстом шлешь.

Добавлено: Пн фев 27, 2006 17:40:23
Oleg
Помогите пожалуйста разобраться с подключением Меги к ПК с взаимодействием через терминальную программу. Как настроить УАПП и по какому протоколу взаимодействовать? А вот если бы это ещё было в стиле Ваших уроков

было бы просто супер.
Добавлено: Пн фев 27, 2006 18:17:22
Spider
тогда потерпи, завтра всё равно делать нефиг - напишу
тока вот... Серёга!!! Где моя статья? Завтра будет ещё одна!!!
Добавлено: Ср мар 01, 2006 06:04:36
Spider
Поспешил я однако с "нефиг делать".
Короче про UART. На асме я не силён, а вот на с++ помогу. Перевести в асп не составит я думю труда.
Код: Выделить всё
#include <avr/io.h>
#define F_OSC 16000000 /* oscillator-frequency in Hz */
#define UART_BAUD_RATE 38400
#define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_OSC)/((UART_BAUD_RATE)*16l)-1)
void usart_putc(unsigned char c) {
// ждм пока UDR не будет готов к передаче, возможно с прошлой операции он ещё не подготовился
loop_until_bit_is_set(UCSRA,UDRE);
UDR = c; // отправляем символ в UART
}
int main(void) {
// устанавливаем скорость порта
UBRRH = (uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_OSC)>>8);
UBRRL = (uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_OSC);
// Разрешить Приём и передачу данных черех UART
UCSRB = (1 << RXEN) | (1 << TXEN) ;
//ассинхронный 8N1
UCSRC = (1 << URSEL) | (3 << UCSZ0);
while (1) {
// ждм пока UDR не будет готов к приёму, точнее ждём когда он просигнализирует, что в UDR лежит свежепринятый байт
loop_until_bit_is_set(UCSRA, RXC);
ch = UDR;
//ch содержит байт приянтый с UART.
usart_putc(ch); //плюнет в UART обратно что поймал, ECHO так сказать.
}
return 0;
}
вот тот минимум, что даст работу в синхронном режиме.
Теперь чтобы это почуствовать, так с сказать, в деледе на м нужен компьютер типа PC и MAX232 (или любой другой 232 преобразователь уровней) хотя грят работает и без МАХ232, но рисковать я не стал. Даташитов на МАХ232 полно, и как его подключить я думаю сообразишь.
На компе запускаем любую терминалку, в виндах это Hyper Terminal выбираешь COM порт, к которому ты это подключил, у меня это COM3, и жмёшь кнопоку Дополнительно, там выставляешь скорость порта, в нашем случае это 38400 и 8 бит с 1 стоповым, проверку на ошибки выставь в none (отключи). Всё. Жмём Ок и начинам судорожно долбить по клаве

Должны получать то что нажимаем обратно. Хочу заметить, если оторвать от порта устройство, и продолжить долбить по клаве, ничего появляться не должно.
Ах да! Практика показла, что RX и TX ноги микрухи было бы не плохо подтянуть к земле резистором от 300 до 1к, иначе когда будут "паузы" во время передачи, рискуем получить мусор. Я долго бился с этим

Uart
Добавлено: Ср мар 01, 2006 09:29:25
Oleg
Большое спасибо за консультацию. Придётся видимо изучать си, т.к. я в них в полных нулях и пока не разобрался со всякими войдами и т.п. Пробовал мучать WinAVR но знаний не хватает. Изучал в универе турбопаскаль и это всё. Мах у меня есть, попробуем.
Добавлено: Ср мар 01, 2006 11:13:35
Spider
в даташите есть это же но на асме. в смысле берёшь строку что я написал и смотришь её аналок в даташите

Если уж так всё плохо.
Добавлено: Ср мар 01, 2006 12:48:14
Mamonth
Alexey_B писал(а):Это в каких таких ATmega есть поддержка 1-wire на аппаратном уровне, искал по этой серии, не нашел
На аппаратном нету, а вот в CodeVision есть программная реализация...
Добавлено: Пн апр 24, 2006 19:38:39
moLCHec
тов Spider 300 эт Ом см. выше. У меня вот хрень какая написал на С++, програмулину на модем как надо шлёт(звонил ч/з ATDxxxx),а вот на контроллер мусор приходит.
Добавлено: Пн апр 24, 2006 19:49:03
Spider
У модема AUTO DETECT скорости порта. т.е. если ты ему туда 9600 и он тебе в ответ 9600. Но это только в теории. А ещё у него коррекция ошибок и прочее. Я бы глянул осцилографом что там происходит...
Добавлено: Вт апр 25, 2006 18:11:27
moLCHec
осцил у меня есть токма обычный С1-94. Прокатит???? И это резюк то на сколько всё таки. Я на 300 Ом поставил.
Пробовал Гипером та же хрень символы причём почти все одни и теже почти, не зависимо от посылаемой инфы.
Добавлено: Вт апр 25, 2006 18:22:20
Mamonth
Ты фузы контроллеру выставил на работу с внешним кварцем?
Добавлено: Ср апр 26, 2006 18:45:37
moLCHec
А как иначе? Без них вообче бы не работало. них...на???
Кстати к СОМу когда подключае какой режим использовать синхр. или асинхр. если синхр. то ч.з. T или R MAX232 подглючать синхронизирующий сигнал(т.е. контроллер или комп выдаёт тактовый).