[PIC®/AVR®/dsPIC®产品] ATmega16定时器1定时问题

[复制链接]
 楼主| 还没过四级 发表于 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分频
dongnanxibei 发表于 2024-12-24 16:48 来自手机 | 显示全部楼层
应该是切换过程浪费了时间吧?
dongnanxibei 发表于 2024-12-24 16:48 来自手机 | 显示全部楼层
你延时长点看看准不准
nuan11nuan 发表于 2025-1-15 19:17 | 显示全部楼层
在使用 ATmega16 的定时器1生成1us方波时,实际测量到的周期为4.75us,而定时1ms时没有问题,这表明问题可能与定时器的配置或时钟频率有关。
twinkhahale 发表于 2025-1-15 20:23 | 显示全部楼层
ATmega16的定时器是基于系统时钟(F_CPU)工作的。如果时钟频率设置不正确,定时器的计时会不准确。确认 F_CPU 的定义是否正确。例如,如果使用8MHz晶振
tiakon 发表于 2025-1-15 21:25 | 显示全部楼层
定时器1的配置可能存在问题,导致计时不准确。确保定时器1的预分频器(Prescaler)设置正确。对于1us的定时,通常需要将预分频器设置为1(即不分频)
hhdhy 发表于 2025-1-15 22:34 | 显示全部楼层
检查定时器的模式是否正确。例如,使用CTC模式(Clear Timer on Compare Match)来生成精确的方波
星星点点didi 发表于 2025-1-16 09:12 | 显示全部楼层
比较匹配寄存器(OCR1A)的值可能计算错误,导致定时不准确。计算 OCR1A 的值时,确保公式正确
nqty 发表于 2025-1-16 11:00 | 显示全部楼层
如果使用中断来生成方波,中断处理程序的执行时间可能影响定时精度。确保中断处理程序尽可能简短,避免在中断中执行复杂的操作
yuliangren 发表于 2025-1-16 12:23 | 显示全部楼层
如果需要更高的精度,可以考虑使用硬件输出比较功能(如 OC1A 引脚)直接生成方波,而不依赖中断
suiziq 发表于 2025-1-16 13:11 | 显示全部楼层
硬件电路可能存在干扰或设计问题,导致信号失真。检查电路连接,确保信号线没有受到干扰。使用示波器观察输出波形,确认是否存在噪声或失真
hight1light 发表于 2025-1-16 14:08 | 显示全部楼层
使用示波器测量输出波形,确认周期和占空比。
miltk 发表于 2025-1-16 15:24 | 显示全部楼层
逐步调整 OCR1A 的值,观察波形变化,找到最接近1us周期的值。
波尔街道的松柏 发表于 2025-7-28 20:59 | 显示全部楼层
[color=rgba(0, 0, 0, 0.85)]ATmega16 定时器 1 为 16 位定时器,可通过设置 CTC 或快速 PWM 模式,配置预分频器及 OCR1A/B 值实现定时。
classroom 发表于 2025-7-30 17:10 | 显示全部楼层
ATmega16的定时器1时钟源由TCCR1B寄存器的CS12:CS10位控制。若未正确配置,可能导致实际计数频率低于预期。
flycamelaaa 发表于 2025-7-30 18:10 | 显示全部楼层
检查定时器时钟源与分频系数配置是否正确。
powerantone 发表于 2025-7-30 18:11 | 显示全部楼层
定时器模式配置错误?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

20

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部