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

 
 
 
Reply to this topicStart new topic
> Модуль UART в ADUC7026
Paragon
сообщение Sep 8 2006, 04:51
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 8-09-06
Из: Челябинск
Пользователь №: 20 189



Подскажите, пожалуйста, есть ли более подробное описание UART ADUC702x, чем приведённое в даташите?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 8 2006, 10:42
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Paragon @ Sep 8 2006, 07:51) *
Подскажите, пожалуйста, есть ли более подробное описание UART ADUC702x, чем приведённое в даташите?
Не попадалось. Но мне удалось его заставить работать. Если интересно, могу выложить пример.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Paragon
сообщение Sep 11 2006, 02:29
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 8-09-06
Из: Челябинск
Пользователь №: 20 189



Цитата(Сергей Борщ @ Sep 8 2006, 16:42) *
Цитата(Paragon @ Sep 8 2006, 07:51) *

Подскажите, пожалуйста, есть ли более подробное описание UART ADUC702x, чем приведённое в даташите?
Не попадалось. Но мне удалось его заставить работать. Если интересно, могу выложить пример.

Интересно ли мне? Интересно - не то слово. Вопрос жизни и смерти!:)
Можно послать примеры на paragon@rez.ru или сообщить, где они лежат. Заранее признателен.
Go to the top of the page
 
+Quote Post
Snusmumrik
сообщение Oct 5 2006, 12:43
Сообщение #4





Группа: Новичок
Сообщений: 12
Регистрация: 30-07-06
Из: Харьков, Украина
Пользователь №: 19 186



Цитата(Paragon @ Sep 11 2006, 04:29) *


Более подробное - не попадалось. Но тоже заставил его работать smile.gif Замеченные особенности работы:
для загрузки программы использовать - только пины 1.0 и 1.1, а не 0.7 и 2.0 - я на это попался, т.к. в документации разница между ними не оговаривалась, а техсаппорт ADI мне ответил, что,мол, сорри, забыли описать, в след. версии даташита... А у меня на тестовом образце девайса пришлось проводки сверху к пинам припаивать smile.gif Это для загрузки только, потом 0.7 и 2.0 можно использовать как RXD и TXD

Сообщение отредактировал Snusmumrik - Oct 5 2006, 12:45


--------------------
Господа! Вы слишком серьёзны! Серьёзное лицо ещё не признак ума. Все глупости на земле делаются именно с этим выражением...
(с) Григорий Горин, "Тот самый Мюнхгаузен"
Go to the top of the page
 
+Quote Post
IEC
сообщение Oct 10 2006, 13:05
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Цитата(Сергей Борщ @ Sep 8 2006, 13:42) *
Цитата(Paragon @ Sep 8 2006, 07:51) *

Подскажите, пожалуйста, есть ли более подробное описание UART ADUC702x, чем приведённое в даташите?
Не попадалось. Но мне удалось его заставить работать. Если интересно, могу выложить пример.


Если возможно, перешлите пример на gsv@iec-ua.com, а то никак не могу завести. Прерывания по приему идут, а ответ не передается. Кстати вот код, может кто что-нибудь подскажет:

/*--------------------------------------------------------------------------*/
void UART_IRQ(void)
{
unsigned char comiid0 = COMIID0&0x06;

if( comiid0==0x02 ) { // Орбаботка прерывания по передаче
if ( buf[0]<=len ) COMTX = buf[len++];
else {
COMIEN0 |= (1<<ELSI); // разрешение обработки прерываний
len = 0x00;
}
}
else {
if( comiid0==0x04 ) { // Обработка прерывания по приему
buf[len] = COMRX;
if ( (buf[0]&0x0f)==len ) { // завершение приема команды
COMIEN0 &=~ (1<<ELSI); // запрет обработки прерываний
clocUart = 0x00; // запрет обработки тайм-аута обмена
// FullUART = 0x55; // установка флага приема посылки

ActiveTX();
}
else {
len++;
clocUart = 10;
}
}
else { // сброс необрабатываемых прерываний
comiid0 = COMSTA0;
comiid0 = COMSTA1;
}
}
}
/*--------------------------------------------------------------------------*/
void UART_Init(void)
{
unsigned short baund = 0x92;
//Инициализация COM-порта
COMCON0 = (1<<DLAB);
COMDIV1 = (baund>>8);
COMDIV0 = baund&0xff;
COMCON0 = (1<<STOP)|(3<<WLS); // 8-бит + 2 стоповых
COMIEN0 = (1<<ELSI)|(1<<ETBEI);//Радрешение прерываний по приему и передаче

baund = COMIID0; // контрольный сброс прерываний
len = 0x00;
}
//--------------------------------------------------------------------------
void ActiveTX(void)
{
COMTX = buf[len=0];
len++;
}
/*--------------------------------------------------------------------------*/

в UART_IRQ попадает при анализе флага
(IRQSIG&UART_BIT) в обработке прерывания.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 10 2006, 14:18
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(IEC @ Oct 10 2006, 16:05) *
Цитата(Сергей Борщ @ Sep 8 2006, 13:42) *

Цитата(Paragon @ Sep 8 2006, 07:51) *

Подскажите, пожалуйста, есть ли более подробное описание UART ADUC702x, чем приведённое в даташите?
Не попадалось. Но мне удалось его заставить работать. Если интересно, могу выложить пример.


Если возможно, перешлите пример на gsv@iec-ua.com, а то никак не могу завести. Прерывания по приему идут, а ответ не передается.

Где может быть проблема: первые образцы кристаллов имели коэфф. умножения PLL 1376 и частоту около 45МГц, в последних даташитах указано 1275 и 41.7МГц. Я на этом довольно много времени потерял. Свой код прилагаю. Код выдернут из проекта и в "обкоцаном" виде не проверялся.

P.S. Поборол природную лень и проверил/подправил приложенный код. Теперь компилится и работает.

Сообщение отредактировал Сергей Борщ - Oct 10 2006, 14:47
Прикрепленные файлы
Прикрепленный файл  ADuC_UART.zip ( 8.02 килобайт ) Кол-во скачиваний: 66
 


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
IEC
сообщение Oct 11 2006, 08:36
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



С частотой я уже разобрался: действительно частота ядра ниже! Синхронизировал длительность одного бита с помощью осциллографа (пришлось применить дробный делитель).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 8th July 2025 - 00:16
Рейтинг@Mail.ru


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