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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC15Fxx系列單片機硬件PWM利用定時器2溢出脈沖作為計數器計數脈沖問題?

[復制鏈接]
跳轉到指定樓層
樓主
ID:232366 發表于 2023-3-26 10:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下面是一個STC15單片機的硬件輸出PWM程序其硬件PWM的計數脈沖我設置的是使用定時器2的中斷溢出脈沖作為計數脈沖
自己琢磨了好久目前功能是實現了但是計算來計算去都搞清楚  最終的PWM頻率是怎么來的目前輸出頻率是20HZ邏輯分析
儀測試出來的想問問論壇有經驗的老鐵幫忙解答一下?

#define CYCLE   0x1f4L                //定義PWM周期(最大值為32767)
#define DUTY    50L                        //定義占空比為50%


/*---------------------------------------------------------------------*/
/*STC15Fxx 系列 單片機硬件PWM利用定時器2溢出脈沖作為計數器計數脈沖實例 */
/*--------工作頻率為12MHz-----------------------------*/

void Timer2Init(void)        //100微秒@12.000MHz"中斷周期為200us"
{
        AUXR&=0xFB;                //定時器時鐘12T模式
        T2L = 0x9C;                //設置定時初始值
        T2H = 0xFF;                //設置定時初始值
        AUXR|=0x10;                //定時器2開始計時
        IE2&=0xFB;                //允許定時器2申請中斷
        IE2|=0x04;                //允許定時器2申請中斷
        EA=1;                        //允許所有的中斷源申請中斷
}

void PWM_INIT()//STC15Fxx 系列 輸出任意周期和任意占空比的PWM初始化函數
{
        P_SW2|=0x80;//置1"EAXSFR"允許訪問RAM隨機存儲器區的特殊功能寄存器
        PWMCFG=0x00;//(置0"CBTADC位不使能ADC轉換")(置0"C2INI使能PWM2端口初始化電平為0")
        PWMCR=0x01;//置0"ENPWM"(先關閉不啟動計時總控位)        "置1"ENC20"(使能PWM2通道口為PWM輸出受波形發生器控制)"
        PWMC=CYCLE;//設置PWM周期
        PWMCKS|=0x10;//(置"1" "SELT2")時鐘來源定時器T2的溢出脈沖 其他位保持不變
        //占空比為(PWM2T2-PWM2T1)/PWMC
        PWM2T1=0x0000;//設置PWM2第1次反轉的PWM計數
        PWM2T2=CYCLE*DUTY/100;//設置PWM2第2次反轉的PWM計數
        PWM2CR&=0xF7;//選擇PWM2輸出到P2.7,其他功能不使能
        PWM2CR|=0x08;//選擇PWM2輸出到P2.7,其他功能不使能
        PWMCR|=0x80;//最后使能"ENPWM"總控位使內部計數器開始計數(必須全部特殊功能寄存器設置完畢后才可以使能此位)
        P_SW2&=~0x80;//置0"EAXSFR"禁止訪問RAM隨機存儲器區的特殊功能寄存器
}

void Timer2_Interrupt_Service(void) interrupt 12
{
        P30=~P30;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1034262 發表于 2023-3-26 11:57 | 只看該作者
用Timer2做PWM時鐘不要開中斷。
回復

使用道具 舉報

板凳
ID:232366 發表于 2023-3-26 13:37 來自手機 | 只看該作者
coody_sz 發表于 2023-3-26 11:57
用Timer2做PWM時鐘不要開中斷。

已經關了  開了貌似也不影響  就是為了調試用。主要的問題是比如我要調頻率時應該怎么調?使用定時器溢出脈沖作為計數脈沖怎么映射到PWM的過程到最后得出的頻率計算的過程是啥樣的?
回復

使用道具 舉報

地板
ID:161164 發表于 2023-4-1 10:53 | 只看該作者
頻率=1/(中斷時間*PWM周期)
以你的代碼作例子
頻率=1/(100微秒 * CYCLE) = 1/(100微秒 * 0x1f4) = 1/(50000微秒) = 20hz
要調頻率,可以改變定時器2中斷時間(T2L/T2H)如10us
頻率=1/(10微秒 * CYCLE) = 1/(10微秒 * 0x1f4) = 1/(5000微秒) = 200hz
回復

使用道具 舉報

5#
ID:232366 發表于 2023-4-2 10:23 | 只看該作者
lkc8210 發表于 2023-4-1 10:53
頻率=1/(中斷時間*PWM周期)
以你的代碼作例子
頻率=1/(100微秒 * CYCLE) = 1/(100微秒 * 0x1f4) = 1/(500 ...

感謝老鐵耐心回復 我去計算一下過程
回復

使用道具 舉報

6#
ID:232366 發表于 2023-4-2 10:55 | 只看該作者
lkc8210 發表于 2023-4-1 10:53
頻率=1/(中斷時間*PWM周期)
以你的代碼作例子
頻率=1/(100微秒 * CYCLE) = 1/(100微秒 * 0x1f4) = 1/(500 ...

想問問您式中寫道:頻率=1/(10微秒 * CYCLE) = 1/(10微秒 * 0x1f4) = 1/(5000微秒) = 200hz
請問CYCLE這個時鐘是哪里的的時鐘????定時器經過對系統時鐘分頻后的時鐘還是????
首先很感謝您對我的帖子精心回復。請問能不能將上面的式子拆分一下理解 感謝感謝。
回復

使用道具 舉報

7#
ID:161164 發表于 2023-4-2 16:10 | 只看該作者
SHANWAZI 發表于 2023-4-2 10:55
想問問您式中寫道:頻率=1/(10微秒 * CYCLE) = 1/(10微秒 * 0x1f4) = 1/(5000微秒) = 200hz
請問CYCLE這 ...

cycle是計時數
在代碼開頭處定義了
數值含義是12Mhz 12T: 1 = 1us
12MHz 1T: 1= 1/12 us
24MHz 12T: 1= 12/24 * 1us = 0.5us
回復

使用道具 舉報

8#
ID:232366 發表于 2023-4-2 16:39 | 只看該作者
lkc8210 發表于 2023-4-2 16:10
cycle是計時數
在代碼開頭處定義了
數值含義是12Mhz 12T: 1 = 1us

十分感謝老鐵的耐心回復與解答。我先去理解理解!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产免费播放视频 | 中文字幕精品一区 | 看黄在线 | 国内毛片毛片毛片毛片 | 中文一级片 | 99精品久久久久久 | 福利在线看 | 亚洲精品一区二区网址 | 成年人视频免费在线观看 | 国产福利在线小视频 | 日日天天 | 久久精品二区 | 在线一区观看 | 亚洲综合久久网 | 久久久欧洲 | 欧美不卡视频 | 日韩精品久久 | 在线日韩视频 | 欧美色综合天天久久综合精品 | www.成人久久 | 精品一区在线 | 国产成人精品一区二 | 欧美三区视频 | 亚洲高清在线视频 | 日韩在线h | 97超碰免费 | 免费视频一区二区 | 亚洲精品国产电影 | 日韩中文字幕视频在线观看 | 精品二区视频 | 91五月婷蜜桃综合 | 亚洲美乳中文字幕 | 欧美一级在线观看 | 在线欧美激情 | 亚洲免费在线 | 欧美一区二区三区在线观看 | 日韩精品一区二区三区中文字幕 | 国产激情免费视频 | 国产精品一区一区三区 | 日本免费网 | 麻豆精品一区二区三区在线观看 |