⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi.c

📁 CAN-CAN - Controller Area Network Projects
💻 C
字号:
/******************************************************************************
 * Copyright (C) 2005 Martin THOMAS, Kaiserslautern, Germany
 * <eversmith@heizung-thomas.de>
 * http://www.siwawi.arubi.uni-kl.de/avr_projects
 *****************************************************************************
 *
 * File    : spi.c
 * Version : 0.9
 * 
 * Summary : AVR SPI driver
 *
 *****************************************************************************/

#include <avr/io.h>
#include "spi.h"

#define SPIDONTCARE (0x00)

/* init as SPI-Master */
void spi_init(void)
{
	// SCK, SS!!, MOSI as outputs
	SPIDDR |= (1<<SPISCK)|(1<<SPISS)|(1<<SPIMOSI);
	// MISO as input
	SPIDDR &= ~(1<<SPIMISO);	// cbi(SPIDDR,SPIMISO);
	// INIT interface, Master, set clock rate fck/128 TODO: check prescaler
	SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1);
}

uint8_t spi_readwrite(uint8_t data)
{
	// set data to send into SPI data register
	SPDR = data;
	// Wait for transmission complete 
	while(!(SPSR & (1<<SPIF)));
	// return data read from SPI
	return SPDR;
}

uint8_t spi_read(void)
{
	return spi_readwrite(SPIDONTCARE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -