⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 incap.h

📁 Position PID algorithm control motor by dsPIC
💻 H
字号:
/************************************************************************/
/*              Header for Input Capture module library functions       */
/************************************************************************/

#if defined(__dsPIC30F__)
#include <p30fxxxx.h>
#elif defined(__dsPIC33F__)
#include <p33Fxxxx.h>
#elif defined(__PIC24H__)
#include <p24Hxxxx.h>
#endif

#ifndef __INCAP_H
#define __INCAP_H

/* List of SFRs for Input Capture modules */
/* This list contains the SFRs with default (POR) values to be used for configuring Input capture modules */
/* The user can modify this based on the requirement */
#define IC1CON_VALUE            0x0000
#define IC1BUF_VALUE            0x0000
#define IC2CON_VALUE            0x0000
#define IC2BUF_VALUE            0x0000

#ifdef _IC3IF
#define IC3CON_VALUE            0x0000
#define IC3BUF_VALUE            0x0000
#endif

#ifdef _IC4IF
#define IC4CON_VALUE            0x0000
#define IC4BUF_VALUE            0x0000
#endif

#ifdef _IC5IF
#define IC5CON_VALUE            0x0000
#define IC5BUF_VALUE            0x0000
#endif

#ifdef _IC6IF
#define IC6CON_VALUE            0x0000
#define IC6BUF_VALUE            0x0000
#endif

#ifdef _IC7IF
#define IC7CON_VALUE            0x0000
#define IC7BUF_VALUE            0x0000
#endif

#ifdef _IC8IF
#define IC8CON_VALUE            0x0000
#define IC8BUF_VALUE            0x0000
#endif

/* Input Capture Config (ICxCON Reg) Bit defines */

#define IC_IDLE_CON             0xdfff  /* IC operate in sleep mode */
#define IC_IDLE_STOP            0xffff  /* IC stop in sleep mode */

#define IC_TIMER2_SRC           0xffff  /* Timer2 is the clock source for Capture */
#define IC_TIMER3_SRC           0xff7f  /* Timer3 is the clock source for Capture */

#define IC_INT_4CAPTURE         0xffff  /* Interrupt on fourth Capture*/
#define IC_INT_3CAPTURE         0xffdf  /* Interrupt on third Capture */
#define IC_INT_2CAPTURE         0xffbf  /* Interrupt on second Capture*/
#define IC_INT_1CAPTURE         0xff9f  /* Interrupt on first Capture */

#define IC_INTERRUPT            0xffff  /* Interrupt pin only in CPU sleep and idle mode */

#define IC_EVERY_16_RISE_EDGE   0xfffd  /* Every 16th rising edge */
#define IC_EVERY_4_RISE_EDGE    0xfffc  /* Every 4th rising edge  */
#define IC_EVERY_RISE_EDGE      0xfffb  /* Every rising edge      */
#define IC_EVERY_FALL_EDGE      0xfffa  /* Every falling edge      */
#define IC_EVERY_EDGE           0xfff9  /* Every rising/falling edge */
#define IC_INPUTCAP_OFF         0xfff8  /* Input Capture Off      */

/* defines for IC interrupts */
#define IC_INT_ON               0xffff  /* Input Capture Enable  */
#define IC_INT_OFF              0xfff7  /* Input Capture Disable */

#define IC_INT_PRIOR_0          0xfff8  /* Input Capture PriorityLevel 0 */
#define IC_INT_PRIOR_1          0xfff9  /* Input Capture PriorityLevel 1 */
#define IC_INT_PRIOR_2          0xfffa  /* Input Capture PriorityLevel 2 */
#define IC_INT_PRIOR_3          0xfffb  /* Input Capture PriorityLevel 3 */
#define IC_INT_PRIOR_4          0xfffc  /* Input Capture PriorityLevel 4 */
#define IC_INT_PRIOR_5          0xfffd  /* Input Capture PriorityLevel 5 */
#define IC_INT_PRIOR_6          0xfffe  /* Input Capture PriorityLevel 6 */
#define IC_INT_PRIOR_7          0xffff  /* Input Capture PriorityLevel 7 */
 
#ifdef _IC1IF

#define EnableIntIC1                    _IC1IE = 1
#define DisableIntIC1                   _IC1IE = 0
#define SetPriorityIntIC1(priority)     _IC1IP = priority

