1、2812CCS动态显示图形CCS view graph 动态显示图形(红色为主要内容)采用汇编,相对C实时性高*头文件*/* = File name: DLOG4CH.H Originator : Advanced Embeeded Control (AEC) Texas Instruments Inc. Description: Header file containing constants, data type definitions, and function prototypes for the DATALOG module. = History: - 18-5-2001 (DD/M
2、M/YYYY) Release Rev 1.0 -*/ #ifndef _DLOG4CH_H_ #define _DLOG4CH_H_ #define NULL 0 typedef struct long task; / Variable: Task address pointer int *iptr1; / Input: First input pointer (Q15) int *iptr2; / Input: Second input pointer (Q15) int *iptr3; / Input: Third input pointer (Q15) int *iptr4; / In
3、put: Fourth input pointer (Q15) int trig_value; / Input: Trigger point (Q15) int prescalar; / Parameter: Data log prescale int skip_cntr; / Variable: Data log skip counter int cntr; / Variable: Data log counter long write_ptr; / Variable: Graph address pointer int size; / Parameter: Maximum data buf
4、fer int (*init)(); / Pointer to init function int (*update)(); / Pointer to update function DLOG_4CH; typedef DLOG_4CH *DLOG_4CH_handle; void DLOG_4CH_init(void *); void DLOG_4CH_update(void *); /*= Default initalizer for the DLOG_4CH object. =*/ #define DLOG_4CH_DEFAULTS 0UL, NULL, NULL, NULL, NULL
5、, 0, 1, 0, 0, 0UL, 0x400, (int (*)(int)DLOG_4CH_init, (int (*)(int)DLOG_4CH_update #endif *源文件*;= ; File name : DLOG4CHC.ASM ; ; Originator : Advanced Embeeded Control (AEC) ; Texas Instruments Inc. ; ; Description : 4-Channel Data logging module ; ; Date : 02/01/2002 (DD/MM/YYYY) ;= ; Routine Name:
6、 data_log_update ; ; C prototype : void DLOG_4CH_update(DLOG_4CH_handle); ; void DLOG_4CH_init(DLOG_4CH_handle); ; ; The struct object is defined in the header file dlog_4ch.h as follows: ; ; typedef struct ; long task; /* Variable: Task address pointer */ ; int *iptr1; /* Input: First input pointer
7、 (Q15) */ ; int *iptr2; /* Input: Second input pointer (Q15) */ ; int *iptr3; /* Input: Third input pointer (Q15) */ ; int *iptr4; /* Input: Fourth input pointer (Q15) */ ; int trig_value; /* Input: Trigger point (Q15) */ ; int prescalar; /* Parameter: Data log prescale */ ; int skip_cntr; /* Variab
8、le: Data log skip counter */ ; int cntr; /* Variable: Data log counter */ ; long write_ptr; /* Variable: Graph address pointer */ ; int size; /* Parameter: Maximum data DLOG_4CH_buffer */ ; int (*init)(); /* Pointer to init function */ ; int (*update)(); /* Pointer to update function */ ; DLOG_4CH;
9、;= ; External Reference .def _DLOG_4CH_update .def _DLOG_4CH_init ; Data log buffer definition BUFF_SIZE .set 400h 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 ;= ; Initialization Function ;= _
10、DLOG_4CH_init: MOVL XAR5,#POS_TRIG_S1 MOVL *XAR4,XAR5 ; task=#POS_TRIG_S1 ADDB XAR4,#10 ; XAR4-trig_value MOV *+XAR42,#0 MOVL XAR5,#DLOG_4CH_buff1 MOVL *+XAR44,XAR5 ; write_ptr=DLOG_4CH_buff1 MOV AL,*+XAR46 ; ACC=size MOV *+XAR43,AL ; cntr=size LRETR ;= ; Datalog Update Function ;= _DLOG_4CH_update:
11、 SETC SXM MOVL XAR5,XAR4 ; XAR4-task MOVL XAR7,*XAR4+ ; XAR4-iptr1, XAR7=task ADDB XAR5,#10 ; XAR5-trig_value LB *XAR7 ; Branch to TASK POS_TRIG_S1: MOV ACC,*XAR5 ; ACC=trig_value MOVL XAR6,*XAR4 ; XAR6=iptr1 SUB ACC,*XAR6 ; ACC=(trig_value - *iptr1) BF DL_EXIT,LEQ ; Exit if ACC = 0 MOVL XAR6,#DL_TR
12、IGGERED MOVL *-XAR4,XAR6 ; task=POS_TRIG_S2 LRETR DL_TRIGGERED: INC *+XAR52 ; skip_cntr=skip_cntr+1 MOV ACC,*+XAR52 ; ACC=skip_cntr SUB ACC,*+XAR51 ; ACC=skip_cntr-prescalar SBF DL_EXIT,NEQ ; if (skip_cntr+1) write_ptr MOVL XAR6,*XAR5 ; XAR6=write_ptr ADDB XAR6,#1 ; XAR6=write_ptr+1 MOVL *XAR5,XAR6
13、; write_ptr=write_ptr + 1 SUBB XAR6,#1 ; XAR6=write_ptr MOV AR0,#BUFF_SIZE ; AR0=BUFF_SIZE ; Log sample pointed by IPTR1 MOVL XAR7,*XAR4+ ; XAR7=iptr1 MOV AL,*XAR7 ; AL=*iptr1 NOP *,ARP6 MOV *0+,AL ; *write_ptr=*iptr1, XAR6=write_ptr+size ; Log sample pointed by IPTR2 MOVL XAR7,*XAR4+ ; XAR7=iptr2 M
14、OV AL,*XAR7 ; AL=*iptr2 NOP *,ARP6 MOV *0+,AL ; *write_ptr=*iptr2, XAR6=write_ptr+size ; Log sample pointed by IPTR3 MOVL XAR7,*XAR4+ ; XAR7=iptr3 MOV AL,*XAR7 ; AL=*iptr3 NOP *,ARP6 MOV *0+,AL ; *write_ptr=*iptr3, XAR6=write_ptr+size ; Log sample pointed by IPTR4 MOVL XAR7,*XAR4+ ; XAR7=iptr4 MOV A
15、L,*XAR7 ; AL=*iptr4 NOP *,ARP6 MOV *0+,AL ; *write_ptr=*iptr4, XAR6=write_ptr+size LRETR ; Reinitialise the module to log the data when the logging is triggered next DLOG_END: MOVL XAR6,#DLOG_4CH_buff1 MOVL *+XAR54,XAR6 ; write_ptr=DLOG_4CH_buff1 MOVL XAR6,#POS_TRIG_S1 MOVL *-XAR4,XAR6 ; task=POS_TR
16、IG_S2 MOV AL,*+XAR56 ; ACC=size MOV *+XAR53,AL ; cntr=size DL_EXIT: LRETR *主程序*/无刷直流电动机24Vseakeke和我联系/ 1. 2. #includeDSP281x_Device.h/DSP281xHeaderfileIncludeFile 3. #includeDSPMotor_Head.h 4. 5. #includeIQmathLib.h 6. #includeBLDCMotor.h 7. #includeparameter.h 8. 9. #include 10. /函数声明/ 11. interrup
17、tvoidMainISR(void);12. 13. /全局变量声明 14. float32SpeedRef=0.20;/Speedreference(pu) 15. float32T=0.001/ISR_FREQUENCY;/Sampingperiod(sec),seeparameter.h 16. 17. Uint32VirtualTimer=0;18. Uint16ILoopFlag=FALSE;19. Uint16SpeedLoopFlag=FALSE;20. int16DFuncDesired=0x1A00;/Desireddutycycle(Q15)=0.2 21. 22. _iq
18、CurrentSet=_IQ(0.3);23. 24. Uint16IsrTicker=0;25. Uint16BackTicker=0;26. 27. int16DlogCh1=0;28. int16DlogCh2=0;29. int16DlogCh3=0;30. int16DlogCh4=0;31. 32. /InstancePIDregulatortoregulatetheDC-buscurrentandspeed 33. PIDREG3pid1_idc=PIDREG3_DEFAULTS;34. PIDREG3pid1_spd=PIDREG3_DEFAULTS;35. 36. /Inst
19、anceaPWMdriverinstance 37. PWMGENpwm1=PWMGEN_DEFAULTS;38. 39. /CreateaninstanceoftheADCdriver 40. ADCVALSadc1=ADCVALS_DEFAULTS;41. 42. /InstanceaHalleffectdriver 43. HALL3hall1=HALL3_DEFAULTS;44. 45. /Instancearampcontrollertosmoothlyrampthefrequency 46. RMPCNTLrc1=RMPCNTL_DEFAULTS;47. 48. /Instance
20、aRAMP2Module 49. RMP2rmp2=RMP2_DEFAULTS;50. 51. /InstanceaMOD6Module 52. MOD6CNTmod1=MOD6CNT_DEFAULTS;53. 54. /InstanceaSPEED_PRModule 55. SPEED_MEAS_CAPspeed1=SPEED_MEAS_CAP_DEFAULTS;56. 57. /CreateaninstanceofDATALOGModule 58. DLOG_4CHdlog=DLOG_4CH_DEFAULTS;59. 60. /主程序/ 61. 62. voidmain(void)63.
21、64. 65. /InitializeSystemControlregisters,PLL,WatchDog,Clockstodefaultstate: 66. /ThisfunctionisfoundintheDSP281x_SysCtrl.cfile. 67. InitSysCtrl();68. 69. /HISPCPprescaleregistersettings,normallyitwillbesettodefaultvalues 70. EALLOW;/ThisisneededtowritetoEALLOWprotectedregisters 71. SysCtrlRegs.HISP
22、CP.all=0x0000;/SYSCLKOUT/1 72. EDIS;/ThisisneededtodisablewritetoEALLOWprotectedregisters 73. 74. /DisableandclearallCPUinterrupts: 75. DINT;76. IER=0x0000;77. IFR=0x0000;78. 79. /InitializePieControlRegistersToDefaultState: 80. /ThisfunctionisfoundintheDSP281x_PieCtrl.cfile. 81. InitPieCtrl();82. 83. /InitializethePIEVectorTableToaKnownState: 84. /ThisfunctionisfoundinDSP281x_PieVect.c. 85. /ThisfunctionpopulatestheP