Страница 4 из 4

Re: 1830ВЕ32У, 1830ВЕ32АУ

Добавлено: 28 мар 2016, 09:46
cto402
Здравствуйте.
Вопрос по асинхронному приёмопередатчику.
Из описания возникает двоякое толкование ситуации, когда посылка не считана и приходит новая. Не понятно, при этом, старая посылка перезаписывается новой или в буфере будет оставаться несчитанная ("старая") посылка? Вот выдержки из текста:
"..если к моменту окончания приема байта предыдущий байт не был считан из SBUF, то он будет
потерян.." - значит перезаписывается новой посылкой?
"..если не выполнено условие "RI"=0 ....., то принятая последовательность бит теряется..."(фрагмент из описания режима "1", описание ситуации, когда флаг "RI" не был сброшен) - значит остаётся старая посылка?
Уточню ещё раз вопрос, какая посылка будет в SBUF, если посылки не считывать, первая или последняя? В связи с этим ещё вопрос. Достаточно ли сбросить флаг "RI" для приёма очередной посылки или нужно выполнять чтение SBUF?

Re: 1830ВЕ32У, 1830ВЕ32АУ

Добавлено: 28 мар 2016, 12:00
cto402
Ещё вопросы по асинхронному приёмопередатчику. Цитирую ТО:
"Если бит остановки потерян, устанавливается бит ошибки формата (FE). Этот бит может быть проверен программно после каждого приема для обнаружения ошибок связи."
1. Означает ли это, что в режимах "1", "2" и "3", независимо от состояния стоп-бита, при соблюдении всех остальных условий, посылка будет принята и выставлен флаг "RI" ?
2. Будет ли принята посылка в режиме "1" и сформирован флаг "FE" при следующем исходном состоянии приёмника: "RI"=0, "SM"=1, стоп-бит = 0.

Re: 1830ВЕ32У, 1830ВЕ32АУ

Добавлено: 29 мар 2016, 12:20
_sva_
cto402 писал(а): Уточню ещё раз вопрос, какая посылка будет в SBUF, если посылки не считывать, первая или последняя? В связи с этим ещё вопрос. Достаточно ли сбросить флаг "RI" для приёма очередной посылки или нужно выполнять чтение SBUF?
Первая, сбросить флаг достаточно.

Re: 1830ВЕ32У, 1830ВЕ32АУ

Добавлено: 29 мар 2016, 12:48
_sva_
cto402 писал(а):Ещё вопросы по асинхронному приёмопередатчику. Цитирую ТО:
"Если бит остановки потерян, устанавливается бит ошибки формата (FE). Этот бит может быть проверен программно после каждого приема для обнаружения ошибок связи."
1. Означает ли это, что в режимах "1", "2" и "3", независимо от состояния стоп-бита, при соблюдении всех остальных условий, посылка будет принята и выставлен флаг "RI" ?
2. Будет ли принята посылка в режиме "1" и сформирован флаг "FE" при следующем исходном состоянии приёмника: "RI"=0, "SM"=1, стоп-бит = 0.
1. Да.
2. Да.

Re: 1830ВЕ32АУ

Добавлено: 10 окт 2017, 16:23
alextm
Здравствуйте, проблема при приеме данных по UART
Столкнулся с непонятной проблемой при обмене данными по UART - прием данных происходит с ошибкой. Неверно интерпретируются входные данные при формате байтов с одним стоповым битом. Из первой осциллограммы видно, что второй байт не был принят (обработчик прерывания UART не вызвался). Так же, странно, что не было установки признака ошибки кадра FE. (При содержимом посылки 0xFF, 0x00, 0x00, 0x00 ... 0x00, стабильно пропускается каждый второй байт и "FE" не возникает)
При изменении содержимого посылки на FF 10 02 0A 15 00 01 97 30 00 01.... начинают происходить ошибки FE, прием байтов идет с ошибкой. Эта ситуация показана на втором рисунке.
Для того, что бы контролировать работу UART и контроллера в целом, в момент приема команд по UART, сделана непрерывная выдача константы 0x55, которая корректно принимается ПК, что позволяет судить о корректности тактирования МК, и его настоек UART.
Для эксперемента, была изменена настройка порта на стороне ПК с одного стопового бита на два, при этом прием данных МК происходит без потерь и ошибок. (Рис.3). Но в штатной системе обмен должен происходить в формате 19200,8,N,1. Прошу пояснить данную ситуацию и дать совет решения.

