Что-то не пойму, где наступил на граблю
Код
#define PARITY_ENABLE 0x08
#define ODD_PARITY (0x00|PARITY_ENABLE)
#define EVEN_PARITY (0x10|PARITY_ENABLE)
#define FORCED_1_PARITY (0x20|PARITY_ENABLE)
#define FORCED_0_PARITY (0x30|PARITY_ENABLE)
Код
//переключение в режим чётности форсированая 1
void UART0_PAR_1(void)
{
U0LCR = STOP_BITS_1|BITS_8|FORCED_1_PARITY; /* 8 bits, Parity forced 1, 1 Stop bit */
}
//переключение в режим чётности форсированый 0
void UART0_PAR_0(void)
{
U0LCR = STOP_BITS_1|BITS_8|FORCED_0_PARITY; /* 8 bits, Parity forced 0, 1 Stop bit */
}
Код
void putbyte0 (U16 c)
{
while (!(U0LSR& 0x20));
//проверка режима
if(c & MDB_MODE_MSK)
{
//передача команды
UART0_PAR_1();
}
else
{
//передача данных
UART0_PAR_0();
}
U0THR = c; /* transmit a character */
return;
}
и функция, отправляющая пакет:
Код
void send_packet0 (U16 *buf, int length)
{
while (length--)
{
putbyte0(*buf++);
}
return;
}
выполняю пошагово - все четко, 9-й бит корректно выставляется. Как только выполнение без отладки - 9й бит никак не хочет выставляться