MC9S12XFpwm问题.docx

上传人:b****1 文档编号:316858 上传时间:2023-04-28 格式:DOCX 页数:10 大小:99.14KB
下载 相关 举报
MC9S12XFpwm问题.docx_第1页
第1页 / 共10页
MC9S12XFpwm问题.docx_第2页
第2页 / 共10页
MC9S12XFpwm问题.docx_第3页
第3页 / 共10页
MC9S12XFpwm问题.docx_第4页
第4页 / 共10页
MC9S12XFpwm问题.docx_第5页
第5页 / 共10页
MC9S12XFpwm问题.docx_第6页
第6页 / 共10页
MC9S12XFpwm问题.docx_第7页
第7页 / 共10页
MC9S12XFpwm问题.docx_第8页
第8页 / 共10页
MC9S12XFpwm问题.docx_第9页
第9页 / 共10页
MC9S12XFpwm问题.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MC9S12XFpwm问题.docx

《MC9S12XFpwm问题.docx》由会员分享,可在线阅读,更多相关《MC9S12XFpwm问题.docx(10页珍藏版)》请在冰点文库上搜索。

MC9S12XFpwm问题.docx

MC9S12XFpwm问题

我最近在用M9S12XF512的IC做PWM輸出波形可是不知道為何出來訊號只有直流電和5V的信號我不知道我設定問題出錯在哪我適用軟體產生波行的方式去做可是波行無法出來有各位高手知道我問題出在哪嘛?

(這禮拜要把東西做出來不知道我問題出在哪請各位幫幫忙拜託)

(所有DATASHEEET我已經寫好了暫存器可以存入可是就是無法出現波型)

請各位高手拜託幫忙

/********************************************************/

#include"M9S12XF512.h"    /*derivativeinformation*/

#include    /*commondefinesandmacros*/

/**Variabletypesandcommondefinitions*/

#include"typedefs.h"

/**CPUdefinitions*/

#include"Cpu.h"

/**MacrodefinitionsforgeneralpurposeI/Ohandling  */

#include"GPIO_macros.h"

UINT16AD_wData1;

UINT16AD_wData2;

UINT16AD_wData3;

UINT8AD_wDataH;

voidmain(void){

inti;

  /*putyourowncodehere*/

  EnableInterrupts;

  /*pleasemakesurethatyouneverleavethisfunction*/

  vfnClock_Settings();  

  vfnPeripheral_Settings();      

/**************************************************************/  

/*AD控制暫存器1:

AD解析度8位元*/

ATDCTL1=0x00;

/*AD控制暫存器2:

啟動AD快速轉換|AD等待模式下轉換*/

ATDCTL2=(ATDCTL2_AFFC_MASK|ATDCTL2_ICLKSTP_MASK);

/*AD控制暫存器3:

右對齊|轉換序列長度為3*/

ATDCTL3=(ATDCTL3_DJM|ATDCTL3_S2C_MASK|ATDCTL3_S1C_MASK);

/*AD控制暫存器4:

AD時脈週期為4個系統時脈|分頻係數為19*/

ATDCTL4=(ATDCTL4_PRS4_MASK|ATDCTL4_PRS1_MASK|ATDCTL4_PRS0_MASK);

/*AD控制暫存器5:

連續採集||通道AD5開始*/

ATDCTL5=(ATDCTL5_SCAN_MASK|ATDCTL5_CC_MASK|ATDCTL5_CB_MASK);

/*AD中斷致能暫存器:

禁止所有通道數字輸入緩衝*/

ATDDIEN=0x00;

PMFCFG0=0x01;

PMFCFG1=0x81;

PMFCFG2=0x01;

PMFCFG3=0x00;

PMFOUTC=0x01;  //PWM0bitcanbecontroledbysoftware

PMFOUTB=0x01;  //PWM0active

PMFCCTL=0x00;

PMFVAL0H=0x10;  //PWMperiodclock

PMFVAL0L=0x10;  //PWMperiodclock

PMFVAL1H=0x10;  //PWMperiodclock

PMFVAL1L=0x10;  //PWMperiodclock

PMFENCA=0x02;  //LoadnewprescalerA

PMFFQCA=0x07;  //PWMFrequencymode=Fbus/8

PMFMODAH=0x01;  //PWMperiodclock

PMFMODAL=0xF6;  //PWMperiodclock

  for(;;){                    

//LED_TOGGLE(D29);/*用于指示AD中?

函?

是否?

行*/

LED_TOGGLE(D23);

//LED_TOGGLE(D24);

//LED_TOGGLE(D25);

//AD_wData1=ATDDR0;/*采集*/

//AD_wData2=ATDDR1;/*采集*/

//AD_wData3=ATDDR2;/*采集*/

AD_wDataH=ATDDR0H;

PTT=AD_wDataH;/*?

端口B?

出采集的值的高8位用于查看*/

//PT1AD_PT1AD0=AD_wDataH&0x01;

//PT1AD_PT1AD1=AD_wDataH&0x02;

//PT1AD_PT1AD2=AD_wDataH&0x04;

//PT1AD_PT1AD3=AD_wDataH&0x08;

if(ATDSTAT0_SCF!

=0){

//LED_ON(D28);  

  }/*waitforever*/

}

}

