|
USART на mega32, пердает нормально, а принимать не хочет |
|
|
|
Aug 5 2008, 07:16
|

Частый гость
 
Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613

|
Собственно, сабж. Инициализировал USART. сигнал с контроллера передается номально. По компорту ловлю на компьютере. А вот если с компьютера передавать - нет реакции. Вот кусок кода моей программы Код UBRRH = 0; UBRRL = 103; // Скорость обмена USART 9600 бод UCSRB = 0x18; /* Устанавливаем разряды TXEN и RXEN для активизации USART в режиме ввода/вывода через выводы 0 и 1 порта D */ UCSRC = 0x03; // Разряды UCSZx установлены для передачи 8 бит данных while (1) {
if(UCSRA & 0x80) { USARTBuffer = UDR; PORTB = USARTBuffer & 0xE0; PORTD = (USARTBuffer << 3) & 0xE0; } } просто пытаюсь поморгать светодиодами в зависимости от пришедших данных. ноль реакции. где может быть ошибка? использую WinAVR зы. видел тут в одной из соседних тем советовали указать при инициализации порта RxD выходом. делал. не помогло.
--------------------
!!! All you need is LOVE !!!
|
|
|
|
|
 |
Ответов
|
Aug 5 2008, 09:11
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(=GM= @ Aug 5 2008, 17:44)  Покажите, как у вас настроены порты B и D? Может быть они настроены на ввод? Настройка портов не влияет на функциональность UART. В архиве приложил свою библиотечку. 100% рабочая! Код не комментирован. С помощью макросов есть возможность выбрать работу с программным FIFO буфером, прерываниями, а также выбрать платформу - AVR или ARM (не до конца портирован). Код работы с UART содержится в архиве serial.zip, код буфера - в fifobuf.zip
--------------------
Выбор.
|
|
|
|
|
Aug 5 2008, 09:13
|

Чайник, 1 литр
   
Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168

|
Цитата(haker_fox @ Aug 5 2008, 13:07)  Настройка портов не влияет на функциональность UART. А на этих портах предположительно светодиоды висят, речь не об USART.. -- В UCSRC пишете не правильно вроде, надо бы URSEL ставить в 1.
|
|
|
|
|
Aug 5 2008, 09:40
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(SysRq @ Aug 5 2008, 18:13)  В UCSRC пишете не правильно вроде, надо бы URSEL ставить в 1. Как я верно понял, это Вы не мне?) Цитата(smac @ Aug 5 2008, 16:34)  Лучше инициализировать не числами (хотя может быть это компилятор виноват, не силен я в С) а записями типа UCSRB = (1<<RXEN)|(1<<TXEN), В этом случае упрощается поиск ошибки. +1!
--------------------
Выбор.
|
|
|
|
Сообщений в этой теме
Freeze Anti USART на mega32 Aug 5 2008, 07:16 Палыч По-моему:
UCSRC = 0x06; // Разряды UCSZx установле... Aug 5 2008, 07:26 smac Цитата(Freeze Anti @ Aug 5 2008, 11:16) С... Aug 5 2008, 07:34 Палыч Хотя у Вас и ошибка инициализации USART, но МК дол... Aug 5 2008, 07:46 Freeze Anti Ошибку в инициализации уже исправил. Не помогает.
... Aug 5 2008, 07:59 sysel Попробуйте исключить компьютер из ваших эксперимен... Aug 5 2008, 08:05 Палыч Цитата(Freeze Anti @ Aug 5 2008, 10:59) Н... Aug 5 2008, 08:18 sKWO Цитата(Freeze Anti @ Aug 5 2008, 10:59) Н... Aug 5 2008, 08:28 UniBomb Freeze Anti, во-первых регистры UBRR и UCSRС наход... Aug 5 2008, 09:14 Зайцев Иван я делал на меге32 8МГц
Код#include "bn-185_us... Aug 5 2008, 09:19 Freeze Anti спасибо за подсказку про URSEL. сейчас попробую.
... Aug 5 2008, 09:41 haker_fox Цитата(Freeze Anti @ Aug 5 2008, 18:41) с... Aug 5 2008, 09:47 VladimirYU Цитата(Freeze Anti @ Aug 5 2008, 11:16) С... Aug 5 2008, 11:23 Freeze Anti Всем огромное спасибо за ответы. Рядом с max232 бы... Aug 5 2008, 11:38
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|