2812CCS动态显示图形.docx
《2812CCS动态显示图形.docx》由会员分享,可在线阅读,更多相关《2812CCS动态显示图形.docx(24页珍藏版)》请在冰点文库上搜索。
2812CCS动态显示图形
CCSviewgraph动态显示图形
(红色为主要内容)
采用汇编,相对C实时性高
*******************************头文件*************************************
/*============================================================================
Filename:
DLOG4CH.H
Originator:
AdvancedEmbeededControl(AEC)
TexasInstrumentsInc.
Description:
Headerfilecontainingconstants,datatypedefinitions,and
functionprototypesfortheDATALOGmodule.
===============================================================================
History:
-------------------------------------------------------------------------------
18-5-2001(DD/MM/YYYY)ReleaseRev1.0
------------------------------------------------------------------------------*/
#ifndef__DLOG4CH_H__
#define__DLOG4CH_H__
#defineNULL0
typedefstruct{longtask;//Variable:
Taskaddresspointer
int*iptr1;//Input:
Firstinputpointer(Q15)
int*iptr2;//Input:
Secondinputpointer(Q15)
int*iptr3;//Input:
Thirdinputpointer(Q15)
int*iptr4;//Input:
Fourthinputpointer(Q15)
inttrig_value;//Input:
Triggerpoint(Q15)
intprescalar;//Parameter:
Datalogprescale
intskip_cntr;//Variable:
Datalogskipcounter
intcntr;//Variable:
Datalogcounter
longwrite_ptr;//Variable:
Graphaddresspointer
intsize;//Parameter:
Maximumdatabuffer
int(*init)();//Pointertoinitfunction
int(*update)();//Pointertoupdatefunction
}DLOG_4CH;
typedefDLOG_4CH*DLOG_4CH_handle;
voidDLOG_4CH_init(void*);
voidDLOG_4CH_update(void*);
/*=============================================================================
DefaultinitalizerfortheDLOG_4CHobject.
==============================================================================*/
#defineDLOG_4CH_DEFAULTS{0UL,\
NULL,\
NULL,\
NULL,\
NULL,\
0,\
1,\
0,\
0,\
0UL,\
0x400,\
(int(*)(int))DLOG_4CH_init,\
(int(*)(int))DLOG_4CH_update}
#endif
*******************************源文件*************************************
;==============================================================================
;Filename:
DLOG4CHC.ASM
;
;Originator:
AdvancedEmbeededControl(AEC)
;TexasInstrumentsInc.
;
;Description:
4-ChannelDataloggingmodule
;
;Date:
02/01/2002(DD/MM/YYYY)
;==============================================================================
;RoutineName:
data_log_update
;
;Cprototype:
voidDLOG_4CH_update(DLOG_4CH_handle);
;voidDLOG_4CH_init(DLOG_4CH_handle);
;
;Thestructobjectisdefinedintheheaderfile"dlog_4ch.h"asfollows:
;
;typedefstruct{
;longtask;/*Variable:
Taskaddresspointer*/
;int*iptr1;/*Input:
Firstinputpointer(Q15)*/
;int*iptr2;/*Input:
Secondinputpointer(Q15)*/
;int*iptr3;/*Input:
Thirdinputpointer(Q15)*/
;int*iptr4;/*Input:
Fourthinputpointer(Q15)*/
;inttrig_value;/*Input:
Triggerpoint(Q15)*/
;intprescalar;/*Parameter:
Datalogprescale*/
;intskip_cntr;/*Variable:
Datalogskipcounter*/
;intcntr;/*Variable:
Datalogcounter*/
;longwrite_ptr;/*Variable:
Graphaddresspointer*/
;intsize;/*Parameter:
MaximumdataDLOG_4CH_buffer*/
;int(*init)();/*Pointertoinitfunction*/
;int(*update)();/*Pointertoupdatefunction*/
;}DLOG_4CH;
;==============================================================================
;ExternalReference
.def_DLOG_4CH_update
.def_DLOG_4CH_init
;Datalogbufferdefinition
BUFF_SIZE.set400h
DLOG_4CH_buff1.usect"DLOG",BUFF_SIZE
DLOG_4CH_buff2.usect"DLOG",BUFF_SIZE
DLOG_4CH_buff3.usect"DLOG",BUFF_SIZE
DLOG_4CH_buff4.usect"DLOG",BUFF_SIZE
;==============================================================================
;InitializationFunction
;==============================================================================
_DLOG_4CH_init:
MOVLXAR5,#POS_TRIG_S1
MOVL*XAR4,XAR5;task=#POS_TRIG_S1
ADDBXAR4,#10;XAR4->trig_value
MOV*+XAR4[2],#0
MOVLXAR5,#DLOG_4CH_buff1
MOVL*+XAR4[4],XAR5;write_ptr=DLOG_4CH_buff1
MOVAL,*+XAR4[6];ACC=size
MOV*+XAR4[3],AL;cntr=size
LRETR
;==============================================================================
;DatalogUpdateFunction
;==============================================================================
_DLOG_4CH_update:
SETCSXM
MOVLXAR5,XAR4;XAR4->task
MOVLXAR7,*XAR4++;XAR4->iptr1,XAR7=task
ADDBXAR5,#10;XAR5->trig_value
LB*XAR7;BranchtoTASK
POS_TRIG_S1:
MOVACC,*XAR5;ACC=trig_value
MOVLXAR6,*XAR4;XAR6=iptr1
SUBACC,*XAR6;ACC=(trig_value-*iptr1)
BFDL_EXIT,LEQ;ExitifACC<=0
MOVLXAR6,#POS_TRIG_S2
MOVL*--XAR4,XAR6;task=POS_TRIG_S2
LRETR
POS_TRIG_S2:
MOVACC,*XAR5;ACC=trig_value
MOVLXAR6,*XAR4;XAR6=iptr1
SUBACC,*XAR6;ACC=(trig_value-*iptr1)
BFDL_EXIT,GEQ;ExitifACC>=0
MOVLXAR6,#DL_TRIGGERED
MOVL*--XAR4,XAR6;task=POS_TRIG_S2
LRETR
DL_TRIGGERED:
INC*+XAR5[2];skip_cntr=skip_cntr+1
MOVACC,*+XAR5[2];ACC=skip_cntr
SUBACC,*+XAR5[1];ACC=skip_cntr-prescalar
SBFDL_EXIT,NEQ;if(skip_cntr+1)MOV*+XAR5[2],#0;skip_cntr=0
MOVACC,*+XAR5[3];ACC=cntr
SBFDLOG_END,EQ
DEC*+XAR5[3];cntr=cntr-1
ADDBXAR5,#4;XAR5->write_ptr
MOVLXAR6,*XAR5;XAR6=write_ptr
ADDBXAR6,#1;XAR6=write_ptr+1
MOVL*XAR5,XAR6;write_ptr=write_ptr+1
SUBBXAR6,#1;XAR6=write_ptr
MOVAR0,#BUFF_SIZE;AR0=BUFF_SIZE
;LogsamplepointedbyIPTR1
MOVLXAR7,*XAR4++;XAR7=iptr1
MOVAL,*XAR7;AL=*iptr1
NOP*,ARP6
MOV*0++,AL;*write_ptr=*iptr1,XAR6=write_ptr+size
;LogsamplepointedbyIPTR2
MOVLXAR7,*XAR4++;XAR7=iptr2
MOVAL,*XAR7;AL=*iptr2
NOP*,ARP6
MOV*0++,AL;*write_ptr=*iptr2,XAR6=write_ptr+size
;LogsamplepointedbyIPTR3
MOVLXAR7,*XAR4++;XAR7=iptr3
MOVAL,*XAR7;AL=*iptr3
NOP*,ARP6
MOV*0++,AL;*write_ptr=*iptr3,XAR6=write_ptr+size
;LogsamplepointedbyIPTR4
MOVLXAR7,*XAR4++;XAR7=iptr4
MOVAL,*XAR7;AL=*iptr4
NOP*,ARP6
MOV*0++,AL;*write_ptr=*iptr4,XAR6=write_ptr+size
LRETR
;Reinitialisethemoduletologthedatawhentheloggingistriggerednext
DLOG_END:
MOVLXAR6,#DLOG_4CH_buff1
MOVL*+XAR5[4],XAR6;write_ptr=DLOG_4CH_buff1
MOVLXAR6,#POS_TRIG_S1
MOVL*--XAR4,XAR6;task=POS_TRIG_S2
MOVAL,*+XAR5[6];ACC=size
MOV*+XAR5[3],AL;cntr=size
DL_EXIT:
LRETR
********************************主程序**************************************
/////////////////////////// 无刷直流电动机 24V seakeke@ 和我联系//////////////////////////////////////////
1.
2.#include "DSP281x_Device.h" // DSP281x Headerfile Include File
3.#include "DSPMotor_Head.h"
4.
5.#include "IQmathLib.h"
6.#include "BLDCMotor.h"
7.#include "parameter.h"
8.
9.#include
10.///// 函数声明 ////////////////////////////////////////////////////////////
11.interrupt void MainISR(void);
12.
13.///// 全局变量声明
14.float32 SpeedRef = 0.20; // Speed reference (pu)
15.float32 T = 0.001/ISR_FREQUENCY; // Samping period (sec), see parameter.h
16.
17.Uint32 VirtualTimer = 0;
18.Uint16 ILoopFlag = FALSE;
19.Uint16 SpeedLoopFlag = FALSE;
20.int16 DFuncDesired = 0x1A00; // Desired duty cycle (Q15)=0.2
21.
22._iq CurrentSet = _IQ(0.3);
23.
24.Uint16 IsrTicker = 0;
25.Uint16 BackTicker = 0;
26.
27.int16 DlogCh1 = 0;
28.int16 DlogCh2 = 0;
29.int16 DlogCh3 = 0;
30.int16 DlogCh4 = 0;
31.
32.// Instance PID regulator to regulate the DC-bus current and speed
33.PIDREG3 pid1_idc = PIDREG3_DEFAULTS;
34.PIDREG3 pid1_spd = PIDREG3_DEFAULTS;
35.
36.// Instance a PWM driver instance
37.PWMGEN pwm1 = PWMGEN_DEFAULTS;
38.
39.// Create an instance of the ADC driver
40.ADCVALS adc1 = ADCVALS_DEFAULTS;
41.
42.// Instance a Hall effect driver
43.HALL3 hall1 = HALL3_DEFAULTS;
44.
45.// Instance a ramp controller to smoothly ramp the frequency
46.RMPCNTL rc1 = RMPCNTL_DEFAULTS;
47.
48.// Instance a RAMP2 Module
49.RMP2 rmp2 = RMP2_DEFAULTS;
50.
51.// Instance a MOD6 Module
52.MOD6CNT mod1 = MOD6CNT_DEFAULTS;
53.
54.// Instance a SPEED_PR Module
55.SPEED_MEAS_CAP speed1 = SPEED_MEAS_CAP_DEFAULTS;
56.
57.// Create an instance of DATALOG Module
58.DLOG_4CH dlog = DLOG_4CH_DEFAULTS;
59.
60.////////////////////////// 主程序 //////////////////////////////////////////////
61.
62.void main(void)
63.{
64.
65.// Initialize System Control registers, PLL, WatchDog, Clocks to default state:
66. // This function is found in the DSP281x_SysCtrl.c file.
67. InitSysCtrl();
68.
69.// HISPCP prescale register settings, normally it will be set to default values
70. EALLOW; // This is needed to write to EALLOW protected registers
71. SysCtrlRegs.HISPCP.all = 0x0000; // SYSCLKOUT/1
72. EDIS; // This is needed to disable write to EALLOW protected registers
73.
74.// Disable and clear all CPU interrupts:
75. DINT;
76. IER = 0x0000;
77. IFR = 0x0000;
78.
79.// Initialize Pie Control Registers To Default State:
80. // This function is found in the DSP281x_PieCtrl.c file.
81. InitPieCtrl();
82.
83.// Initialize the PIE Vector Table To a Known State:
84. // This function is found in DSP281x_PieVect.c.
85. // This function populates the P