|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
求助:關(guān)于AW60的PWM中斷問(wèn)題。進(jìn)不了中斷。 |
| 作者:mc9s08aw60 欄目:單片機(jī) |
/****************************************************************************** * * COPYRIGHT (C) 2006 FREESCALE SEMICONDUCTOR, Inc. * All Rights Reserved * * Filename: DEMO9S08AW60_TEST.c * Author: Daniel Kruczek * Revision: 3.0 * * DESCRIPTION: Flashes LED_BAR7 and LED_BAR0 turns on and off according to * the state of SW1. * * Notes: Also serves as an example for the 9S08AW60 DEMO board. * Created using CodeWarrior 5.0 for HC(S)08. ******************************************************************************/ // =================================================================== // Macro Functions definitions // =================================================================== // The setting in project preference must be checked // CHAR should be unsigned 8 bit typedef unsigned CHAR muint8; typedef unsigned SHORT muint16; typedef unsigned LONG muint32; typedef CHAR mint8; typedef SHORT mint16; typedef LONG mint32; // To Clear or Set SINGLE bits in a byte variable. #define b_SetBit(bit_ID, varID) (varID |= (muint8)(1<<bit_ID)) #define b_ClearBit(bit_ID, varID) (varID &= ~(muint8)(1<<bit_ID)) #define b_XorBit(bit_ID, varID) (varID ^= (muint8)(1<<bit_ID)) // To Clear or Set SINGLE bits in a word(16-bit) variable. #define w_SetBit(bit_ID, varID) (varID |= (muint16)(1<<bit_ID)) #define w_ClearBit(bit_ID, varID) (varID &= ~(muint16)(1<<bit_ID)) #define w_XorBit(bit_ID, varID) (varID ^= (muint16)(1<<bit_ID)) #include <hidef.h> /* EnableInterrupts macro */ #include "derivative.h" /* include peripheral declarations */ muint8 flag; /* // --------------------------------------------------------------------------- // Peripheral Initialization Routine // --------------------------------------------------------------------------- */ void PeriphInit(void) { SOPT = 0x00; /* Disable COP */ PTCDD = 0x10; PTCPE = 0xEF; PTFDD = 0xFF; PTFD = 0x00; flag=1; } /***** Init_TPM init code *****/ void TPM_init(void) { //TPM1SC = 0x00; TPM1SC = 0x00; //TPM2SC TPM1MOD = 0x5FFF; TPM1C2V = 0x0FF; (void)(TPM1C2SC == 0); TPM1C2SC = 0x68; TPM1C3V = 0x0FFF; (void)(TPM1C3SC == 0); //TPM1C2SC = 0x28; TPM1C3SC = 0x28; (void)(TPM1SC == 0); TPM1SC = 0x0F; } void main(void) { PeriphInit(); /* Microcontroller initialization */ TPM_init(); EnableInterrupts; /* enable interrupts */ // Begin LED/Switch TEST for(;;) { if (PTCD_PTCD2==0x01) b_ClearBit(2,PTFD); else b_SetBit(2,PTFD); b_ClearBit(7,PTFD); b_ClearBit(6,PTFD); b_ClearBit(5,PTFD); } /* loop forever */ }/* end main(void) */ interrupt void PWMCH2_ISR(void) { TPM1C2SC_CH2IE=0X00; TPM1C2SC&=0xEF; flag++; if(flag<=1) { b_SetBit(7,PTFD); } else { flag=0; b_ClearBit(7,PTFD); } TPM1C2SC_CH2IE=0X01; } |
| 2樓: | >>參與討論 |
| 作者: mc9s08aw60 于 2007/1/30 16:40:00 發(fā)布:
TPM1通道2。。。請(qǐng)教各位看看中斷程序?qū)幔?br>在PRM文件中我設(shè)置: VECTOR 7 PWMCH2_ISR |
|
| 3樓: | >>參與討論 |
| 作者: JerryBJ 于 2007/1/30 17:11:00 發(fā)布:
是進(jìn)不了中斷還是進(jìn)去了出不來(lái)? 我看是出不來(lái)。中斷標(biāo)志CHnF的清除方法是這樣的:在CHnF=1時(shí),首先讀TPMxCnSC,然后向CHnF位寫0。 所以進(jìn)入中斷后,應(yīng)該這樣來(lái)清除CHnF: interrupt void PWMCH2_ISR(void) { unsigned CHAR tmp; tmp = TPM1C2SC; TPM1C2SC&=0x7F; // ........ 否則,CHnF一直為LOGIC 1,退出中斷后馬上又進(jìn)來(lái)了。 |
|
| 4樓: | >>參與討論 |
| 作者: mc9s08aw60 于 2007/1/30 17:15:00 發(fā)布:
謝謝。。。我試試。 |
|
| 5樓: | >>參與討論 |
| 作者: mc9s08aw60 于 2007/1/30 17:18:00 發(fā)布:
......... 謝謝斑竹,解決了。。。 * - 本貼最后修改時(shí)間:2007-2-9 15:43:05 修改者:mc9s08aw60 |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |