是否可以通过将I / O端口设为高电平和低电平来产生准确的高频波?

时间:2013-07-06 10:10:59

标签: microcontroller avr wave atmega

我想生成3,1MHz的波,相位差为100ns!使用OC模式生成它们是否准确? 我的意思是我可以通过增加OC来实现它,通过少量步骤增加3次,第4次增加一步,并继续执行此操作,并在每个ISR中切换I / O端口(总共3个I / O端口正在切换) 但我的问题是这个过程是否准确?还是有一些时钟在这个过程中丢失了?!

2 个答案:

答案 0 :(得分:0)

没有。然而,OC生成的波形本身就是精确的,并且与程序的执行无关,但延迟并非如此。 只需考虑语句长度。但是大多数语句都是1个循环长,其中一些语句较长,并且中断可能不会出现在多循环语句的中间。 基于OC的时序是不同的,它由定时器硬件执行,因此即使在多周期语句的中间也可能发生。 总结答案:您的主波形是正确的,但延迟会抖动。

答案 1 :(得分:0)

您可能需要查看微控制器的PWM(脉冲宽度调制)功能。您可以使用它来设置这些波形:即使您需要通过不同的计时器单元运行它们,因为计时器可能由相同的源(微型振荡器)计时,您可能有同步它们的方法这种方式。

100ns是一个非常短的时间。你需要一个10MHz的振荡器才能打勾。如果你的micro可以在每个周期执行一个op,并且你想直接勾选它,那么你需要在随后的指令中切换三个引脚(每个都需要1个周期)。这是可能的,但需要非常仔细的设计。对于100ns的滴答,中断等是不可能的,但是你可以巧妙地利用它们来安排引脚更改任务。你如何做到这一点取决于你想要达到的目标。

(我曾经不得不从一个带有40MHz PIC的1,5MHz微型总线上窃取数据,这个PIC在4个周期内完成了一次操作,这些数据只能在300ns内进行采样。我可以预算它并且工作正常 - 所以这种销更换业务当然也是可能的,只需要非常精心设计)