📄 init.h
字号:
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
//uchar *ADValue[8];
/*********************pwminit01(舵机)200hz****************/
void init_pwm(void){
PWME=0x00; //设置开通pwm。 1:允许使用 0:禁止
PWMPOL=0xff; //设置输出极性,1:开始为高电平0:开始为低电平
PWMCLK=0b00111000; //PWM_CON01-SA,PWM2,3-SB ;PWM4-SA
//PWMCLK_PCLK0=0; //设置是否使用SA,SB时钟。1:使用SA,SB 0:使用A,B
//PWMCLK_PCLK1=0; //设置是否使用SA,SB时钟。1:使用SA,SB 0:使用A,B
PWMPRCLK=0x22; //设置A,B时钟的分频系数(A:2分频。B:4分频)8/2=4M
PWMCAE=0x00; //设置左对齐,还是中间对齐。0:左对齐1:中间对齐
PWMCTL_CON01=1; //pwm控制寄存器。可以合并两个8位的成16位的(合并1,0 pwm)
PWMSCLA=1; //SA=A/2/=2M;
PWMSCLB=5; ////SB=B/2/10=200K
PWMPER01=40000; //给通道0,1设置period值 frequency=50HZ
PWMDTY01=1100; //给通道0,1设置duty值 设置占空比 50%
PWMPER2=200; //frequency=SB/200=1K
PWMDTY2=110;
//PWMPER3=200; //frequency=SB/200=1K
//PWMDTY3=100;
PWMSDN=0x00; //设置特殊情况pwm的工作。一般不需要设置
DDRP=0xff; //设置io端口为输出
PWME_PWME1=1; //设置开通pwm。 1:允许使用 0:禁止
PWME_PWME2=1; //启动PWM2 motor
// PWME_PWME3=1;
}
/*************************PORT_INIT****************************////
void port_init(void){ //PORTH,A are input 中间8个用PB显示
DDRA = 0X00;
DDRM = 0x00;
DDRH = 0x00;
PTH = 0Xff; //最外面两个和第二排接PM
PTM = 0X00;
ATD0DIEN_IEN0=1;
ATD0DIEN_IEN1=1;
ATD0DIEN_IEN2=1;
ATD0DIEN_IEN3=1;
ATD0DIEN_IEN4=1; //the 2 sensors below
ATD0DIEN_IEN5=1;
PORTAD0=0XFF;
DDRB = 0XFF;
PORTA = 0XFF;
PORTB = 0XFF;
}
/******************AD_INIT***************************/////
/* void AD_Init(void){
ATD0CTL2 = 0xC0; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
ATD0CTL3 = 0x00; // 8 bit AD
ATD0CTL4 = 0x83; // 8 bit 10010111 if bus clock=48m, 48/(24*2)=1M;
ATD0CTL5 = 0x30;
ATD0DIEN = 0x00; // ATD analog input disable
ADValue[0] = &ATD0DR0H;
ADValue[1] = &ATD0DR1H;
ADValue[2] = &ATD0DR2H;
ADValue[3] = &ATD0DR3H;
ADValue[4] = &ATD0DR4H;
ADValue[5] = &ATD0DR5H;
ADValue[6] = &ATD0DR6H;
ADValue[7] = &ATD0DR7H;
} */
/*********IC1定时器初始化测速******************************/
void IC1_init(void) {
TIOS=0X00; // ECT通道0为IC工作方式
TSCR1_TEN=1; //timer enable
TCTL4=0b00001100; //PT1 capture on any edge
//ICSYS_BUFEN=1;
//ICSYS_LATQ=1;
MCCTL_MCZI=1;
ICPAR_PA1EN=1; //PA1 counter is enable
MCCTL_MODMC=0;
MCCTL_MCPR0=1; //prescale factor is 4
MCCTL_MCPR1=0; //F=2M
MCCNT=64000; //period =64000/2M=32ms */
MCCTL_MCEN=1; //modules counter in enable
MCFLG_MCZF=1;
}
/********************RTI**************************///
void init_RTI(void){
CRGINT = 0x80;
RTICTL = 0x69; //2**10分频 48HZ
}
/***************timer to check sensor*******************************///
void timer_init(void) {
TSCR1 = 0x80; // Timer enable
TSCR2 = 0x81; // 1/4dedived (1/24M)*4=1/6 enable time overflow Interrupt
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -