Datasheet

Library Example
This code demonstrates using library routines for Soft_SPI communication. Also, this
example demonstrates working with Microchip's MCP4921 12-bit D/A converter.
// DAC module connections
sbit Chip_Select at PORTB.B0;
sbit SoftSpi_CLK at PORTB.B7;
sbit SoftSpi_SDI at PINB.B6; // Note: Input signal
sbit SoftSpi_SDO at PORTB.B5;
sbit Chip_Select_Direction at DDRB.B0;
sbit SoftSpi_CLK_Direction at DDRB.B7;
sbit SoftSpi_SDI_Direction at DDRB.B6;
sbit SoftSpi_SDO_Direction at DDRB.B5;
// End DAC module connections
unsigned int value;
void InitMain() {
DDA0 = 0; // Set PA0 pin as input
DDA1 = 0; // Set PA1 pin as input
Chip_Select = 1; // Deselect DAC
Chip_Select_Direction = 1; // Set CS# pin as Output
Soft_SPI_Init(); // Initialize Soft_SPI
}
// DAC increments (0..4095) --> output voltage (0..Vref)
void DAC_Output(unsigned int valueDAC) {
char temp;
Chip_Select = 0; // Select DAC chip
// Send High Byte
temp = (valueDAC >> 8) & 0x0F; // Store valueDAC[11..8]
to temp[3..0]
temp |= 0x30; // Define DAC setting,
see MCP4921 datasheet
Soft_SPI_Write(temp); // Send high byte via Soft SPI
// Send Low Byte
temp = valueDAC; // Store valueDAC[7..0]
to temp[7..0]
Soft_SPI_Write(temp); // Send low byte via Soft SPI
Chip_Select = 1; // Deselect DAC chip
}
413
MIKROELEKTRONIKA - SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD
Libraries
mikroC PRO for AVR
CHAPTER 6