/********************************************************/

收藏分享评分

回复引用

订阅TOP

∙发短消息

∙加为好友

zerodio当前离线

UID

800417 

帖子

精华

积分

阅读权限

10 

在线时间

6小时 

注册时间

2009-10-3 

最后登录

2009-10-12 

新手上路

UID

800417 

2#

zerodio发表于2009-10-422:

24|只看该作者

本帖最后由zerodio于2009-10-518:

23编辑

#include"M9S12XF512.h"    /*derivativeinformation*/

#include    /*commondefinesandmacros*/

/**Variabletypesandcommondefinitions*/

#include"typedefs.h"

/**CPUdefinitions*/

#include"Cpu.h"

/**MacrodefinitionsforgeneralpurposeI/Ohandling  */

#include"GPIO_macros.h"

UINT16AD_wData1;

UINT16AD_wData2;

UINT16AD_wData3;

UINT8AD_wDataH;

voidmain(void){

inti;

  /*putyourowncodehere*/

  EnableInterrupts;

  /*pleasemakesurethatyouneverleavethisfunction*/

  vfnClock_Settings();  

  vfnPeripheral_Settings();      

/**************************************************************/  

/*AD控制暫存器1:

AD解析度8位元*/

ATDCTL1=0x00;

/*AD控制暫存器2:

啟動AD快速轉換|AD等待模式下轉換*/

ATDCTL2=(ATDCTL2_AFFC_MASK|ATDCTL2_ICLKSTP_MASK);

/*AD控制暫存器3:

右對齊|轉換序列長度為3*/

ATDCTL3=(ATDCTL3_DJM|ATDCTL3_S2C_MASK|ATDCTL3_S1C_MASK);

/*AD控制暫存器4:

AD時脈週期為4個系統時脈|分頻係數為19*/

ATDCTL4=(ATDCTL4_PRS4_MASK|ATDCTL4_PRS1_MASK|ATDCTL4_PRS0_MASK);

/*AD控制暫存器5:

連續採集||通道AD5開始*/

ATDCTL5=(ATDCTL5_SCAN_MASK|ATDCTL5_CC_MASK|ATDCTL5_CB_MASK);

/*AD中斷致能暫存器:

禁止所有通道數字輸入緩衝*/

ATDDIEN=0x00;

PMFCFG0=0x37;

PMFCFG1=0x3A;

PMFCFG2=0x00;

PMFCFG3=0x18;

PMFOUTC=0x00;  //PWM0bitcanbecontroledbysoftware

PMFOUTB=0x00;  //PWM0active

PMFCCTL=0x17;

PMFVAL0H=0x02;  //PWMperiodclock

PMFVAL0L=0x00;  //PWMperiodclock

PMFVAL1H=0x03;  //PWMperiodclock

PMFVAL1L=0x0F;  //PWMperiodclock

PMFENCA=0x82;  //LoadnewprescalerA

PMFFQCA=0x09;  //PWMFrequencymode=Fbus/8

PMFMODAH=0x00;  //PWMperiodclock

PMFMODAL=0xFF;  //PWMperiodclock

PMFCNTAH=0x00;

PMFCNTAL=0xFF;

  for(;;){

                        

//LED_TOGGLE(D29);/*用于指示AD中?

函?

是否?

行*/

LED_TOGGLE(D23);

//LED_TOGGLE(D24);

//LED_TOGGLE(D25);

//AD_wData1=ATDDR0;/*采集*/

//AD_wData2=ATDDR1;/*采集*/

//AD_wData3=ATDDR2;/*采集*/

AD_wDataH=ATDDR0H;

PTT=AD_wDataH;/*?

端口B?

出采集的值的高8位用于查看*/

//PT1AD_PT1AD0=AD_wDataH&0x01;

//PT1AD_PT1AD1=AD_wDataH&0x02;

//PT1AD_PT1AD2=AD_wDataH&0x04;

//PT1AD_PT1AD3=AD_wDataH&0x08;

if(ATDSTAT0_SCF!

=0){

//LED_ON(D28);  

  }/*waitforever*/

}

}

