欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 656|回復: 8
打印 上一主題 下一主題
收起左側

PWM兩通道不能同時用?

[復制鏈接]
跳轉到指定樓層
樓主
ID:1167397 發表于 2026-2-18 09:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void PCA_Init(void)               
{        CL = 0;                        
        CH = 0;
        CMOD = 0x0E;                    // 設置PCA時鐘頻率 SYSclk/8
        CCAP0H = CCAP0L = 0x3F;         //
        CCAPM0 = 0x42;                  //
        PCA_PWM0 = 0x03;
        CCAP1H = CCAP1L = 0x80;         //
        CCAPM1 = 0x42;                  //PCA工作模式PWM無中斷
        PCA_PWM1 = 0x03;                                                //
        CR = 1;                                                                         //PCA計數器啟動  CCON.6
        
//        CMOD|=1<<0;                            //PCA溢出中斷使能   
}

型號STC12C5A60S2  測試發現PWM兩通道不能同時打開,只能一個一個的來,不知問題出現哪里

用示波器觀賽的
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1133081 發表于 2026-2-19 09:05 | 只看該作者
這PWM初始化程序沒有問題,查查應用程序。
回復

使用道具 舉報

板凳
ID:1167397 發表于 2026-2-19 09:18 | 只看該作者
沒有什么應用,只是功能測試。用示波器觀察發現的問題
回復

使用道具 舉報

地板
ID:1133081 發表于 2026-2-19 11:41 | 只看該作者
YYYYYU 發表于 2026-2-19 09:18
沒有什么應用,只是功能測試。用示波器觀察發現的問題

仔細看了一下是模式設置錯誤 PCA_PWM0 = 0x03;  實際只有3種設置  PCA_PWM0 = 0x00 //8位PMW,PCA_PWM0 = 0x40 //7位PMW,PCA_PWM0 = 0x80 //6位PMW。
回復

使用道具 舉報

5#
ID:1167397 發表于 2026-2-19 13:48 | 只看該作者
發表于 2026-2-19 11:41
仔細看了一下是模式設置錯誤 PCA_PWM0 = 0x03;  實際只有3種設置  PCA_PWM0 = 0x00 //8位PMW,PCA_PWM0 = ...

你說的是什么型號。STC12C5A60S2 PCA_PWMx只有bit1 bit0 兩個位, 0x80怎么設置。
不過資料的資料太簡單,跟沒說一樣!
回復

使用道具 舉報

6#
ID:1133081 發表于 2026-2-19 17:16 | 只看該作者
YYYYYU 發表于 2026-2-19 13:48
你說的是什么型號。STC12C5A60S2 PCA_PWMx只有bit1 bit0 兩個位, 0x80怎么設置。
不過資料的資料太簡單 ...

手上沒有STC12C5A60S2,是用IAP15W4K58S測試的,兩者PWM模式設置確有區別。
回復

使用道具 舉報

7#
ID:1161211 發表于 2026-2-20 00:17 | 只看該作者
PWM應配置IO選擇和IO輸出允許,仔細看看手冊
回復

使用道具 舉報

8#
ID:876947 發表于 2026-2-20 13:12 | 只看該作者
只要足夠的I/O ,N個通道都可以呀!
回復

使用道具 舉報

9#
ID:1167529 發表于 2026-2-20 16:59 | 只看該作者
核心問題定位與解決方案

你遇到的STC12C5A60S2兩路PCA PWM無法同時輸出,核心問題出在CCAPMn寄存器配置錯誤,同時補充其他常見坑的排查方案。

 

一、核心錯誤:PWM模式未正確使能

你當前代碼中  CCAPM0 = 0x42 、 CCAPM1 = 0x42  是錯誤的:

-  0x42  二進制為  0100 0010 ,對應STC12的CCAPMn寄存器定義:
- Bit2(PWMn,PWM模式使能位)= 0,根本沒有開啟PWM模式
- 僅開啟了Bit1(ECOMn,比較器使能)和Bit6(CAPPn,上升沿捕獲),屬于捕獲/比較模式,并非PWM輸出模式

正確配置:
要開啟PWM模式,必須同時置1 ECOMn(Bit1) 和 PWMn(Bit2):

- 無需捕獲功能: CCAPMn = 0x06 (二進制  0000 0110 )
- 保留上升沿捕獲(和你原代碼兼容): CCAPMn = 0x46 (二進制  0100 0110 )

 

二、修正后的完整初始化代碼

c
  
void PCA_Init(void)
{
    CL = 0;
    CH = 0;
    CMOD = 0x0E;  // PCA時鐘 = 系統時鐘/8,你的配置正確
   
    // 通道0 PWM配置(對應IO:P1.3)
    CCAP0H = 0x3F;  // 僅設置高8位,硬件會自動加載到CCAP0L,無需手動賦值CCAP0L
    CCAPM0 = 0x46;  // 修正:開啟PWM模式+比較器+上升沿捕獲,無中斷
    PCA_PWM0 = 0x00; // 修正:默認8位PWM(你原代碼0x03是10位模式,普通場景用8位更穩定)
   
    // 通道1 PWM配置(對應IO:P1.4)
    CCAP1H = 0x80;  // 僅設置高8位
    CCAPM1 = 0x46;  // 修正:和通道0一致,正確開啟PWM模式
    PCA_PWM1 = 0x00; // 8位PWM模式
   
    CR = 1;  // 啟動PCA計數器,你的配置正確
    // CMOD|=1<<0;  // 無需溢出中斷,保持注釋即可
}
 

 

三、其他必查的常見坑

1. IO口配置確認
STC12C5A60S2的PCA輸出引腳是固定的:
- CEX0(通道0)→ P1.3
- CEX1(通道1)→ P1.4
確保這兩個IO口沒有被其他功能占用,且沒有被設置為高阻輸入。如需更強驅動能力,可設置為推挽輸出:

c
  
P1M0 |= 0x18; // P1.3、P1.4 推挽輸出
P1M1 &= ~0x18;
 
2. 10位PWM模式注意事項
如果你確實需要10位PWM(保留 PCA_PWMn=0x03 ),則占空比計算需要匹配10位寬度,不能直接用8位的 0x3F 、 0x80 ,否則會出現占空比異常,甚至看起來無輸出。
3. 占空比測試建議
調試時先將兩路占空比都設為50%( CCAPnH=0x80 ),方便示波器快速確認是否有輸出,避免占空比極端值導致誤判。

 

四、為什么你之前“單個通道能輸出”

大概率是你測試單通道時,不小心修改了CCAPMn的配置(比如誤寫成0x46),或者單通道下比較模式的翻轉輸出被你誤判為PWM輸出,雙路時配置沖突導致徹底無輸出。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表