peitianyu 发表于 2024-8-26 00:24:32

请教, 我在测试8G系列-PCA相关程序时存在问题

本帖最后由 DebugLab 于 2024-8-26 09:23 编辑

我在测试<STC8G系列-PCA相关程序>捕捉天地飞接收机pwm数据时, 打印不出任何信息, 请问这一般是什么原因? (我使用的是stc8g-8pin单片机)

DebugLab 发表于 2024-8-26 09:26:49

建议使用高级PWM同时捕捉周期和占空比

乘风飞扬 发表于 2024-8-26 10:04:25

先确认你用的芯片是否有PCA功能
STC8G1K08-8PIN的芯片是没有PCA功能的

STC8G1K08A-8PIN的芯片才有PCA功能

peitianyu 发表于 2024-8-26 11:20:21

乘风飞扬 发表于 2024-8-26 10:04
先确认你用的芯片是否有PCA功能
STC8G1K08-8PIN的芯片是没有PCA功能的



我是用的是stc8g1k08a-8pin是有pca功能的, 我用它产生了pwm, 我的测试情况是, 放在接收机上之后, 我插拔的瞬间会有数据打印出来

peitianyu 发表于 2024-8-26 11:21:23

DebugLab 发表于 2024-8-26 09:26
建议使用高级PWM同时捕捉周期和占空比

stc8g的高级pwm可以在哪里查找到例程? 我测试一下, 万分感谢

peitianyu 发表于 2024-8-26 11:24:14

DebugLab 发表于 2024-8-26 09:26
建议使用高级PWM同时捕捉周期和占空比

我查了一下, 我使用的芯片不支持这个功能, 还是非常感谢

DebugLab 发表于 2024-8-26 11:28:08

peitianyu 发表于 2024-8-26 11:21
stc8g的高级pwm可以在哪里查找到例程? 我测试一下, 万分感谢

高级pwm8H才有

DebugLab 发表于 2024-8-26 11:31:39





peitianyu 发表于 2024-8-26 11:34:00

DebugLab 发表于 2024-8-26 11:31


ok, 感谢, 我去查一下相关芯片, 玩玩

DebugLab 发表于 2024-8-26 11:39:30


以前写的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
查看完整版本: 请教, 我在测试8G系列-PCA相关程序时存在问题