У меня странная проблема. Когда я компилирую первую функцию, микроконтроллер отправляет сигнал с ошибками (некоторые октеты дублируются, некоторые не отправляются вообще и т. Д. c.). Но когда я выполняю вторую функцию, микроконтроллер посылает сигнал сброса. В чем может быть причина этих ошибок? Если вам нужна дополнительная информация, я постараюсь ответить: 3
Первая функция:
uint8_t DataOut[DATA_OUT_BUF_SIZE];
uint8_t DataOutPosition = 0;
void add_data(uint8_t Value)
{
DataOut[DataOutPosition] = Value;
DataOutPosition++;
}
void send_data()
{
uint8_t Checksum = 0x52;
for (uint8_t i = 0; i < DataOutPosition; ++i)
{
Checksum ^= DataOut[i];
}
add_data((checksum_compression(Checksum) | (ProcessDataStatus << 6) | (EventFlag << 7)));
UART_CONTROL &= ~(1 << RXEN0);
EN_OUT;
for (uint8_t i = 0; i < DataOutPosition; ++i)
{
uart_put(DataOut[i]);
}
default_variables();
}
Вторая функция:
uint8_t DataOut[DATA_OUT_BUF_SIZE];
uint8_t DataOutPosition = 0;
void send_data()
{
uint8_t Checksum = 0x52;
for (uint8_t i = 0; i < DataOutPosition; ++i)
{
Checksum ^= DataOut[i];
}
DataOut[DataOutPosition] = checksum_compression(Checksum) | (ProcessDataStatus << 6) | (EventFlag << 7);
DataOutPosition++;
UART_CONTROL &= ~(1 << RXEN0);
EN_OUT;
for (uint8_t i = 0; i < DataOutPosition; ++i)
{
uart_put(DataOut[i]);
}
default_variables();
}
Описание:
- 1 - Сигнал, генерируемый первой функцией.
- 2 - Сигнал, генерируемый второй функцией.
- B - Полученный сигнал. (Одна коммуникационная шина. Когда микроконтроллер отправляет сигнал, он одновременно принимает его.)
- Y - Послан сигнал микроконтроллером.
- R - Направление сигнала: 0-IN 1-OUT
Logi c снимок экрана анализатора