MC9S12XFpwm问题.docx
- 文档编号:22899023
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:10
- 大小:99.14KB
MC9S12XFpwm问题.docx
《MC9S12XFpwm问题.docx》由会员分享,可在线阅读,更多相关《MC9S12XFpwm问题.docx(10页珍藏版)》请在冰豆网上搜索。
MC9S12XFpwm问题
我最近在用M9S12XF512的IC做PWM輸出波形可是不知道為何出來訊號只有直流電和5V的信號我不知道我設定問題出錯在哪我適用軟體產生波行的方式去做可是波行無法出來有各位高手知道我問題出在哪嘛?
(這禮拜要把東西做出來不知道我問題出在哪請各位幫幫忙拜託)
(所有DATASHEEET我已經寫好了暫存器可以存入可是就是無法出現波型)
請各位高手拜託幫忙
/********************************************************/
#include"M9S12XF512.h" /*derivativeinformation*/
#include
/**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
帖子
3
精华
0
积分
2
阅读权限
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
/**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
帖子
3
精华
0
积分
2
阅读权限
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
/**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*/
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MC9S12XFpwm 问题