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

 
 
> Какие есть особенности инициализации UART2 и UART3 в atmega2560?
Oleg_IT
сообщение Feb 23 2011, 20:49
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



UART0, UART1 работают, а у второго и третьего каналов прерывания не идут. Инициализирую UART-ы одинаково, только номера меняю. Пример для UART0

volatile unsigned char FlagTx_0 = 1;
volatile unsigned char FlagTx_1 = 1;
volatile unsigned char FlagTx_2 = 1;
volatile unsigned char FlagTx_3 = 1;
volatile char Buff[10];
void StartTX_0(void)
{
FlagTx_0 = 0;

UCSR0C |= ((1 << UCSZ00) | (1 << UCSZ01));
UBRR0L = 14; // fosc = 13.824 MHz U2X = 0 BR = 57.6k
UBRR0H = 0;
UDR0 = Buff[0];
CountTx_0 = 1;
UCSR0B |= ((1 << TXEN0) | (1 << UDRIE0));
}

ISR (USART0_TX_vect)
{
FlagTx_0 = 1;
UCSR0B &=~ ((1 << TXCIE0) | (1 << TXEN0) | (1 << UDRIE0));
}

ISR (USART0_UDRE_vect)
{
UDR0 = Buff [CountTx_0];

CountTx_0++;
if (CountTx_0 == sizeof(Buff))
{
UCSR0B &=~ (1 << UDRIE0);
UCSR0B |= (1 << TXCIE0);
return;
}
}
Сразу скажу, может не всё запрограммировано строго по правилам, но первые два канала работают, а вторые два нет. Ератта молчит.
Регистры PRR0 и PRR1 проверял.
Что не так делаю. Поделитесь кодом правильной работы с этими каналами.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SysRq
сообщение Feb 26 2011, 12:13
Сообщение #2


Чайник, 1 литр
****

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



Цитата(Oleg_IT @ Feb 26 2011, 10:12) *
Для теста все 4 канала инициализирую одинаково...
Покажите код для 2 и 3 (тег codebox используйте). Может, просто очепятка где...
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 26 2011, 13:37
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Вспоминается мне один нюанс.
В DS описывается четкая временная последовательность при чтении-записи вроде как регистра UCSRC совмещённого с UBRRH.
Хоть в меге2560 вроде как бита URSEL нет, но может мой опыт кому-нибудь ещё будет полезен...

Я наткнулся на эти грабли когда делал универсальный модуль для работы с UARTами.
Я делал всё через хендлы-дескрипторы (структуры с указателями на регистры проще говоря) и вдруг всё перестало работать.
Причина - косвенная адресация. Нарушилась временная последовательность и аля-улю...
Решил я это путём кеширования регистра UCSRC в дескрипторе порта.
К чему это я всё говорю. В вашем случае может быть (а может и не быть) схожая ситуация, порождённая тем, что регистры 2-го и 3-го UART'ов находятся в более старших адресах RAMы где возможно применяются другие asm-инструкции.
Вы просто смёржите два asm-листинга вашей программы.
Может моя догадка верна...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Oleg_IT   Какие есть особенности инициализации UART2 и UART3 в atmega2560?   Feb 23 2011, 20:49
- - Juk1976   Цитата(Oleg_IT @ Feb 23 2011, 23:49) UART...   Feb 23 2011, 21:40
|- - Oleg_IT   Цитата(Juk1976 @ Feb 24 2011, 00:40) В па...   Feb 25 2011, 10:01
|- - Juk1976   Цитата(Oleg_IT @ Feb 25 2011, 13:01) Ваш ...   Feb 25 2011, 20:42
|- - Oleg_IT   У меня тоже ни когда с этим проблем не было. Преды...   Feb 26 2011, 07:12
- - SysRq   Цитата(Oleg_IT @ Feb 23 2011, 23:49) UART...   Feb 23 2011, 23:20
|- - Oleg_IT   Цитата(SysRq @ Feb 26 2011, 15:13) Покажи...   Feb 26 2011, 15:26
|- - Oleg_IT   Прошу прощение за объёмы кода. Ассемблер код иниц...   Feb 26 2011, 19:48
- - SysRq   Bug 47696 - [AVR] Compilation for atmega2560 produ...   Feb 26 2011, 21:47
|- - Oleg_IT   Цитата(SysRq @ Feb 27 2011, 00:47) Bug 47...   Feb 27 2011, 09:16
|- - SysRq   AVCC к питанию подключен? PORTF питается от него, ...   Feb 27 2011, 10:07
- - Oleg_IT   AVCC через LC (рекомендованный) фильтр подключен к...   Feb 27 2011, 13:38
- - xelax   Может дело не в uart'е? Вы же не зря атмегу256...   Feb 28 2011, 10:26
|- - Oleg_IT   Цитата(xelax @ Feb 28 2011, 13:26) Может ...   Feb 28 2011, 12:18
- - xelax   Вот здесь кое что обсуждалось Так же в документац...   Feb 28 2011, 16:24
- - Oleg_IT   Цитата(xelax @ Feb 28 2011, 19:24) Вот зд...   Mar 1 2011, 07:17
- - SysRq   Цитата(Oleg_IT @ Mar 1 2011, 10:17) Чего ...   Mar 1 2011, 07:39
- - Oleg_IT   Цитата(SysRq @ Mar 1 2011, 10:39) Выклады...   Mar 1 2011, 10:36


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

 


RSS Текстовая версия Сейчас: 17th August 2025 - 10:59
Рейтинг@Mail.ru


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