Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * DACProject.c
- *
- * Created: 10/20/2016 9:59:41 AM
- * Author : Hector Farias & Jose Flores
- */
- #define F_CPU 16000000 //define internal CLK speed
- // assumes vdd = 3.3v, your voltages may vary for 5v
- #define MOSI 3 // PB pin 3
- #define SCK 5 // PB pin 5
- #define SS 2 // PB pin 2
- #include <avr/io.h>
- #include <util/delay.h>
- void Initialize_SPI_Master(void);
- void Transmit_SPI_Master(int Data);
- int main(void)
- {
- int count = 0;
- DDRB = 1<<MOSI | 1<<SCK | 1<<SS; // make MOSI, SCK and SS outputs
- Initialize_SPI_Master();
- while(1)
- {
- /**
- Transmit_SPI_Master(0x666); //0xAAA / 0xFFF = 2730 / 4096 * 5V (ref) = ~ 3.33V
- _delay_ms(100);
- Transmit_SPI_Master(0x333); //0x333 / 0xFFF = 819 / 4096 * 5V (ref) ~ 0.99
- _delay_ms(100);
- **/
- int start = 819;
- int top = 1638;
- int step_value = 8;
- while(start <= top)
- {
- Transmit_SPI_Master(start);
- start = start + step_value;
- }
- start = 819;
- while(top >= start)
- {
- Transmit_SPI_Master(top);
- top -= step_value;
- }
- } // end while
- return 0;
- } // end main
- void Initialize_SPI_Master(void)
- {
- SPCR = (0<<SPIE) | //No interrupts
- (1<<SPE) | //SPI enabled
- (1<<MSTR) ; //master
- SPSR = 0x00; //clear flags
- PORTB = 1 << SS; // make sure SS is high
- }
- void Transmit_SPI_Master(int Data) {
- PORTB &= ~(1 << SS); //Assert slave select (active low)
- SPDR = ((Data >> 8) & 0xF) | 0x70; //Attach configuration Bits onto MSB
- while (!(SPSR & (1<<SPIF)));
- SPDR = 0xFF & Data;
- while (!(SPSR & (1<<SPIF)));
- PORTB |= 1 << SS; //Turn off slave select
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement