Странные проблемы после добавления функции - PullRequest
2 голосов
/ 17 апреля 2020

У меня странная проблема. Когда я компилирую первую функцию, микроконтроллер отправляет сигнал с ошибками (некоторые октеты дублируются, некоторые не отправляются вообще и т. Д. 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 снимок экрана анализатора

...