在线时间0 小时
UID2019594
注册时间2013-6-17
NXP金币0
该用户从未签到
新手上路

- 积分
- 46
- 最后登录
- 1970-1-1
|
/*
* File: test.c
* Purpose: Main process
*
*/
#include "common.h"
#include "start.h"
#include "freedom_gpio.h"
#ifdef CMSIS
#include "start.h"
#endif
void trigger_adc(void);
void adc_init(void);
void ADC0_IRQHandler(void);
/********************************************************************/
void PIT_IRQHandler(void)
{
PIT_TFLG0 |= PIT_TFLG_TIF_MASK;
trigger_adc();
LED2_ON;
out_char('B');
}
void pit_init(void)
{
disable_irq(INT_PIT-16);
//SIM_SCGC6
SIM_SCGC6 |= SIM_SCGC6_PIT_MASK; //enable PIT
//PIT
PIT_MCR &= ~(PIT_MCR_MDIS_MASK | PIT_MCR_FRZ_MASK );
PIT_LDVAL0 = 0x1234000;
PIT_TFLG0 |=PIT_TFLG_TIF_MASK;
PIT_TCTRL0 |= ( PIT_TCTRL_TEN_MASK | PIT_TCTRL_TIE_MASK );
enable_irq(INT_PIT-16);
}
void adc_init(void)
{
printf("adc_init begin");
//SIM_SCGC6
// SIM_SCGC6 |= SIM_SCGC6_ADC0_MASK; // enable ADC0 clock
//ADC0
ADC0_SC1A = ADC_SC1_ADCH(0)| //AD0
ADC_SC1_AIEN_MASK; //interupt enable
ADC0_CFG1 = ADC_CFG1_ADIV(2)| //select divide is 2
ADC_CFG1_MODE(1)|
ADC_CFG1_ADLSMP_MASK|
ADC_CFG1_ADICLK(1); //select bus/2 as clock source
ADC0_SC2 = ~ADC_SC2_ADTRG_MASK; //software trigger
// add this
enable_irq(15);//ADC0
printf("adc_init end");
}
void trigger_adc(void)
{
//SIM_SCGC6
SIM_SCGC6 |= SIM_SCGC6_ADC0_MASK; // enable ADC0 clock
//ADC0
ADC0_SC1A = ADC_SC1_ADCH(0)| //AD0
ADC_SC1_AIEN_MASK; //interupt enable
}
unsigned int ReadADCPoll(void)
{
printf("\n----ReadADCPoll--1--\n");
while((ADC0_SC1A & ADC_SC1_COCO_MASK) == 0); //????? coco can not be set to 1 and why????
//ADC0_SC1A &= ~ ADC0_SC1A_COCO_MASK;
printf("\n----ReadADCPoll--2--\n");
return ADC0_RA;
}
void ADC0_IRQHandler(void)
{
LED2_ON;
printf("\n---ADC0_IRQHandler ADC sample data: %x.\n", ADC0_RA);
}
int main (void)
{
gpio_init();
pit_init();
adc_init();
while(1)
{
out_char('A');//???
trigger_adc();
printf("%d",ReadADCPoll());
LED2_OFF;
}
}
/********************************************************************/
上述代码主要意图:
PIT通过定时中断来触发ADC实现指定采样率的采样工作.
当前问题:
1 IT中断服务不能进入,注释掉ADC相关代码可以进入该服务,但是一直停留在该服务中.
2:ADC的COCO标志不能正确置1,可能是ADC没有启动,ADC的中断服务程序也没有进入;
以上,麻烦高手指点下,不甚感激!!
|
|