Очень хотелось бы разобраться с этим УАПП. Как я понимаю, это простая аппаратная реализация посл.интерфейса (как на МК51?)...
1? чтобы гонять по нему различные протоколы (напр. RS232,485) нужна только программная часть??? или это уже готовый RS-232 ?
2? Можно ли по этому UART протащить 1wire? и как? у него же RXDиTXD в одном флаконе (проводе)...
3? кто-нить применял это чудо для своих поделок? Интересно, насколько это эффективно, поскольку мне кажется это можно и на 2-х пинах порта организовать (разве что скорость здесь можно выставить точно)....
А не работает, потому что нет контакта, где он должен быть, ИЛИ есть контакт, где его быть не должно!
Это есть аппаратный RS-232. 1-wire не получится. Но! В мегах (ATMEGA какие-то) есть и аппаратный 1-ваир.
Воть. Ноги RXD и TXD соединяем с соответствующими выводами COM-порта - и радуемся
Возьми библиотечку и пример для начала, в том же WinAVR есть, скомпилируй и попробуй. Там если с бибиотекой вообще все просто. Инициализация и потом прмо текстом шлешь.
Помогите пожалуйста разобраться с подключением Меги к ПК с взаимодействием через терминальную программу. Как настроить УАПП и по какому протоколу взаимодействовать? А вот если бы это ещё было в стиле Ваших уроков было бы просто супер.
#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к, иначе когда будут "паузы" во время передачи, рискуем получить мусор. Я долго бился с этим
Большое спасибо за консультацию. Придётся видимо изучать си, т.к. я в них в полных нулях и пока не разобрался со всякими войдами и т.п. Пробовал мучать WinAVR но знаний не хватает. Изучал в универе турбопаскаль и это всё. Мах у меня есть, попробуем.
тов Spider 300 эт Ом см. выше. У меня вот хрень какая написал на С++, програмулину на модем как надо шлёт(звонил ч/з ATDxxxx),а вот на контроллер мусор приходит.
Настоящий кот всегда либо голоден,
либо невыспался ...
У модема AUTO DETECT скорости порта. т.е. если ты ему туда 9600 и он тебе в ответ 9600. Но это только в теории. А ещё у него коррекция ошибок и прочее. Я бы глянул осцилографом что там происходит...
А как иначе? Без них вообче бы не работало. них...на???
Кстати к СОМу когда подключае какой режим использовать синхр. или асинхр. если синхр. то ч.з. T или R MAX232 подглючать синхронизирующий сигнал(т.е. контроллер или комп выдаёт тактовый).
Настоящий кот всегда либо голоден,
либо невыспался ...