请教STM8S单片机IO口输出波形的问题
单片机输出的波形按理是0或1高低电平变化的,不会有中间任何电平出现的。但我最近发现一个产品,用显示器观看一个IO口对单片机地输出的波形居然有0.25V的中间电平的波形输出,请看下图,这是什么原因呢?单片机的型号是STM8S103F3P6。请教各位大神了。最近在做这个可控硅调光器,请问各位大神,有什么办法可以用外部的上升和下降沿去同步控制硬件的PWM输出呢?我现在用外部中断来将100Hz的硬件PWM内部计数器清零和开始计数,同时给个标志位,在TIM4定时中断里输出PWM信号,同时计时到9.5毫秒后停止PWM内部计算器计数。这方法虽然可以,但输出的PWM信号有点漂浮不稳定。如果不用外部中断去控制硬件PWM,100Hz的硬件PWM输出是十分稳定的。看技术文档17.4.5里有个触发同步的,不知怎么用?
//exti
@far @interrupt void EXTI3_PORTD_TROGGER_IRQHandler(void)// 下降上升沿外部触发
{
EXTI_flag=TRUE;
TIM1_CNTRH = 0x00;
TIM1_CNTRL = 0x00;
TIM1_CR1|= 0x01;
return;
}
////////////////////////////////////////////////////////////
/////////////////////中断时间 20us//////////////////////
////////////////////////////////////////////////////////////
//tim4 interrupt
@far @interrupt void TIM4_UPD_OVF_IRQHandler(void)
{
TIM4_SR = 0x00;//clear 0
if(EXTI_flag)
{
send_pwm_out();
time2++;
if (time2==490) //
{
time2=0;
EXTI_flag=FALSE;
PD_CR2 |= (1<<GPIO_TB);//开外部中断
TIM1_CR1&= 0xFE;
}
}
} 本帖最后由 toofree 于 2018-2-26 23:38 编辑
把测试的现场拍个图片。
示波器的“地”接在哪个位置?有没有连到MCU地管脚处,还是在电源入输入端?
这个IO外部驱动的什么电路,什么情况下置1?有没有其它相关的判断条件。正常最简的闪灯灯程序,是不应该出现这个“0.25V”的。
原理图是什么样的?程序是直接驱动输出1和0吗?
如果是LCD驱动,就有可能 这个也要看看你外部的电路的,和程序的设置 用的哪个IO,是不是开漏? 应该是先用了开漏输出,然后用了硬件PWM输出(即推挽输出),IO口外部电路如下图: 谢谢分享! 楼主,请问你查看STM8芯片引脚输出波形图的软件是什么啊? 楼主,请问你查看STM8芯片引脚输出波形图的软件是什么啊?
页:
[1]