智能车制作
标题:
求帮忙看下这个编码器程序,,怎么最后计数值一直为0,不出数据啊
[打印本页]
作者:
小盐巴
时间:
2013-1-12 12:52
标题:
求帮忙看下这个编码器程序,,怎么最后计数值一直为0,不出数据啊
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#define BUS_CLOCK 32000000 //总线频率
#define OSC_CLOCK 16000000 //晶振频率
unsigned int jishu;
void INIT_PLL(void)
{
CLKSEL &= 0x7f; //set OSCCLK as sysclk
PLLCTL &= 0x8F; //Disable PLL circuit
CRGINT &= 0xDF;
#if(BUS_CLOCK == 40000000)
SYNR = 0x44;
#elif(BUS_CLOCK == 32000000)
SYNR = 0x43;
#elif(BUS_CLOCK == 24000000)
SYNR = 0x42;
#endif
REFDV = 0x81; //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M
PLLCTL =PLLCTL|0x70; //Enable PLL circuit
asm NOP;
asm NOP;
while(!(CRGFLG&0x08)); //PLLCLK is Locked already
CLKSEL |= 0x80; //set PLLCLK as sysclk
}
/*************************************************************/
/* PIT模块初始化函数 */
/*************************************************************/
void init_PIT(){
PITMTLD0=249; //为0通道8位计数器赋值
PITLD0=63999; //为0通道16位计数器赋值 //(249+1)*(63999+1)=16000000个总线周期=0.5秒
PITMUX_PMUX0=0; //第0通道使用微计数器0
PITCE_PCE0=1; //第0通道计数器工作
PITCFLMT=0X80; //使能周期中断定时器
PITINTE_PINTE0=1; //0通道定时器定时中断被使能
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void PIT_INTER(void)
{
if(PITTF_PTF0==1) {
PITTF_PTF0=1;
jishu=PACNT;
PACNT=0;
}
}
#pragma CODE_SEG DEFAULT
void main(void)
{
DisableInterrupts;
INIT_PLL();
init_PIT();
EnableInterrupts;
while(1);
}
这是后面的PIT重断的向量地址VECTOR ADDRESS 0xFF7A PIT_INTER
编码器的正极和信号端我接了上拉电阻,刷新我设的1,但是一直不出数据,计数一直为0,
请帮忙看下是哪儿的问题
作者:
tearedice
时间:
2013-1-12 13:30
先接示波器,转动编码器看编码器有无正常输出
作者:
小盐巴
时间:
2013-1-18 11:05
前段时间有事,搁了这么久。。。实验室今天还停电了
---------------------------------------------割一下,原来是少写了一点东西,补上这个就行了
void pac_init(void)
{
PACTL=0x40;
PACNT=0x00;
}
希望对大家有些帮助
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2