找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 3316|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

SEC15W PCA/PWM驅(qū)動(dòng)步進(jìn)電機(jī)問題

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 9 黑幣 回復(fù)本帖可獲得 1 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:76158 發(fā)表于 2016-7-15 07:58 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
想采用STC15W408AS的 PCA/PWM來驅(qū)動(dòng)步進(jìn)電機(jī)
PCA的時(shí)鐘源采用定時(shí)器的溢出率作為PCA的時(shí)鐘源
目前,輸出頻率以及PWM都正常,唯獨(dú)就是有一個(gè)地方出現(xiàn)了問題,請(qǐng)版主或者各位看下,哪里出了問題
首先看代碼:
#include<STC15F2K60S2.H>          //24MHZ
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar i=2;
uint num,x,y;
bit fig=0;

void pwminit()  //初始化PWM模塊與系統(tǒng)
{
        AUXR=0x80;         //定時(shí)器時(shí)鐘頻率為1T模式
        TMOD=0X02;         //定時(shí)器為8位自動(dòng)重裝 模式
        TH0=160;         //初值設(shè)定 定時(shí)器溢出率為 256-TH0/TL0的值
        TL0=160;         //初值設(shè)定                 定時(shí)器0溢出頻率為24000000/(256-160)=250000Hz

        
        CMOD=0X84;         //PCA模塊空閑模式停止計(jì)數(shù),設(shè)置采用定時(shí)器0的溢出率作為PCA模塊的時(shí)鐘源 時(shí)鐘源=F/(256-定時(shí)器初值)/256
                                 //那么PCA的頻率應(yīng)該等于250000/256=976 HZ
        CCON=0;                 //PCA計(jì)數(shù)器啟動(dòng)控制寄存器
        CL=250;                 //PCA模塊初值
        CH=250;                 //PCA模塊初值        5個(gè)脈沖就PCA計(jì)數(shù)器溢出


        CCAPM0=0X42; //PCA模塊允許比較, PCA作為PWM輸出功能使用
        CCAP0H=127;  //PWM占空比設(shè)定

        CCAPM1=0X42; //PWM2
        CCAP1H=127;  //PW2

        EA=1;                 //總中斷開關(guān)打開
        TR0=1;                 //啟動(dòng)定時(shí)器0
        CR=1;                 //啟動(dòng)PCA計(jì)數(shù)器
}

void time0()         //脈沖定數(shù)記錄子函數(shù),記錄脈沖個(gè)數(shù),用來決定步進(jìn)電機(jī)的行程
{
  if(CF==1)    //問題就處在這個(gè)子函數(shù)上面  這里是判斷PCA是否記滿數(shù)量 溢出標(biāo)志位,如果是 那么說明5個(gè)脈沖滿了,NUM+1, 如果我NUM為10
  {                //那么應(yīng)該是50個(gè)脈沖,而實(shí)際就不止50個(gè)脈沖了
           CF=0;
        num++;        
        if(num==10)     //上面PCA的計(jì)數(shù)器初值是250 到了5個(gè)脈沖就會(huì)溢出一次,而我這里NUM==1的時(shí)候,我測(cè)試過,確實(shí)是5個(gè)脈沖就停掉了
                                 //示波器上面看過了,NUM=1 就是5個(gè)脈沖  一但NUM不是為1的時(shí)候脈沖就不對(duì)
                {               //但是如果我這里寫NUM==10 出來的脈沖數(shù)量就不對(duì)了,估計(jì)都有上千的脈沖數(shù)量,大家看出來是哪里出了問題嗎
                 num=0;
                 CR=0;
                }
  }
}

void main() //主函數(shù)入口
{
  pwminit();
  while(1)
  {
   time0();        
  }

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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:76158 發(fā)表于 2016-7-15 10:33 | 只看該作者
有人幫我看出問題來嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:114108 發(fā)表于 2016-7-19 14:29 | 只看該作者

回帖獎(jiǎng)勵(lì) +1 黑幣

看不來
回復(fù)

使用道具 舉報(bào)

地板
ID:202278 發(fā)表于 2017-7-15 14:15 | 只看該作者
沒有,同在學(xué)PCA輸出PWM
回復(fù)

使用道具 舉報(bào)

5#
ID:325933 發(fā)表于 2018-6-23 15:14 | 只看該作者
我看的芯片上說CL由0增至255后會(huì)溢出;我的理解是在這期間CL會(huì)與CCAP0L的值相比較,溢出時(shí)CCAP0H的值裝載在CCAP0L上。您會(huì)不會(huì)是誤以為CH=250裝載在CL上,使得CL從250開始計(jì)數(shù)了吧?難道是不同芯片運(yùn)行方式不一樣?說錯(cuò)不要打我
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表