_奶咖君_ 发表于 2024-11-22 11:14
第一个是内部的32K并不精准,,
第二个是随单片机的供电电压和当前的温度影响,手册里有图,,
我的问题不是内部时钟32k,准不准的问题。而且内部32k,我用的定时器0,为何定时器中断间隔会有1.5ms这么长,我的理解是32k,应该有30us左右的最小间隔中断。 prxkuqfr 发表于 2024-11-22 11:26
我的问题不是内部时钟32k,准不准的问题。而且内部32k,我用的定时器0,为何定时器中断间隔会有1.5ms这么 ...
问题是你主频就只有32K.....你算算执行一条指令需要多少时间 /********************* Timer0中断函数************************/
void timer0_int (void) interrupt TIMER0_VECTOR//100us
{
P33 = ~P33;
}
没做什么啊。就是IO变更。
24M,22.1184M设置定时器中断 100us间隔都是很准的。有点误差没关系。但是起码要大概准确的。
_奶咖君_ 发表于 2024-11-22 11:28
问题是你主频就只有32K.....你算算执行一条指令需要多少时间
这个的确为难我了,定时器中断,自动重载,难道还需要很多指令吗?我感觉是自动重载应该花不了几个指令,而是单片机内部自动重载的。我现在实验一下,几个指令执行,需要多长时间。大概 for(i=0;i<600;i++)
{
//P54 = ~P54;
P33 = ~P33;
// TX1_write2buff(0x03);
// Timer_config(1);
//delay_ms(100);
}
哇靠,的确就这么简单都需要0.5ms 的时间间隔。 prxkuqfr 发表于 2024-11-22 11:36
for(i=0;i
还有就是你IO工作模式配置配置成推挽你再看看,, _奶咖君_ 发表于 2024-11-22 11:37
还有就是你IO工作模式配置配置成推挽你再看看,,
现在就是推挽输出的。不过应该和时间没关系。32k作为内部时钟用,指令执行,的确非常长的时间。 prxkuqfr 发表于 2024-11-22 11:26
我的问题不是内部时钟32k,准不准的问题。而且内部32k,我用的定时器0,为何定时器中断间隔会有1.5ms这么 ...
还有指令执行的时间
页:
1
[2]