/*********************************************************************/

這是今天我測試出來成功的程式

但是PWM波型必須重複燒錄才有波型出現

而且只要RESET或者開關機就重新跑 變成只有5V的直流電(無波形產生)

而且波型不能更改 原因是因為PMFENCA暫存器的LOAD腳位無法讓他為1

近而讀取PWM的VALUE和MOD來控制波型

不知道有沒有人知道我問題出在哪

回复引用

TOP

∙发短消息

∙加为好友

zerodio当前离线

UID

800417 

帖子

精华

积分

阅读权限

10 

在线时间

6小时 

注册时间

2009-10-3 

最后登录

2009-10-12 

新手上路

UID

800417 

3#

zerodio发表于2009-10-722:

41|只看该作者

本帖最后由zerodio于2009-10-722:

52编辑

Ok

我已經把PWM波型做出來了

可是是用自己的方式做

DATASHEET完全看不懂她怎樣算

有大大可以交一下嗎?

還有就是計時器她跑太快有辦法讓他變慢嗎?

?

(我加延遲程式無法動作)

/*********************************************************************/

#include"M9S12XF512.h"    /*derivativeinformation*/

#include    /*commondefinesandmacros*/

/**Variabletypesandcommondefinitions*/

#include"typedefs.h"

/**CPUdefinitions*/

#include"Cpu.h"

/**MacrodefinitionsforgeneralpurposeI/Ohandling  */

#include"GPIO_macros.h"

UINT16AD_wData1;

UINT16AD_wData2;

UINT16AD_wData3;

UINT8AD_wDataH;

voidmain(void){

inti;

  /*putyourowncodehere*/

  EnableInterrupts;

  /*pleasemakesurethatyouneverleavethisfunction*/

  vfnClock_Settings();  

  vfnPeripheral_Settings();      

/**************************************************************/  

/*AD控制暫存器1:

AD解析度8位元*/

ATDCTL1=0x00;

/*AD控制暫存器2:

啟動AD快速轉換|AD等待模式下轉換*/

ATDCTL2=(ATDCTL2_AFFC_MASK|ATDCTL2_ICLKSTP_MASK);

/*AD控制暫存器3:

右對齊|轉換序列長度為3*/

ATDCTL3=(ATDCTL3_DJM|ATDCTL3_S2C_MASK|ATDCTL3_S1C_MASK);

/*AD控制暫存器4:

AD時脈週期為4個系統時脈|分頻係數為19*/

ATDCTL4=(ATDCTL4_PRS4_MASK|ATDCTL4_PRS1_MASK|ATDCTL4_PRS0_MASK);

/*AD控制暫存器5:

連續採集||通道AD5開始*/

ATDCTL5=(ATDCTL5_SCAN_MASK|ATDCTL5_CC_MASK|ATDCTL5_CB_MASK);

/*AD中斷致能暫存器:

禁止所有通道數字輸入緩衝*/

ATDDIEN=0x00;

PMFCFG0=0x09;  //PWM暫存器0為設定全波和獨立PWM產生器

PMFCFG1=0x81;  //設定PWM為高波開始

PMFCFG2=0x00;  //遮蔽位元0x00全部都不遮蔽

PMFCFG3=0x00;  //

PMFOUTC=0x00;  //PWM0bitcanbecontroledbysoftware

PMFOUTB=0x00;  //PWM0active

PMFCCTL=0x00;

PMFVAL0H=0x00;  //PWMperiodclock

PMFVAL0L=0x00;  //PWMperiodclock

PMFMODAH=0x00;  //

PMFMODAL=0x00;  //

PMFFQCA=0x07;  //PWMFrequencymode=Fbus/8

PMFCNTAH=0x00;

PMFCNTAL=0x00;

  for(;;){

PMFMODAL=PMFMODAL+1;

for(i=0;i<=1000;i++);

if(PMFMODAL==0xFF){

PMFMODAL==0x00;;

}

if(PMFMODAL%6==0){

PMFENCA=0x80;        //設定讀取HI-LOW

}

else{

PMFENCA=0x02;

}

LED_TOGGLE(D23);

AD_wDataH=ATDDR0H;

PTT=AD_wDataH;

if(ATDSTAT0_SCF!

=0){

//LED_ON(D28);  

  }/*waitforever*/

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2