UART
- sich
- Открыл глаза
- Сообщения: 55
- Зарегистрирован: Чт ноя 24, 2005 02:33:45
- Откуда: г.Тольятти
- Контактная информация:
UART
Очень хотелось бы разобраться с этим УАПП. Как я понимаю, это простая аппаратная реализация посл.интерфейса (как на МК51?)...
1? чтобы гонять по нему различные протоколы (напр. RS232,485) нужна только программная часть??? или это уже готовый RS-232 ?
2? Можно ли по этому UART протащить 1wire? и как? у него же RXDиTXD в одном флаконе (проводе)...
3? кто-нить применял это чудо для своих поделок? Интересно, насколько это эффективно, поскольку мне кажется это можно и на 2-х пинах порта организовать (разве что скорость здесь можно выставить точно)....
1? чтобы гонять по нему различные протоколы (напр. RS232,485) нужна только программная часть??? или это уже готовый RS-232 ?
2? Можно ли по этому UART протащить 1wire? и как? у него же RXDиTXD в одном флаконе (проводе)...
3? кто-нить применял это чудо для своих поделок? Интересно, насколько это эффективно, поскольку мне кажется это можно и на 2-х пинах порта организовать (разве что скорость здесь можно выставить точно)....
А не работает, потому что нет контакта, где он должен быть, ИЛИ есть контакт, где его быть не должно!
-
Oleg
- Spider
- Опытный кот
- Сообщения: 732
- Зарегистрирован: Чт дек 29, 2005 07:29:25
- Откуда: Омск
- Контактная информация:
Поспешил я однако с "нефиг делать".
Короче про UART. На асме я не силён, а вот на с++ помогу. Перевести в асп не составит я думю труда.
вот тот минимум, что даст работу в синхронном режиме.
Теперь чтобы это почуствовать, так с сказать, в деледе на м нужен компьютер типа PC и MAX232 (или любой другой 232 преобразователь уровней) хотя грят работает и без МАХ232, но рисковать я не стал. Даташитов на МАХ232 полно, и как его подключить я думаю сообразишь.
На компе запускаем любую терминалку, в виндах это Hyper Terminal выбираешь COM порт, к которому ты это подключил, у меня это COM3, и жмёшь кнопоку Дополнительно, там выставляешь скорость порта, в нашем случае это 38400 и 8 бит с 1 стоповым, проверку на ошибки выставь в none (отключи). Всё. Жмём Ок и начинам судорожно долбить по клаве
Должны получать то что нажимаем обратно. Хочу заметить, если оторвать от порта устройство, и продолжить долбить по клаве, ничего появляться не должно.
Ах да! Практика показла, что RX и TX ноги микрухи было бы не плохо подтянуть к земле резистором от 300 до 1к, иначе когда будут "паузы" во время передачи, рискуем получить мусор. Я долго бился с этим
Короче про 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
Большое спасибо за консультацию. Придётся видимо изучать си, т.к. я в них в полных нулях и пока не разобрался со всякими войдами и т.п. Пробовал мучать WinAVR но знаний не хватает. Изучал в универе турбопаскаль и это всё. Мах у меня есть, попробуем.
- moLCHec
- Мявтор!
- Сообщения: 825
- Зарегистрирован: Вс дек 18, 2005 20:04:42
- Откуда: Свердловская обл.
- Контактная информация:
осцил у меня есть токма обычный С1-94. Прокатит???? И это резюк то на сколько всё таки. Я на 300 Ом поставил.
Пробовал Гипером та же хрень символы причём почти все одни и теже почти, не зависимо от посылаемой инфы.
Пробовал Гипером та же хрень символы причём почти все одни и теже почти, не зависимо от посылаемой инфы.
- Вложения
-
- usart.rar
- прошивка на Си под М16(10 МГц) + сама прога
- (8.36 КБ) 685 скачиваний
Настоящий кот всегда либо голоден,
либо невыспался ...
либо невыспался ...