Для пояснения привожу код инициализации UART и обработчик прерывания.
void UART_ISR(void) ISR_ID_UART {
unsigned char i;

if (TI) {
TI = 0;
WDT_HW_RESET;
TB8 = 0;
SBUF = 0x55;
return ;
}
DEBUG_IRQ_UART_RI_START;
if (RI) {
RI = 0;
i = SBUF;
if (SM0) // FE
{
DEBUG_UART_FE_DETECT;
SM0 = 0;
}
//HexBin_Rx_Char(i); обработка данных отключена
DEBUG_IRQ_UART_RI_EXIT;
}
}
Main():
...
InitUART();
...
Initxxxx();
...
SBUF = 0x55;
IE = (1 << 7) | (1 << 4); //EA + ES
PCON &= ~(1<<6);
SM0 = 0;
PCON |= (1<<6);
SM0 = 0;
while (1) {
}
Инициализация:
unsigned char InitUART() {

PCON = 0;
SCON = 0x50;
#ifdef UART_USE_TIMER2
#warning "UART использует таймер 2"
RCAP2L = UART_RCAP_CALC(UART_BAUD);
RCAP2H = UART_RCAP_CALC(UART_BAUD) >> 8;
TL2 = RCAP2L;
TH2 = RCAP2H;
RCLK = 1;
TCLK = 1;
TR2 = 1;
#else
#warning "UART использует таймер 1"
TMOD = (TMOD & 0x0F) | ( 2 << 4) ;// Timer 1 : режим "2"
TH1 = UART_T1_CALC(UART_BAUD);
TL1 = UART_T1_CALC(UART_BAUD);
TR1 = 1; // Timer 1 run
#endif

RI = 0; //Сброс битов приёма и передачи
TI = 0;

PCON = 0x40 | (UART_BAUD_x2 << 7); //Use FE. SM0 as FE
ES = 1;
PS = 1; // Высокий приоритет!
P3 = 0xff;
return 0;
}
Определения:
#define UART_BAUD 9600
#define UART_BAUD_x2 1 // режим удвоения скорости
#define CLK 11059000 //11.059 МГц
#define TIMER2_DIV 32
// #define UART_USE_TIMER2

#define UART_RCAP_CALC(baud) (unsigned short)((65536.0 - ((float)CLK / (float)baud / (float)TIMER2_DIV)) + 0.5) //9600
#define UART_T1_CALC(baud) (unsigned short)((256.0 - (((float)CLK/12.0)/ ((float)baud * 32.0))) + 0.5)

#define DEBUG_PIN0( x ) P1_0 = x;
#define DEBUG_PIN1( x ) P1_1 = x;
#define WDT_HW_RESET P3_5 ^= 1;

#define DEBUG_IRQ_UART_RI_START DEBUG_PIN1(0); DEBUG_PIN1(1)
#define DEBUG_IRQ_UART_RI_EXIT DEBUG_PIN1(0); DEBUG_PIN1(1);DEBUG_PIN1(0); DEBUG_PIN1(1)
#define DEBUG_UART_FE_DETECT DEBUG_PIN0(0); DEBUG_PIN0(1);
Потеря байтов. нет FE!
Изображение

Потеря байтов. 19200 бод, 1 стоп бит.
Изображение

Обмен нормальный. 19200 бод, 2 стоп бит.
Изображение

Re: 1830ВЕ32У, 1830ВЕ32АУ

Добавлено: 15 окт 2021, 11:22
iap_64
Здравствуйте. Для проведения климатических и механических испытаний макета аппаратуры (без специалтных воздействий) заложен 1830ве32у, но сроки его поставки неприемлемо затянуты. К1830ве32у может быть поставлен намного быстрее, но в описании о нем и его параметрах информации найти не удалось. Прошу уточнить их основные отличия?

Re: 1830ВЕ32У, 1830ВЕ32АУ

Добавлено: 19 окт 2021, 09:31
dav
iap_64 писал(а): 15 окт 2021, 11:22 Здравствуйте. Для проведения климатических и механических испытаний макета аппаратуры (без специалтных воздействий) заложен 1830ве32у, но сроки его поставки неприемлемо затянуты. К1830ве32у может быть поставлен намного быстрее, но в описании о нем и его параметрах информации найти не удалось. Прошу уточнить их основные отличия?
Доброго времени суток!
Микроконтроллеры К1830ве32у и 1830ве32у отличаются приемкой (К1830ве32у - с приемкой "1" ОТК, 1830ве32у - с приемкой "5" ВП).