MPC5604_eMIOs

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

MPC5604_eMIOs

1,041 次查看
Iverson
Contributor I

I want to use some channels of emios for SAIC function, but when I configure the registers, I find that the CNT counter does not work.

I don't know what caused it. Or something i overlooked

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

***********************************************

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

void initEMIOS(void) {

EMIOS.MCR.B.GPRE= 63; /* Divide 64 MHz sysclk by 63+1 = 64 for 1MHz eMIOS clk*/
EMIOS.MCR.B.GPREN = 1; /* Enable eMIOS clock */
EMIOS.MCR.B.GTBE = 1; /* Enable global time base */
EMIOS.MCR.B.FRZ = 1; /* Enable stopping channels when in debug mode */
}

void initEMIOSch23(void) { /* EMIOS 0 CH 23: Modulus Up Counter */
EMIOS.CH[23].CADR.R = 999999; /* counts till 1000000, 1 count = 1us */
EMIOS.CH[23].CCR.B.MODE = 0x50; /* Modulus Counter Buffered (MCB) */
EMIOS.CH[23].CCR.B.BSL = 0x3; /* Use internal counter */
EMIOS.CH[23].CCR.B.UCPRE=0; /* Set channel prescaler to divide by 1 */
EMIOS.CH[23].CCR.B.UCPREN = 1; /* Enable prescaler; uses default divide by 1 */
EMIOS.CH[23].CCR.B.FREN = 1; /* Freeze channel counting when in debug mode */
}

void initEMIOSch(void) { /* EMIOS 0 CH x: SAIC */
EMIOS.CH[9].CCR.B.BSL = 0x0; /* Use counter bus A (default) */
EMIOS.CH[9].CCR.B.EDPOL = 1; /* capture on rising edge */
EMIOS.CH[9].CCR.B.FEN = 1; /* flag generates and interrupt/DMA */
EMIOS.CH[9].CSR.R = 0x00000001;
EMIOS.CH[9].CCR.B.MODE = 0x02; /* Mode is SAIC */

SIU.PCR[GPIO_PIN].R = 0x0500; /* Initialize pad for eMIOS chan. x input */
}

0 项奖励
回复
1 回复

995 次查看
petervlna
NXP TechSupport
NXP TechSupport

Hello,

have a look at our reference example code:

https://community.nxp.com/t5/MPC5xxx-Knowledge-Base/Example-MPC5646C-eMIOS-frequency-measurement-CW2...

Best regards,

Peter

0 项奖励
回复