#include #include "SPISlave.h" static int index = 0; static int arIndex = 0; static char data[255]; void SPI_SlaveInit(void) { DDR_SPI = (1 << DD_MISO); SPCR = (1 << SPE) | (1 << SPIE); } // Функция для вычисления контрольной суммы XOR char CRC8(char *data, int length) { char crc = 0x00; char poly = 0x07; // полином для CRC8 for (int i = 0; i < length-2; i++) { crc ^= data[i]; // XOR текущего байта с crc for (int j = 0; j < length; j++) { if (crc & 0x80) { // если старший бит crc равен 1 crc = (crc << 1) ^ poly; // сдвигаем crc на 1 бит влево и XOR с полиномом } else { crc <<= 1; // иначе просто сдвигаем на 1 бит влево } } } return crc; } // Проверка массива на ноль char checkArray(char *arr, int size) { for (int i = 0; i < size; i++) { if (arr[i] != 0) { return 1; } } return 0; }