Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * DAC.c
- *
- * Created: 15.02.2017 17:59:51
- * Author: Шамиль
- */
- #define F_CPU 8000000
- #include <avr/io.h>
- #include <util/delay.h>
- #define SPI_DDR DDRB
- #define SPI_PORT PORTB
- #define MOSI 3
- #define CLK 5
- #define CS 2
- /*
- - управляющий регистр SPCR,
- - статусный регистр SPSR,
- - регистр данных SPDR.
- */
- void spi_init(){
- SPI_DDR |= ( 1 << MOSI )|( 1 << CLK )|( 1 << CS );
- SPI_PORT = ( 1 << CS );
- SPI_DDR |= ( 1 << MOSI )|( 1 << CLK )|( 1 << CS );
- SPCR = ( 1 << SPE )|( 1 << MSTR );
- SPSR = ( 1 << SPI2X );
- }
- void SPI_WriteByte(uint8_t data)
- {
- SPDR = data;
- while(!(SPSR & (1<<SPIF)));
- }
- void convert_DAC (float Voltage){
- unsigned int Level = (unsigned int)(Voltage * 4096) / 5;
- unsigned int M_Level = Level >> 8;
- M_Level |= 0x70;
- SPI_PORT &=~ ( 1 << CS );
- SPDR = M_Level;
- while(!(SPSR & (1<<SPIF)));
- SPDR = Level;
- while(!(SPSR & (1<<SPIF)));
- SPI_PORT |= ( 1 << CS );
- }
- int main(void){
- spi_init();
- while(1){
- for ( float i = 0; i < 5; i = i+0.1){
- convert_DAC(i);
- }
- convert_DAC(0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement