_奶咖君_ 发表于 2024-11-22 11:26:11

定时器中断里面做什么了

prxkuqfr 发表于 2024-11-22 11:26:40

_奶咖君_ 发表于 2024-11-22 11:14
第一个是内部的32K并不精准,,
第二个是随单片机的供电电压和当前的温度影响,手册里有图,,



我的问题不是内部时钟32k,准不准的问题。而且内部32k,我用的定时器0,为何定时器中断间隔会有1.5ms这么长,我的理解是32k,应该有30us左右的最小间隔中断。

_奶咖君_ 发表于 2024-11-22 11:28:03

prxkuqfr 发表于 2024-11-22 11:26
我的问题不是内部时钟32k,准不准的问题。而且内部32k,我用的定时器0,为何定时器中断间隔会有1.5ms这么 ...

问题是你主频就只有32K.....你算算执行一条指令需要多少时间

prxkuqfr 发表于 2024-11-22 11:29:30

/********************* Timer0中断函数************************/
void timer0_int (void) interrupt TIMER0_VECTOR//100us
{
P33 = ~P33;
}       
没做什么啊。就是IO变更。
24M,22.1184M设置定时器中断 100us间隔都是很准的。有点误差没关系。但是起码要大概准确的。

prxkuqfr 发表于 2024-11-22 11:32:49

_奶咖君_ 发表于 2024-11-22 11:28
问题是你主频就只有32K.....你算算执行一条指令需要多少时间

这个的确为难我了,定时器中断,自动重载,难道还需要很多指令吗?我感觉是自动重载应该花不了几个指令,而是单片机内部自动重载的。我现在实验一下,几个指令执行,需要多长时间。大概

prxkuqfr 发表于 2024-11-22 11:36:35

                for(i=0;i<600;i++)
                {
                          //P54 = ~P54;
                        P33 = ~P33;
                //        TX1_write2buff(0x03);       
                //        Timer_config(1);
                //delay_ms(100);
                }
哇靠,的确就这么简单都需要0.5ms 的时间间隔。

_奶咖君_ 发表于 2024-11-22 11:37:45

prxkuqfr 发表于 2024-11-22 11:36
for(i=0;i

还有就是你IO工作模式配置配置成推挽你再看看,,

prxkuqfr 发表于 2024-11-22 11:41:43

_奶咖君_ 发表于 2024-11-22 11:37
还有就是你IO工作模式配置配置成推挽你再看看,,

现在就是推挽输出的。不过应该和时间没关系。32k作为内部时钟用,指令执行,的确非常长的时间。

DebugLab 发表于 2024-11-22 12:22:36

prxkuqfr 发表于 2024-11-22 11:26
我的问题不是内部时钟32k,准不准的问题。而且内部32k,我用的定时器0,为何定时器中断间隔会有1.5ms这么 ...

还有指令执行的时间
页: 1 [2]
查看完整版本: Ai8g1k08 单片机 内部32K 时,定时器最小中断间隔