Skip to content

Latest commit

 

History

History
65 lines (56 loc) · 905 Bytes

File metadata and controls

65 lines (56 loc) · 905 Bytes

SPI mit DAC

#define F_CPU 16000000
#include <avr/io.h>
#include <util/delay.h>
uint16_t value=0;

void initSPI(){
	DDRB |= (1<<4) |(1<<5)|(1<<7);
	SPCR |=(1<<MSTR) | (1<<SPE);
	SPSR |=(1<<SPI2X);
}

void spi_transmit(uint8_t word){
	SPDR = word;
	while(!(SPSR&(1<<SPIF)));
}

int main(void){
	initSPI();
	while (1){
		value+=4;
		//CS low
		PORTB &= ~(1<<4);
		//send HB
		spi_transmit(value >> 8);
		//set LB
		spi_transmit(value & 0x00FF);
		//SS high
		PORTB |= (1<<4);
		//if max set to min	
		if(value==0x9FFC){
			value =0x9000;
		}
	}
}
#include <avr/io.h>

void initSPI(){
	DDRB = 0xFF;
	SPCR |= (1<<SPE) | (1<<MSTR) | (1<<SPR1);
}

void SPI_send(uint8_t word){
	SPDR = word;
	while(!(SPSR&(1<<SPIF)));
}

int main(void){
	uint8_t hb = 0x93;
	uint8_t lb = 0x34;
	initSPI();
  while(1){
		PORTB |= (1 << PB4);
		SPI_send(hb);
		SPI_send(lb);	
		PORTB &= ~(1 << PB4);
    }
}