这里我需要在示波器上输出一个波形,该波形应该是一个上升的锯齿波形。我不确定我的代码是否正确。有任何帮助或建议吗?
while(1)
{
for (i = 1; i < 360; i++);
// Check to see if status.TRDY is 1
while(*(base+2) & 0x40 != 1);
// while shift register is not empty
// Make the sawtooth pattern
if (saw == 0x1fff){
saw = 0x1000;
}
else {
saw = saw+1;
}
// transmit sawtooth to the oscilloscope
*(base+1) = saw;
}
答案 0 :(得分:0)
这只会整理OP发布的代码。它没有回答如何编程DAC。 OP使用的是16位幅度值,但他的寄存器寻址建议使用8位寄存器 - 可能需要两次写入。
我建议你还需要定义锯齿波周期的函数参数和步数。您还需要退出条件。我把这些观点留给你。
@Chris Stratton还评论说I / O端口应该是正确的语言类型。
#define MINSAW 0x1000
#define MAXSAW 0x1FFF
unsigned *base = (unsigned *)0xD000; // "insert your value"
int main() {
unsigned saw, i;
while(1) {
for (i = 0; i < 360; i++) {
// ratio the waveform amplitude
saw = MINSAW + i * (MAXSAW - MINSAW) / 359;
// Check to see if status.TRDY is 1
while((*(base+2) & 0x40) != 0x40);
// transmit sawtooth to the oscilloscope
*(base+1) = saw;
}
}
return 1;
}