Пт июн 01, 2018 08:29:52
//... Инициализация SPI - USI
void SPI_Init(void)
{
SPI_DDR |= (Bit(SCK) | Bit(MISO)); // Все выводы, кроме MOSI, выходы
SPI_PORT |= (Bit(MOSI) | Bit(MISO));
USICR |= (Bit(USIWM0) | Bit(USICS1) | Bit(USICLK));
}
//... Передать байт данных
void SPI_WriteByte(uint8_t data)
{
//... Копируем байт в регистр USIDR
USIDR = data;
//... Установим флаг начала передачи
USISR = Bit(USIOIF);
//... В цикле следим за флагом
while(!(USISR & Bit(USIOIF)))
{
USICR |= ( Bit(USITC)); // Режим SPI, тактируем шину сами
}
_delay_us(100); // Задержка для моста SPI - UART
}
//... Передать и получить байт данных
uint8_t SPI_ReadByte(uint8_t data)
{
//... Отправляем байт
SPI_WriteByte(data);
//... Принятый байт возвращаем
return USIDR;
}
Пн июн 11, 2018 16:32:50