我是微控制器编程的新手。我正在使用ATmega32-A控制器和CodeVisionAVR编译器。我正在使用波形发生器(AD9833)通过SPI通信生成正弦波信号。我能够成功生成正弦波。现在,我将该信号传递给传感器。传感器输出通过多路复用器选择,并发送到ADC。现在,我想使用SPI通信读取ADC值。我已经尝试了很多设置ADC的寄存器。仍然无法正常工作。要查看SPI通信,请看我以前发布的使用spi通信的ADC寄存器设置。我正在使用USART(RS232)通信在PC(PuTTY)上打印值。
有人建议我使用位撞击。我是这个概念的新手。谁能给我提供SPI通信位冲击的示例代码。如何开始该程序?任何人都可以给我提供良好的物资。我需要任何外部硬件吗?
我已经写了这个,包括引脚连接:
#define ADC_CS PORTB.3
#define MOSI PORTB.5
#define MISO PINB.6
#define SCK PORTB.7
void send_8bit_serial_data(unsigned char data)
{
int i;
ADC_CS=0;
for (i = 0; i < 8; i++)
{
// consider leftmost bit
// set line high if bit is 1, low if bit is 0
if (data & 0x80)
output_high(PORTB.5);
else
output_low(PORTB.5);
// pulse clock to indicate that bit value should be read
output_low(PORTB.7);
output_high(PORTB.7);
// shift byte left so next bit will be leftmost
data <<= 1;
}
// deselect device
ADC_CS=1;
}