реклама на сайте
подробности

 
 
> USART на mega32, пердает нормально, а принимать не хочет
Freeze Anti
сообщение Aug 5 2008, 07:16
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 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 !!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
VladimirYU
сообщение Aug 5 2008, 11:23
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(Freeze Anti @ Aug 5 2008, 11:16) *
Собственно, сабж.

Инициализировал USART. сигнал с контроллера передается номально. По компорту ловлю на компьютере. А вот если с компьютера передавать - нет реакции. Вот кусок кода моей программы

[code]
UBRRH = 0;
UBRRL = 103; // Скорость обмена USART 9600 бод
UCSRB = 0x18; /* Устанавливаем разряды TXEN и RXEN для
активизации USART в режиме ввода/вывода через
выводы 0 и 1 порта D */
UCSRC = 0x03; // Разряды UCSZx установлены для передачи 8 бит данных


ИМХО в меге 32 регистры UCSRC и UBRRH имеют один и тот же адрес в области I/O, для доступа к UCSRC надо установить в 1 старший бит URSEL. В вашем случае:
UCSRC = (0x03|(1<<URSEL));
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - =GM=   Цитата(Freeze Anti @ Aug 5 2008, 06:16) П...   Aug 5 2008, 08:44
|- - haker_fox   Цитата(=GM= @ Aug 5 2008, 17:44) Покажите...   Aug 5 2008, 09:11
|- - SysRq   Цитата(haker_fox @ Aug 5 2008, 13:07) Нас...   Aug 5 2008, 09:13
|- - haker_fox   Цитата(SysRq @ Aug 5 2008, 18:13) В UCSRC...   Aug 5 2008, 09:40
- - 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
- - Freeze Anti   Всем огромное спасибо за ответы. Рядом с max232 бы...   Aug 5 2008, 11:38


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016