//###########################################################################
//
// 文件名: Example_281xEvQEP.c
//
// 标题: DSP281x 事件管理器正交编码脉冲计数例程.
//
// 规约:
//
// 运行此例程需要要使用 DSP281x 头文件,版本号 V1.00.
// 此例程使用 "boot to H0" 操作,请设置对应的跳线。
//
// 运行前,请将旋转编码器或线性光栅尺与QEP的对应管脚相连
// 示意:
// A <-------> QEP1_A(GpioA8)
// B <-------> QEP1_B(GpioA9)
// Z <-------> QEP1_I(GpioA10)
//
// 另外,在连接时,注意:旋转编码器或线性光栅尺的电源与地线需要与目标板
// 的电源与地线相连。
// 补充:
// 对于输出为差分信号(信号包括:A+,A-,B+,B-,Z+,Z- 共六路)的
// 旋转编码器或线性光栅尺,请先将它的输出信号连至一个差分转单端集成电路
// 如:AM26LS32,转换成三路信号输出(A,B,Z)后,再连至QEP引脚
//
// 对于没有索引相输出的旋转编码器或线性光栅尺,索引相信号(Z或I)可以不接
//
// 说明:
//
// 本程序以QEP方式启动Ev-A的T2计数器,对外部旋转编码器或线性光栅尺的
// 输入信号进行计数,计数值存于T2计数器的计数寄存器中,可以通过观测变量:
// EvaRegs.T2CNT读取
//
// 作者:mrhfzing
// 日期:2008-10-6
// 版本:First Released
//
//###########################################################################
//头文件包含
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
//函数原型声明
void EvQepInit(void);
//全局变量定义
//主函数部分
void main(void)
{
//1.初始化系统控制
InitSysCtrl();
//2.片内外设管脚设置
EALLOW;
GpioMuxRegs.GPAMUX.bit.CAP1Q1_GPIOA8 = 1;
GpioMuxRegs.GPAMUX.bit.CAP2Q2_GPIOA9 = 1;
//若编码器无索引信号输出端,则无须初始化QEP_I
//GpioMuxRegs.GPAMUX.bit.CAP3QI1_GPIOA10 = 1;
EDIS;
//3.初始化PIE: 此处无须初始化PIE与中断
//4.QEP外设初始化
EvQepInit();
//5.用户代码,无限循环
for(;;);
}
//-------------------------------------------------
//主函数结束
//-------------------------------------------------
//其他功能函数
void EvQepInit(void)
{
//仿真停挂起,定向增减,预标定为1,使能定时器,QEP,禁用比较器
EvaRegs.T2CON.all = 0x187C; //0001 1000 0111 1100
//定时周期0xFFFF
EvaRegs.T2PR = 0xFFFF;
//设置定时初值为0x7FFF
EvaRegs.T2CNT = 0x7FFF;
}
//-------------------------------------------------
//文件结束
//------------------------------------------------- |