Показано с 1 по 5 из 5

Тема: USART в mega16

  1. #1
    Без позывного
    Регистрация
    22.03.2010
    Возраст
    41
    Сообщений
    5
    Поблагодарили
    0
    Поблагодарил
    0

    USART в mega16

    Привет всем!
    Немогу понять, что делать с регистрами UBRRL и UBRRH. Процессор
    AtMega16L-8PU, кварц на 7.3728 МГц. Требуется следующее: с компьютера передать байт по RS-232 в коде 8-N-1 на частоте 9600 бит/сек в микроконтроллер так, чтобы он появился в регистре UBR.
    Какие вообще нужно установить флаги в регистрах управления USART?
    Заранее большое спасибо!


  2. #2
    Standart Power Аватар для UA1ARN
    Регистрация
    14.02.2005
    Адрес
    Санкт-Петербург
    Возраст
    60
    Сообщений
    482
    Поблагодарили
    35
    Поблагодарил
    11
    Код:
    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud rate: 9600
    UCSRA=0x00;
    UCSRB=0x18;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x2F;

  3. #3
    Без позывного
    Регистрация
    22.03.2010
    Возраст
    41
    Сообщений
    5
    Поблагодарили
    0
    Поблагодарил
    0
    Спасибо за ответ, но вот что получается: в регистре UCSRA bit UDRE
    всегда установлен, даже тогда, когда пишеш в него 0х00. Далее, в
    регистр UCSRC ничего не пишется, хотя всё как обычно:

    ldi r16, $86
    out ucsrc, r16

    на моей отладочной плате подключён эмулятор AVR Dragon по JTAG и в
    окне регистров USART это хорошо видно (в пошаговом режиме программа
    просто " пролетает мимо " и в регистре UCSRC остаются нули ). Разумеется ничего не работает. Что это может быть?

  4. #4
    Standart Power Аватар для UA1ARN
    Регистрация
    14.02.2005
    Адрес
    Санкт-Петербург
    Возраст
    60
    Сообщений
    482
    Поблагодарили
    35
    Поблагодарил
    11
    Цитата Сообщение от robotex Посмотреть сообщение
    моей отладочной плате подключён эмулятор AVR Dragon по JTAG и в
    окне регистров USART это хорошо видно (в пошаговом режиме программа
    просто " пролетает мимо " и в регистре UCSRC остаются нули ). Разумеется ничего не работает. Что это может быть?
    Страницу 153 даташита на процессор посмотрите - там про то, как читать из UCSRC. Только зачем оно? Вы не уверены в том, что ассемблер транслирует правильно?
    Бит UDRE - это состояние. Ничего туда писать не надо. В даташите этот бит вообще как read-only помечен (страница 154).

    Вот кусочек работающей программы (от атмеги 32) - передача по поросу.

    Код:
    /* передача символа если готов порт */
    uint_least8_t hardware_putchar(uint_fast8_t c)
    {
    
    #if defined(CPUSTYLE_SAM7S)
    
    	if ((AT91C_BASE_US1->US_CSR & AT91C_US_TXRDY) == 0)
    		return 0;
    	AT91C_BASE_US1->US_THR = c;
    
    #elif defined (CPUSTYLE_ATMEGA128)
    
    	if ((UCSR0A & (1 << UDRE0)) == 0)
    		return 0;
    	UDR0 = c;
    
    #elif defined (CPUSTYLE_ATMEGA32)
    	if ((UCSRA & (1 << UDRE)) == 0)
    		return 0;
    	UDR = c;
    
    #else
    #error Undefined CPUSTYLE_XXX
    #endif
    	return 1;
    }
    #endif
    
    int dbg_putchar(int c)
    {
    
    	if (c == '\n')
    		dbg_putchar('\r');
    
    	while (hardware_putchar(c) == 0)
    		;
    	return c;
    }

  5. #5
    Без позывного
    Регистрация
    22.03.2010
    Возраст
    41
    Сообщений
    5
    Поблагодарили
    0
    Поблагодарил
    0
    Дошло наконец...Работает. Большое спасибо за помощь!

Похожие темы

  1. mega16 - дуб или ?
    от SERG в разделе Микропроцессорная техника
    Ответов: 5
    Последнее сообщение: 16.04.2007, 14:06

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Похоже, что вы используете блокировщик рекламы :(
Форум QRZ.RU существует только за счет рекламы, поэтому мы были бы Вам благодарны если Вы внесете сайт в список исключений!
как отключить
×
Рейтинг@Mail.ru
eXTReMe Tracker


Похоже, что вы используете блокировщик рекламы :(
Форум QRZ.RU существует только за счет рекламы, поэтому мы были бы Вам благодарны если Вы внесете сайт в список исключений!
как отключить
×