完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
int main(void)
{ CLI(); DDRB=_BV(PB0); PORTB=_BV(PB0); DDRB=_BV(PB1); PORTB=_BV(PB1); DDRB=_BV(PB2); PORTB=_BV(PB2); TCNT0=0xF7; TCCR0B=_BV(CS00); tiMSK0=_BV(TOIE0); SEI(); while(1); } 我是用的是ATmega48V,按照程序我是想对1M的时钟进行9分频,具体体现在 TCNT0=0xF7;,可是现在我无论怎么改动 TCNT0=0xF7;这个语句,如改成 TCNT0=0xFF;或者 TCNT0=0x00;都没有反应,默认256分频,这是为什么呀?望各位大神指导,小女子不胜感激! |
|
相关推荐
5个回答
|
|
|
|
|
|
这个不能改,要改的话,还要其它寄存器的配合设置
|
|
|
|
我用的timer0,所以设置TCNT0应该是相对应的,不知道问题在哪里? void timer0_init(void) { TCCR0B=0x00; MCUCR=0X00; TCCR0A=0x00; TIFR0=0x01; TIMSK0=_BV(TOIE0); TCCR0B=_BV(CS00); TCNT0=0xF7; } |
|
|
|
能详细一点吗?谢谢。 我用的timer0的溢出功能: void timer0_init(void) { TCCR0B=0x00; MCUCR=0X00; TCCR0A=0x00; TIFR0=0x01; TIMSK0=_BV(TOIE0); TCCR0B=_BV(CS00); TCNT0=0xF7; } |
|
|
|
当TCCR0!=0x00任何模式下,只要MCU一上电,T/C就开始计时工作。TCCR0主要是定时器的预分频和波形模式、比较匹配模式的设置,这个模块是T/C0、T/C1共用的一个模块,但可以有不同的分频设置。 定时器是如何进行工作的:三个重要参数:TCNT0、OCR0,TIMSK,TCNT0是设置定时器的计时初始值,定时器开始工作后立即从TCNT0一直累加到0XFF,累加过程所消耗的时间就是我们需要的定时时间;OCR0是一个比较设定值,当TCNT0的值累计到OCR0时(TNCT0==OCR0),如果有开启比较匹配中断功能,那么此时就会产生比较中断,所以,OCR0的值一般都是设置在TCNT0初始值和0XFF之间,之外的任何值都不会产生比较中断。TIMSK是一个中断使能位设置,就是我们需要计时器溢出中断或是比较匹配中断功能或两者都要时就对TIMSK的相应寄存器位进行设置。 定时器的中断使用,一个定时器可以有两个中断资源可利用,一个只溢出中断,另一个是比较匹配中断,如上面2所说的。想说明的溢出中断子程序内一般要有重载TCNT0的初始值,否则,TCNT0就会从0X00开始累加计数到0XFF,所耗费的时间就不我们想要的时间。比较中断就是当TCNT0==OCR0时,发生比较匹配中断;所以,中断子程序中一般只插入少量的处理代码,否则,会发生所谓的中断套嵌的现象,由于M16不支持中断套嵌,这样会使得中断子程序中的部分代码无法执行,严重时会造成系统崩溃。 TCNT0和OCR0的值换算:对于8bit的计时器,TCNT0一般可以由下面的公式换算: TCNT0=256-(TV*F)/N; TV: 所想要设定的定时时间,单位,us F:晶振频率(MHz) N: 分频因子 从上描述,你需要修改TCCR0来改变分频因子 举例说明: 1、选择定时器时钟分频系数,由TCCR0的CS01,CS01,CS00决定。 2、定时器计数器付初始值,TCNT0=61,TCNT0位8位寄存器,计数范围为0-255,付初始值61后,从61开始计数到255时产生溢出中断,赋初值后定时就开始工作。 3、定时时间计算: 每个计数时钟脉冲的时间T=1/f,f=晶振频率/分频系数,如晶振为8MHZ ,分频系数为1024,则定时器器时钟频率为 f=8000000HZ/1024 =7812.5HZ, 单个时钟脉冲时间: T=1/f=1/7812.5=0.128ms(毫秒),T/C0最大的计数值 为256, 最大计时时间为256*0.128ms=32.768ms 。 定时器初值计算公式:定时器初值=256- 定时时间/单个时钟脉冲时间: 如定时25ms, 初值=256- 25ms/0.128ms=256-195=61 4、设置代码如下,溢出中断方式 void timer0_init() { SREG = 0x80; //使能全局中断 TIMSK|=(1< // T/C0工作于普通模式,1024分频,定时器频率 = 8M/1024 =7812.5Hz TCCR0|=(1< TCNT0 = 61; //定时初值设置,定时时间 =(256-61)/7812.5=25ms } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1146 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程介绍之烧写所需镜像
1225 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写方法
675 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
1019 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核源代码的目录结构和文件说明
937 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 10:57 , Processed in 0.954292 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号