Нашел интересный документик:
https://www.intel.com/content/dam/ww..._uart_fifo.pdf
Сообщение от На стр 33 пишут
|
Parity generation and checking can be enabled or disabled. If parity is disabled, no parity bit is
transmitted, and the receiver does not expect to receive a parity bit. If parity is enabled, it can be
even, odd, or stick parity:
Even parity—Parity bit is 1, if the character has an odd number of 1s
Odd parity—Parity bit is 1, if the character has an even number of 1s
Stick parity—Parity bit can be forced to 1 or 0
|
Бит четности может быть установлен
принудительно.
На передачу понятно как это работает.
На прием - непонятно, что будет, если в этом случае придет бит четности другой полярности (и если установлен флаг прерывания ошибки четности)?
Установили принудительно "0" бит четности - приходит "1" идет на прерывание? Или как?
Сообщение от j-Roger
|
отдать её как есть на верхний уровень, который будет разруливать её содержимое. Как это сделано в проекте СN0359 и в вашем ( тестовом? )
|
Я сейчас понял почему это так делается.
Хотя в других процах делать удобнее было бы в обработчике прерываний.
Возможно, разница в подходах потому что нет битового процессора в АРМ.
Подскажите, плз, как толковать эти строки, что такое -#ifdef __cplusplus.
Как с этим "бороться"?
Это нужно для всех хэндлеров обработчиков прерываний?
Код:
|
#ifdef __cplusplus
extern "C"
{
#endif
void ADC0_Int_Handler(void)
{
adc0_result = pADI_ADC0-›DAT;
app msg;
msg.argc = 0;
msg.fun = on_adc0;
ts_post_message(msg);
}
void ADC1_Int_Handler(void)
{
adc1_result = pADI_ADC1-›DAT;
app msg;
msg.argc = 0;
msg.fun = on_adc1;
ts_post_message(msg);
}
#ifdef __cplusplus
}
#endif |