|
本帖最后由 peter1999516 于 2022-4-12 01:13 编辑
尝试过用millis函数了,不行
如下是我的中断子程序,大意就是每次执行if判定前进行ad采样,让后决定那几个数字口发出占空比100的伪pwm波(周期70us),但是ad采样还是会占用时间,使得输出波形看起来不是100,如何才能使得ad采样的执行在pwm波形发出的同时,最好是pwm周期的前1/5,小白求大佬指点。
void pwm() //中断子程序 pwm方波输出
{
do
{
int sensorvalue=analogRead(A0)/50;//ad程序,总是在判定哪个角发出对应方波前进行采样
if(sensorvalue>15)
{
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
delayMicroseconds(70);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
pwm_xunhuancishu=pwm_xunhuancishu+1;//用来退出中断用
// Approximately 10% duty cycle @ 1KHz
//标志位加1,每5个循环一个采集
}
else if(sensorvalue<10) //后期加入与或运算,满足合闸或者分闸需求。先与后或
{
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delayMicroseconds(70);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
pwm_xunhuancishu=pwm_xunhuancishu+1;
// Approximately 10% duty cycle @ 1KHz
}
}
while(pwm_xunhuancishu<10000);//这块为了方便观察室大概1s结束中断,后面会改成100ms
}
|
|