/* CloseCapture 1 */
void CloseCapture1(void);

/* ConfigIntCapture1 */
void ConfigIntCapture1(unsigned int config);

/* OpenCapture1 */
void OpenCapture1(unsigned int config);

/* ReadCapture1 */
void ReadCapture1(unsigned int * buffer);

/*Capture init*/
void cap1_init(void);

void __attribute__((__interrupt__)) _IC1Interrupt(void);

#endif

#ifdef _IC2IF

#define EnableIntIC2                    _IC2IE = 1
#define DisableIntIC2                   _IC2IE = 0
#define SetPriorityIntIC2(priority)     _IC2IP = priority

/* CloseCapture 2 */
void CloseCapture2(void);

/* ConfigIntCapture2 */
void ConfigIntCapture2(unsigned int config);

/* OpenCapture2 */
void OpenCapture2(unsigned int config);

/* ReadCapture2 */ 
void ReadCapture2(unsigned int * buffer);

/*Capture init*/
void cap2_init(void);

/*ISR handle*/
void __attribute__((__interrupt__)) _IC2Interrupt(void);

#endif

#ifdef _IC3IF

#define EnableIntIC3                    _IC3IE = 1
#define DisableIntIC3                   _IC3IE = 0
#define SetPriorityIntIC3(priority)     _IC3IP = priority

/* CloseCapture 3 */
void CloseCapture3();

/* ConfigIntCapture3 */
void ConfigIntCapture3(unsigned int );

/* OpenCapture3 */
void OpenCapture3(unsigned int  );

/* ReadCapture3 */ 
void ReadCapture3(unsigned int * buffer);

#endif

#ifdef _IC4IF

#define EnableIntIC4                    _IC4IE = 1
#define DisableIntIC4                   _IC4IE = 0
#define SetPriorityIntIC4(priority)     _IC4IP = priority

/* CloseCapture 4 */
void CloseCapture4();

/* ConfigIntCapture4 */
void ConfigIntCapture4(unsigned int );

/* OpenCapture4 */
void OpenCapture4(unsigned int  );

/* ReadCapture4 */
void ReadCapture4(unsigned int * buffer);

#endif

#ifdef _IC5IF

#define EnableIntIC5                    _IC5IE = 1
#define DisableIntIC5                   _IC5IE = 0
#define SetPriorityIntIC5(priority)     _IC5IP = priority

/* CloseCapture 5 */
void CloseCapture5();

/* ConfigIntCapture5 */
void ConfigIntCapture5(unsigned int );

/* OpenCapture5 */
void OpenCapture5(unsigned int  );

/* ReadCapture5 */
void ReadCapture5(unsigned int * buffer);

#endif

#ifdef _IC6IF

#define EnableIntIC6                    _IC6IE = 1
#define DisableIntIC6                   _IC6IE = 0
#define SetPriorityIntIC6(priority)     _IC6IP = priority

/* CloseCapture 6 */
void CloseCapture6();

/* ConfigIntCapture6 */
void ConfigIntCapture6(unsigned int );

/* OpenCapture6 */
void OpenCapture6(unsigned int  );

/* ReadCapture6 */
void ReadCapture6(unsigned int * buffer);

#endif

#ifdef _IC7IF

#define EnableIntIC7                     _IC7IE = 1
#define DisableIntIC7                    _IC7IE = 0
#define SetPriorityIntIC7(priority)      _IC7IP = priority

/* CloseCapture 7 */
void CloseCapture7(); 

/* ConfigIntCapture7 */
void ConfigIntCapture7(unsigned int );

/* OpenCapture7 */
void OpenCapture7(unsigned int  );

/* ReadCapture7 */
void ReadCapture7(unsigned int * buffer);

#endif

#ifdef _IC8IF

#define EnableIntIC8                     _IC8IE = 1
#define DisableIntIC8                    _IC8IE = 0
#define SetPriorityIntIC8(priority)      _IC8IP = priority

/* CloseCapture 8 */
void CloseCapture8();

/* ConfigIntCapture8 */
void ConfigIntCapture8(unsigned int );

/* OpenCapture8 */
void OpenCapture8(unsigned int  );

/* ReadCapture8 */
void ReadCapture8(unsigned int * buffer);

#endif

#endif  /*__INCAP_H  */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -