Форум РадиоКот https://radiokot.ru/forum/ |
|
USART AT Mega 8. https://radiokot.ru/forum/viewtopic.php?f=25&t=1748 |
Страница 1 из 3 |
Автор: | Дмитрий О [ Чт авг 31, 2006 19:24:23 ] |
Заголовок сообщения: | USART AT Mega 8. |
Смотрим статью Mamonth'a: Код: while (1) { UDR = 'a'; }; Все замечательно, но как передать целое слово? Например INIT? Потом. Допустим приняли слово. Проанализировали, и надо тоже слово отправить. Как? Скоро быренько слеплю модельку для этого дела, уже МАХ232 купил, т што буду екскрементировать ![]() |
Автор: | avr123.nm.ru [ Вт сен 05, 2006 17:19:46 ] |
Заголовок сообщения: | |
Есть подробное упражнение 5 по работе в USART - с примерами для начинающих forum.roboclub.ru/IPBoard/index.php?showtopic=264 |
Автор: | avr123.nm.ru [ Вт сен 05, 2006 17:34:03 ] |
Заголовок сообщения: | Re: статья про USART |
Дмитрий О писал(а): Скоро быренько слеплю модельку для этого дела, уже МАХ232 купил, т што буду екскрементировать
![]() Еще быстрей это делается в VMLAB или PROTEUS - примры идут в составе этих программ. только разбирайся да учись. |
Автор: | Mamonth [ Чт сен 07, 2006 06:48:49 ] |
Заголовок сообщения: | |
Хм... Резонно. Хороший вопрос. Сегодня проштудирую и дам ответ. Хотя сдается мне что надо смотреть в сторону символьных массивов. Но не уверен так что до вечера. ![]() |
Автор: | Mamonth [ Чт сен 07, 2006 06:50:21 ] |
Заголовок сообщения: | |
Стоп, вспомнил, есть такая штука printf (там даже есть форматированый вывод). Но! Надо подключать библиотеку, а размер программы увеличивается при этом "ни по детски" ![]() Цитата: UPD: и на прием scanf
|
Автор: | xelos [ Чт сен 07, 2006 09:31:39 ] |
Заголовок сообщения: | |
а ссылку на статью можно? |
Автор: | Mamonth [ Чт сен 07, 2006 14:04:09 ] |
Заголовок сообщения: | |
link |
Автор: | Дмитрий О [ Чт сен 07, 2006 15:39:57 ] |
Заголовок сообщения: | |
Отлично. Нашел то что надо. Резонный вопрос: где взять нормальный CVAVR? В нете поискал, скачал, в одном архиве ограничения на уарт и на размер файла, в другом пароль нужен. Разумеется, пароля нигде не нашел ![]() |
Автор: | Дмитрий О [ Чт сен 07, 2006 18:40:45 ] |
Заголовок сообщения: | |
Ну дык в нем и есть ограничения! Запрещает Rx Interrupt |
Автор: | Дмитрий О [ Вт сен 12, 2006 17:20:09 ] |
Заголовок сообщения: | |
Схемку накинул ![]() |
Автор: | Mamonth [ Ср сен 13, 2006 03:24:05 ] |
Заголовок сообщения: | |
Твой модем накрылся из-за наличия отсутствия гальванической развязки. ![]() Я сей девайс питал от отдельного блока питания и никаких проблем не было. |
Автор: | Дмитрий О [ Ср сен 13, 2006 15:22:05 ] |
Заголовок сообщения: | |
Меня интересует, можно ли питать девай с ножки RTS т. е. не произойдет ли замыкание через МАХ232? Микруху жалко ![]() |
Автор: | Mamonth [ Чт сен 14, 2006 03:30:51 ] |
Заголовок сообщения: | |
1. Мощности не хватит при постоянной работе, только на коротенькие моменты и то если поставишь кондер. 2. Работать будет в зависимости от фазы луны, вида контроллера материнской платы и длины проводов. 3. Про замыкание - вполне возможно... 4. Кроме того, на КОМ-ПОРТЕ амплитуда +/- 12 В ( а кое-где +/- 20), а после макса 0...+5 и инверсия в добавок. |
Автор: | Сэр Мурр [ Пт сен 15, 2006 07:52:12 ] |
Заголовок сообщения: | |
Дмитрий О писал(а): Меня интересует, можно ли питать девай с ножки RTS т. е. не произойдет ли замыкание через МАХ232? Микруху жалко
![]() На старых мат. платах такое возможно при токе потребления менее 10 ма. и уровнях сигнала +-12в. На современных могут быть уровни 0-+5в ,и номер не пройдёт. |
Автор: | Дмитрий О [ Пт сен 15, 2006 12:33:14 ] |
Заголовок сообщения: | |
Да какой там 5В... Я по ошибке к TX компа подключил светодиод... Палец обжокъ, светодиод спалил ![]() |
Автор: | Mamonth [ Пн сен 18, 2006 03:53:20 ] |
Заголовок сообщения: | |
Сэр Мурр писал(а): На современных могут быть уровни 0-+5в ,и номер не пройдёт.
Какой 0-+5?!?!? Там -12/+12, это стандарт! |
Автор: | Дмитрий О [ Пн сен 18, 2006 07:51:54 ] |
Заголовок сообщения: | |
Ой, еще вот такой вопрос. Есть код: Код: // USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void) { char status,data; status=UCSRA; data=UDR; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer[rx_wr_index]=data; if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE) { rx_counter=0; rx_buffer_overflow=1; }; }; } Я в Си не силен, и поэтому осмелюсь спосить, а куда нужно впихнуть код обработки прерывания? |
Автор: | Mamonth [ Ср сен 20, 2006 10:18:54 ] |
Заголовок сообщения: | |
Дмитрий О писал(а): Ой, еще вот такой вопрос. Есть код:
Код: rx_buffer_overflow=1; }; }; Вот здесь.... } Я в Си не силен, и поэтому осмелюсь спосить, а куда нужно впихнуть код обработки прерывания? Ес-но подразумеваем что тебе нужна обработка именно этого прерывания ![]() |
Автор: | Дмитрий О [ Ср сен 20, 2006 12:35:58 ] |
Заголовок сообщения: | |
Спасибо! |
Автор: | Spider [ Ср сен 20, 2006 14:42:09 ] |
Заголовок сообщения: | |
Ребят. Можно я вмешаюсь как типа Мудрый старец? Если пишем под WinAVR Код: #include <stdio>
static int uart_putchar(char c, FILE *stream); static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); static int uart_putchar(char c, FILE *stream) { if (c == '\n') uart_putchar('\r', stream); loop_until_bit_is_set(UCSRA, UDRE); UDR = c; return 0; } int main(void) { init_uart(); stdout = &mystdout; printf("Hello, world!\n"); return 0; } Но опять же не забываем про размер кода. Но иногда очень помогает. |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |