请教, 我在测试8G系列-PCA相关程序时存在问题
本帖最后由 DebugLab 于 2024-8-26 09:23 编辑我在测试<STC8G系列-PCA相关程序>捕捉天地飞接收机pwm数据时, 打印不出任何信息, 请问这一般是什么原因? (我使用的是stc8g-8pin单片机)
建议使用高级PWM同时捕捉周期和占空比 先确认你用的芯片是否有PCA功能
STC8G1K08-8PIN的芯片是没有PCA功能的
STC8G1K08A-8PIN的芯片才有PCA功能
乘风飞扬 发表于 2024-8-26 10:04
先确认你用的芯片是否有PCA功能
STC8G1K08-8PIN的芯片是没有PCA功能的
我是用的是stc8g1k08a-8pin是有pca功能的, 我用它产生了pwm, 我的测试情况是, 放在接收机上之后, 我插拔的瞬间会有数据打印出来 DebugLab 发表于 2024-8-26 09:26
建议使用高级PWM同时捕捉周期和占空比
stc8g的高级pwm可以在哪里查找到例程? 我测试一下, 万分感谢 DebugLab 发表于 2024-8-26 09:26
建议使用高级PWM同时捕捉周期和占空比
我查了一下, 我使用的芯片不支持这个功能, 还是非常感谢 peitianyu 发表于 2024-8-26 11:21
stc8g的高级pwm可以在哪里查找到例程? 我测试一下, 万分感谢
高级pwm8H才有
DebugLab 发表于 2024-8-26 11:31
ok, 感谢, 我去查一下相关芯片, 玩玩
以前写的15W104读天地飞7通道PPM接收机的程序(还带低压报警,之前想做遥控鸭子玩来着,还定做了鸭子叫声的语音OTP芯片):
#include <STC15F2K60S2.H>
#define LVDF 0x20
#define PWM P33
#define CH1 P30
#define CH4 P31
#define CH5 P34
#define CH6 P35
unsigned char Channel;
unsigned int Counter;
unsigned int On_Time;Off_Time,Max_Time,Min_Time;
unsigned int Ch1,Ch2,Ch3,Ch4,Ch5,Ch6,Ch7,Ch8;
void Init(void)
{
P3M0=0x3b;
P3M1=0x00;
PWM=0;
CH5=0;
CH6=1;
TMOD=0x01;
IT0=1;
TH0=0;
TL0=0;
PCON&=~LVDF;
EA=1;
EX0=1;
ELVD=1;
Max_Time=2000;
Min_Time=1000;
}
void Time(void)
{
Counter=TH0;
Counter<<=8;
Counter=Counter+TL0;
}
void main(void)
{
Init();
while(1)
{
On_Time=Ch3-Min_Time;
if(Ch3>=Max_Time&&Ch3<(Max_Time+1500))
On_Time=Max_Time-Min_Time;
if(On_Time>=(Max_Time+1500))
On_Time=0;
Off_Time=Max_Time-Min_Time-On_Time;
if(PWM==1)
{
PWM=0;
while(Off_Time--);
}
else
{
PWM=1;
while(On_Time--);
}
if(900<Ch5&&Ch5<1400)
CH5=1;
if(1600<Ch5&&Ch5<2100)
CH5=0;
if(900<Ch6&&Ch6<1400)
CH6=1;
if(1600<Ch6&&Ch6<2100)
CH6=0;
}
}
void Int0(void) interrupt 0
{
TR0=0;
Time();
if(Counter>3000)
{
Channel=0;
}
else
{
Channel++;
}
switch(Channel)
{
case 0:
CH1=1;
break;
case 1:
Ch1=Counter;
CH1=0;
// CH2=1;
break;
case 2:
Ch2=Counter;
// CH2=0;
// CH3=1;
break;
case 3:
Ch3=Counter;
// CH3=0;
CH4=1;
break;
case 4:
Ch4=Counter;
CH4=0;
// CH5=1;
break;
case 5:
Ch5=Counter;
// CH5=0;
// CH6=1;
break;
case 6:
Ch6=Counter;
// CH6=0;
// CH7=1;
break;
case 7:
Ch7=Counter;
// CH7=0;
// CH8=1;
break;
case 8:
Ch8=Counter;
// CH8=0;
break;
}
TH0=0;
TL0=0;
TR0=1;
}
//void LVD() interrupt 6
//{
// PCON&=~LVDF;
// CH6=1;
//}
页:
[1]
2