打印
[PIC®/AVR®/dsPIC®产品]

ATmega16定时器1定时问题

[复制链接]
1105|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
还没过四级|  楼主 | 2024-12-18 10:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用ATmega16的定时器1定时1us,输出方波,但是实际测量的时候发现本来应该是周期2us的方波,实际输出的是4.75us的周期,一直找不到问题在哪,定时1ms的时候就没有事儿,哪位大佬知道问题可能在哪里?

使用特权

评论回复
沙发
还没过四级|  楼主 | 2024-12-18 10:06 | 只看该作者
本帖最后由 还没过四级 于 2024-12-18 10:07 编辑

补充一下,晶振16M的

使用特权

评论回复
板凳
lcczg| | 2024-12-19 09:11 | 只看该作者
本帖最后由 lcczg 于 2024-12-19 09:12 编辑

把系统时钟初始化和定时器1初始化的代码贴上来,另外还有产生方波的代码,大家看一下。

使用特权

评论回复
地板
xch| | 2024-12-19 09:16 | 只看该作者
是不是看不清楚 1 和 7?16分频变成76分频

使用特权

评论回复
5
dongnanxibei| | 2024-12-24 16:48 | 只看该作者
应该是切换过程浪费了时间吧?

使用特权

评论回复
6
dongnanxibei| | 2024-12-24 16:48 | 只看该作者
你延时长点看看准不准

使用特权

评论回复
7
nuan11nuan| | 2025-1-15 19:17 | 只看该作者
在使用 ATmega16 的定时器1生成1us方波时,实际测量到的周期为4.75us,而定时1ms时没有问题,这表明问题可能与定时器的配置或时钟频率有关。

使用特权

评论回复
8
twinkhahale| | 2025-1-15 20:23 | 只看该作者
ATmega16的定时器是基于系统时钟(F_CPU)工作的。如果时钟频率设置不正确,定时器的计时会不准确。确认 F_CPU 的定义是否正确。例如,如果使用8MHz晶振

使用特权

评论回复
9
tiakon| | 2025-1-15 21:25 | 只看该作者
定时器1的配置可能存在问题,导致计时不准确。确保定时器1的预分频器(Prescaler)设置正确。对于1us的定时,通常需要将预分频器设置为1(即不分频)

使用特权

评论回复
10
hhdhy| | 2025-1-15 22:34 | 只看该作者
检查定时器的模式是否正确。例如,使用CTC模式(Clear Timer on Compare Match)来生成精确的方波

使用特权

评论回复
11
星星点点didi| | 2025-1-16 09:12 | 只看该作者
比较匹配寄存器(OCR1A)的值可能计算错误,导致定时不准确。计算 OCR1A 的值时,确保公式正确

使用特权

评论回复
12
nqty| | 2025-1-16 11:00 | 只看该作者
如果使用中断来生成方波,中断处理程序的执行时间可能影响定时精度。确保中断处理程序尽可能简短,避免在中断中执行复杂的操作

使用特权

评论回复
13
yuliangren| | 2025-1-16 12:23 | 只看该作者
如果需要更高的精度,可以考虑使用硬件输出比较功能(如 OC1A 引脚)直接生成方波,而不依赖中断

使用特权

评论回复
14
suiziq| | 2025-1-16 13:11 | 只看该作者
硬件电路可能存在干扰或设计问题,导致信号失真。检查电路连接,确保信号线没有受到干扰。使用示波器观察输出波形,确认是否存在噪声或失真

使用特权

评论回复
15
hight1light| | 2025-1-16 14:08 | 只看该作者
使用示波器测量输出波形,确认周期和占空比。

使用特权

评论回复
16
miltk| | 2025-1-16 15:24 | 只看该作者
逐步调整 OCR1A 的值,观察波形变化,找到最接近1us周期的值。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

17

帖子

0

粉丝