还是PIC12F1572,某个io 输出脉冲信号。io置高,置低都是立即数给寄存器,电平竟然要16us才变化。用的内部时钟,根据手册,时钟频率可到32M。大概计算,io置高置低,执行时间应该在0.4us左右。再怎么延迟也不会16us。后来看到手册写的最小指令周期125ns。可能是时钟的配置没有到最大。 程序中只有CONFIG1,CONFIG2寄存器的配置。// CONFIG1
#pragma config FOSC = INTOSC // (INTOSC oscillator; I/O function on CLKIN pin)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
都是位操作。 把时钟频率配置位的操作加上,编译出错。 不习惯开发环境,go to definition 也go不了。干脆就看手册,把寄存器的名字复制过来。在main函数里赋值。配成最高频率。编译一下,竟然通过了。 下载运行。我靠。波形变窄啦。实际波形,高低电平跳变大概500ns。比较接近理论值了。
|