[PIC®/AVR®/dsPIC®产品] ATMEGA4809的时钟与定时器

[复制链接]
 楼主| gaoyang9992006 发表于 2025-1-9 17:01 | 显示全部楼层 |阅读模式
本帖最后由 gaoyang9992006 于 2025-1-9 19:18 编辑

用过传统8051的都知道,8051的时钟是由外部晶振提供的时钟源,因此选择不同规格的晶振可以得到不同速度的时钟,而ATMEGA4809具备内置的时钟源,且可选配置,并可以通过不同的分频设置让系统获得不同速率的时钟。单片机的定时器由可以在时钟的驱动下,进行计数,用来准确的计时。
接下来给大家介绍如何在MCC下配置时钟源与定时器
所有的定时器都是由时钟源驱动的,作为计数器时候由外部时钟(或称为脉冲)驱动。在MCC里可以看到该型号具备三种定时器:RTC、TCA、TCB,具体内容可以看该芯片的用户参考手册


作为定时器使用时候时钟都是有系统时钟提供,系统时钟的配置方法如下图所示


上图的配置可以将系统时钟设置为1MHz
系统自带的延时函数也是调用的系统时钟作为参考依据以实现1ms的延时或者1us的延时
当系统时钟配置不同的时候,MCC生成的代码会自动修改相关的宏,以匹配设置的系统时钟,参考下方两种不同的系统时钟配置时候生成的代码

你知道了这些就可以开始时钟定时器了
例如我们使用定时器TCA0,我们将系统时钟设置为2MHz,就可以以500ns为单位进行计量,如果设置为1Mhz,TCA0就可以以1us为单位进行计时。
例如我们这里以2MHz作为系统时钟,以500ns为单位计时20ms

下拉菜单,还有更多选项可以设置,例如使能定时器溢出中断,生成ISR中断处理函数

然后Generate,生成MCC工程代码,完善main.c
tca相关生成的mcc库函数和头文件查看你tca0.h/.c
  1. #include "mcc_generated_files/system/system.h"
  2. #include"mcc_generated_files/timer/delay.h"

  3. /*
  4. Main application
  5. */
  6. unsigned int flag=0;
  7. unsigned int timer_num=0;
  8. unsigned int timer_flag=0;
  9. void sw_int_handle(void)
  10. {
  11. flag=flag?0:1;
  12. }
  13. void tca_int_handle(void)
  14. {
  15. timer_num++;
  16. if(timer_num>=50)
  17. {
  18. timer_flag=1;
  19. timer_num=0;
  20. }
  21. }

  22. int main(void)
  23. {

  24. SYSTEM_Initialize();
  25. SW_SetInterruptHandler(sw_int_handle);
  26. TCA0_OverflowCallbackRegister(tca_int_handle);
  27. Enable_global_interrupt();
  28. while(1)
  29. {
  30. if(flag)
  31. {
  32. if(timer_flag==1)
  33. {
  34. YELLOW_LED_Toggle();
  35. timer_flag=0;
  36. }
  37. // DELAY_milliseconds(500);
  38. }
  39. else
  40. {
  41. YELLOW_LED_SetHigh();
  42. }
  43. }
  44. }
上述代码通过使用定时器TCA0实现延时500ms,用于判断是否切换LED状态。保留了IO中断熄灭LED功能。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
wanduzi 发表于 2025-1-9 19:36 | 显示全部楼层
楼主这么一讲解,时钟与定时器就简单多了,其他看不懂的选项查一下英语词典也可以解决,如果MCC和IDE支持中文就好了
21mengnan 发表于 2025-1-9 19:46 | 显示全部楼层
RTC如何使用,建议下一贴讲解一下,看看RTC是如何用的,还不知道AVR由RTC呢。
huangcunxiake 发表于 2025-1-10 15:08 | 显示全部楼层
使用MCC开发,代码是如此的优雅。
huangcunxiake 发表于 2025-1-10 15:08 | 显示全部楼层
想知道蓝色Timer如何使用。
yiy 发表于 2025-1-26 15:36 | 显示全部楼层
一共五个定时器,如果全部配置上不知道什么效果
jiekou001 发表于 2025-1-26 18:56 | 显示全部楼层
时钟貌似没arm的复杂,更容易做。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2049

主题

16370

帖子

221

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