这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » AVR 用AVR怎么精确的定时?

共3条 1/1 1 跳转至

AVR 用AVR怎么精确的定时?

院士
2006-09-17 18:14:16     打赏
AVR 用AVR怎么精确的定时?



关键词: 怎么     精确     定时    

院士
2006-12-22 22:43:00     打赏
2楼
问 我的程序里需要一个比较精确的时间基准。 1: CTCT0& T1 CTC模式,用系统晶体作时钟源,精确度由系统晶体决定! 2: l4157定时器中断函数里执行的语句越多,误差就越大啊,我的程序里有几个时间标准。 3: CTC是由CPU硬件自动清零CTC是由CPU硬件自动清零,所以中断间隔应该相等(只开一个中断),而且CTC可保证下一个中断不延迟!
不知兄弟为什么要这样准的时基?如实在不行建议用CPLD做一个!估计是采样吧? 4: l4157对啊,我是采集外部的信号,你这个方法能同时产生几个时间标准吗? 5: 不知你的实际工作需求如果是实时性很强,我不建议使用AVR的CTC,如做FFT等;但只是普通采样滤波或定时采样,CTC足够,不过CTC好象也可用来触发片内ADC转换,
不介意说一下你的CPU任务需求? 6: 晓奇老师,有个精确定时的例子/*======================================
微秒级精确延时函数,晶振8M:           
Delay = 0.125 *((tt*4-1)+9)微秒   
其中9包括了调用方的 r16 赋值 1t   
rcall 3t    nop 1t   ret 4t
brne指令在当判断条件不成立时是单周期
最后一次判断只有1个周期,补一个nop
简化计算 = 0.5tt + 1 (us)
======================================*/

void shortdelay(unsigned char tt)
{
        asm("_L2: subi R16,1");    // 1t
        asm(" nop")                // 1t
        asm(" brne _L2");         // 2t/1t
        asm(" nop");              // 1t
        asm(" ret");              // 4t
} 7: 我也有同样的问题。我想用MEGA16作64点交流采样,然后进行FFT运算。我是这么做的,将交流信号变为方波,用T1测出信号的周期,然后TCNT1/64作为采样周期,用T1的比较中断进行AD采样,然而,采出的结果看起来好象不是一个完整周期的信号(比一个周期要短一些),可能是在计算采样周期的时候,T/64产生的偏差所致,但又不大象,好象不应该有那么大的偏差,不知问题出在哪里。请问各位,有什么好办法? 8: 一个周期的AD值这是我采出的一个周期的信号值,在EXCEL中可以很容易描出其曲线,请高手帮忙分析一下。
442
420
396
388
371
352
331
314
318
308
316
295
294
293
288
284
284
284
287
314
328
341
355
375
397
419
445
455
486
500
537
544
571
579
600
628
650
653
665
694
718
726
729
724
724
740
742
742
741
741
738
733
711
695
681
666
649
629
609
586
560
549
515
499

专家
2022-08-20 17:31:45     打赏
3楼

了解一下


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]