久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2405|回復: 5
收起左側

STC8H單片機PWM捕獲問題

[復制鏈接]
回帖獎勵 4 黑幣 回復本帖可獲得 4 黑幣獎勵! 每人限 1 次
ID:773929 發表于 2023-8-7 12:41 | 顯示全部樓層 |閱讀模式
請教各位大佬,使用STC8H8K64單片機的PWM捕獲功能捕獲紅外接收頭的脈沖,也可以說是任意脈沖,但是遇到了一些問題,根據stc isp軟件商的例程,我將捕獲高電平脈沖寬度和捕獲低電平寬度結合起來,這樣就可以測出高低電平脈沖寬度了,但是測試的時候發現單獨測高電平正常,測到了23個,低電平也正常,但是結合起來后,高低電平一共才測到二十幾個,而且數值還不正確,求大佬解答!
程序:

#include "stc8H.h"
#include "intrins.h"
#include <stdio.h>
#include "uart.h"

#define VAL 300
unsigned int captures[VAL];
unsigned int num = 0;
unsigned int Overflow = 0; //溢出次數

void IR()
{
    P1M0 = 0x00;
    P1M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;

    P_SW2 = 0x80;

    PWM1_PS = 0x05;

    //(CC1捕獲TI1上升沿,CC2捕獲TI1下降沿)
    PWMA_CCER1 = 0x00;
    PWMA_CCMR1 = 0x01;                          //CC1為輸入模式,且映射到TI1FP1上
    PWMA_CCMR2 = 0x02;                          //CC2為輸入模式,且映射到TI1FP2上
    PWMA_CCER1 = 0x11;                          //使能CC1/CC2上的捕獲功能
    PWMA_CCER1 |= 0x00;                         //設置捕獲極性為CC1的上升沿
    PWMA_CCER1 |= 0x20;                         //設置捕獲極性為CC2的下降沿
    PWMA_CR1 = 0x01;

    PWMA_IER = 0x04;                            //使能CC2捕獲中斷
                PWMA_IER |= 0x02;                            //使能CC1捕獲中斷
    EA = 1;
}




void PWMA_ISR() interrupt 26
{
    unsigned int cnt_l;
                unsigned int cnt_h;
        

    if (PWMA_SR1 & 0x02)
    {
        PWMA_SR1 &= ~0x02;

        cnt_l = (PWMA_CCR1 - PWMA_CCR2)/6;            //差值即為低電平寬度  cnt/時鐘頻率 = 脈寬(us)
                                
                                
                                UartSendUint((unsigned int)cnt_l);
                                UartSendString("-low\r\n");
                        
    }
               
                 

    if (PWMA_SR1 & 0x04)
    {
        PWMA_SR1 &= ~0x04;

        cnt_h = (PWMA_CCR2 - PWMA_CCR1)/6;            //差值即為高電平寬度
        UartSendUint((unsigned int)cnt_h);
                                UartSendString("-high\r\n");
    }
}


void main()
{
        IR();
  UartInit();
  //UartSendString("Starting\r\n");
        //UartSendUint(1211);
        while(1)
        {
               
        }
}

1.png
2.png
3.png
回復

使用道具 舉報

ID:773929 發表于 2023-8-7 15:52 | 顯示全部樓層
找到問題了,串口發送數據的時間影響了測量
回復

使用道具 舉報

ID:126987 發表于 2023-8-7 16:34 | 顯示全部樓層
串口發送數據會影響PWM測量,需要把PWM的中斷優先級提高到0。
回復

使用道具 舉報

ID:1034262 發表于 2023-8-7 20:47 | 顯示全部樓層
范莉萍 發表于 2023-8-7 15:52
找到問題了,串口發送數據的時間影響了測量

不明白,串口發送數據怎么影響了測量?都用的中斷,各自不影響的。對MCU來說,這兩個任務都是很簡單的任務,不需要消耗多少CPU時間的。
回復

使用道具 舉報

ID:773929 發表于 2023-8-9 11:26 | 顯示全部樓層
coody_sz 發表于 2023-8-7 20:47
不明白,串口發送數據怎么影響了測量?都用的中斷,各自不影響的。對MCU來說,這兩個任務都是很簡單的任 ...

串口發送用的不是中斷,接收用了中斷,算了一下,發送這些字符得1ms左右
回復

使用道具 舉報

ID:1034262 發表于 2023-8-9 14:35 | 顯示全部樓層
范莉萍 發表于 2023-8-9 11:26
串口發送用的不是中斷,接收用了中斷,算了一下,發送這些字符得1ms左右

有中斷不用,中斷發送效率高,一個字節只需要2us左右就可以裝載完。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产91丝袜在线熟 | 国产欧美精品一区二区色综合朱莉 | 91精品久久久久久久久久 | 色悠悠久| 久久这里有精品 | 成人精品鲁一区一区二区 | 久久99深爱久久99精品 | 日韩免费av一区二区 | 国产精品mv在线观看 | 欧美激情一区二区三区 | 精品国产乱码久久久久久蜜臀 | 在线观看国产视频 | 亚洲欧洲视频 | 狠狠涩| 99re视频精品 | 成人精品一区亚洲午夜久久久 | 毛片黄片| jlzzxxxx18hd护士| 成人av免费网站 | 日本午夜在线视频 | 久亚州在线播放 | 精品一二区 | 午夜爽爽爽男女免费观看影院 | 色999视频 | 中文成人在线 | 一区二区三区中文字幕 | 国产午夜视频 | 国产毛片毛片 | 97人澡人人添人人爽欧美 | 欧美日韩在线国产 | 国产福利视频导航 | 自拍偷拍中文字幕 | 在线看免费| 国产色在线 | 欧美一区二区免费 | 精品无码久久久久久久动漫 | 日韩高清av | 日韩久久成人 | 中文字幕 亚洲一区 | 欧美日韩在线精品 | 亚洲成人一区二区在线 |