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

 
 
> UART: инициализация скорости, Отличия от "классики", напр. C8051Fxxx
gala
сообщение Mar 22 2007, 13:55
Сообщение #1


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

Группа: Свой
Сообщений: 119
Регистрация: 29-11-05
Из: Украина, Черкассы
Пользователь №: 11 564



Ув. пользователи MCS-51

Много лет применял инициализацию скорости UART.
Потерял 2 дня для адаптации к SiLabs C8051F064 (читать Datasheet было лень)
Оказалось, инициализация по-умолчанию НЕ соответствует "классике" Intel MCS-51

For classic MCS-51:
Th1=(signed char)(K*Osc_Freq)/(Baud_Rate*32*12); //if(SMOD==1) K=2; else K=1;
T2 =(signed word)(K*Osc_Freq)/(Baud_Rate*32); //K=1;

For SiLabs C8051Fxx:
Th1=(signed char)(K*Osc_Freq)/(Baud_Rate*32*N); //N=1,4,12,48(SysCLC) or N=8(ExtCLC)
T2 =(signed word)(K*Osc_Freq)/(Baud_Rate*16*N); //N=1,2,12(SysCLC) or N=8(ExtCLC);

Готового FAQ по отличиям инициализации скорости UART для разных MCU-51 не нашел.

Предлагаю поделиться грустным опытом
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexanderX
сообщение Mar 22 2007, 17:46
Сообщение #2


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

Группа: Свой
Сообщений: 107
Регистрация: 21-07-05
Из: Киев
Пользователь №: 6 977



В процессорах Silabs C8051F06x очень много разнообразной периферии и не все регистры специального назначения (SFR) поместились в стандартное адресное пространство. Для решения этой проблемы был введен регистр указатель активной страницы для доступа к соответствующим SFR.

Теперь по поводу инициализации UART:
1. Определяете от какого генератора работает процессор, если от внешнего то его нужно инициализировать
2. Инициализируете Crossbar со включенным UART
3. Собственно инициализация режима UART

Пример кода инициализации скорости работы и режима UART т.е. пункт 3.
//
// Initialize UART
// Use Timer 1
//
void UART_Init (void)
{
SFRPAGE = 0x00; // ATTENTION Set Page 0 !!!!
CKCON |= 0x10; // Timer1 clocked from SYSCLK = 24MHz
TMOD &= 0x0F;
TMOD |= 0x20; // Timer1 set to 8-bit mode with auto-reload
TH1 = 0xF3;
TL1 = 0xF3; // Set UART speed 115200
TCON |= 0x40; // Run Timer1
SCON0 = 0xD0; // Receiver enabled, simple 9-bit mode
SSTA0 = 0x10; // Timer 1 is source baudrate for UART
ES0 = 1; // UART interrupt enable
}

Удачи.
Go to the top of the page
 
+Quote Post
evg123
сообщение Mar 23 2007, 17:45
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



Силабсы достаточно навороченные в отличие от стандартных. Мне пришлось дня два-три потратить прежде чем я перешёл от AT89S8252 на F310. Берите pdf-ник по F064 и распечатывайте целиком (полный вариант, т.к. с экрана читать даже на ЖКИ будет не сильно приятно) и затем читайте его целиком и медленно (т.к. потом это сэкономит кучу времени, ведь программируете вы не только УАРТ). Там, можно сказать, всё не так, как в стандартном 51-ом за исключением системы команд. Но всё, что написано - работает хорошо. Есть книга О.И.Николайчук "x51-совместимые микроконтроллеры контроллеры фирмы Cygnal" djvu. Она правда весит 16 метров и там много полезной информации.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- gala   UART: инициализация скорости   Mar 22 2007, 13:55
- - Волощенко   Цитата(gala @ Mar 22 2007, 14:55) Предлаг...   Mar 22 2007, 15:02
- - gala   Цитата(Волощенко @ Mar 22 2007, 16:02) Во...   Mar 22 2007, 16:24
- - Halfback   А может кто написать маленький примерчик как заста...   Apr 3 2007, 21:33
|- - Kolia   Цитата(Halfback @ Apr 3 2007, 22:33) UART...   Apr 4 2007, 09:49
- - Halfback   ЦитатаUART без таймера не работает -> соответст...   Apr 4 2007, 19:30
|- - Kolia   Цитата(Halfback @ Apr 4 2007, 20:30) може...   Apr 5 2007, 11:15
- - Halfback   ЦитатаЕсли не веришь проверь в режиме эмуляции кей...   Apr 5 2007, 18:39
|- - Kolia   Цитата(Halfback @ Apr 5 2007, 19:39) Дык ...   Apr 6 2007, 13:30
- - koyodza   Грусным делиться вроде и нечем. Использовал разные...   Apr 19 2007, 12:07
- - Настовьяк Артём   1 Для работы уарта (F064) обязательно нужен таймер...   Nov 19 2007, 07:58
- - alvol   Цитата(Настовьяк Артём @ Nov 19 2007, 09...   Nov 19 2007, 11:04


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

 


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


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