MotorWare f2806x Module API Documentation
slip.h
Go to the documentation of this file.
1 /* --COPYRIGHT--,BSD
2  * Copyright (c) 2012, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  * --/COPYRIGHT--*/
32 #ifndef _SLIP_H_
33 #define _SLIP_H_
34 
40 
41 
42 // **************************************************************************
43 // the includes
46 
51 
52 
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56 
57 
58 // **************************************************************************
59 // the defines
60 
61 
62 // **************************************************************************
63 // the typedefs
64 
65 
68 typedef struct _SLIP_Obj_
69 {
71  int32_t enc_elec_angle;
72  int32_t incremental_slip;
73  int32_t enc_slip_angle;
75 } SLIP_Obj;
76 
77 
80 typedef struct _SLIP_Handle_ *SLIP_Handle;
81 
82 
83 // **************************************************************************
84 // the function prototypes
85 
86 
90 inline _iq SLIP_getMagneticAngle(SLIP_Handle slipHandle) {
91  SLIP_Obj *slip = (SLIP_Obj *) slipHandle;
92 
93  return slip->enc_magnetic_angle;
94 }
95 
96 
101 extern SLIP_Handle SLIP_init(void *pMemory,const size_t numBytes);
102 
103 
107 extern void SLIP_run(SLIP_Handle slipHandle);
108 
109 
114 inline void SLIP_setElectricalAngle(SLIP_Handle slipHandle, _iq electricalAngle) {
115  SLIP_Obj *slip = (SLIP_Obj *) slipHandle;
116 
117  // set the electrical angle
118  slip->enc_elec_angle = electricalAngle;
119 
120  return;
121 }
122 
123 
128 inline void SLIP_setSlipVelocity(SLIP_Handle slipHandle, _iq slipVelocity) {
129  SLIP_Obj *slip = (SLIP_Obj *) slipHandle;
130 
131  // Calcaulte the amount of incremental slip based on the slip velocity & sample time
132  slip->incremental_slip = _IQmpy(slipVelocity, slip->sample_time);
133 
134  return;
135 }
136 
137 
142 extern void SLIP_setup(SLIP_Handle slipHandle, _iq sampleTime);
143 
144 
145 #ifdef __cplusplus
146 }
147 #endif // extern "C"
148 
150 #endif // end of _SLIP_H_ definition
151 
SLIP_Handle SLIP_init(void *pMemory, const size_t numBytes)
Initializes the encoder object.
Definition: slip.c:56
struct _SLIP_Handle_ * SLIP_Handle
Defines the slip handle.
Definition: slip.h:80
Contains the public interface to the types definitions.
int32_t incremental_slip
incremental amount of slip per sample time
Definition: slip.h:72
int32_t enc_elec_angle
current electrical angle from encoder
Definition: slip.h:71
long _iq
int32_t enc_slip_angle
amount of total slip in Q24
Definition: slip.h:73
#define _IQmpy(A, B)
void SLIP_setup(SLIP_Handle slipHandle, _iq sampleTime)
Initializes slip object parameters.
Definition: slip.c:70
_iq sample_time
sample time of the SLIP module
Definition: slip.h:70
int32_t enc_magnetic_angle
current magnetic angle in Q24
Definition: slip.h:74
void SLIP_setSlipVelocity(SLIP_Handle slipHandle, _iq slipVelocity)
Set the amount of slip velocity and calculates the incremental slip.
Definition: slip.h:128
_iq SLIP_getMagneticAngle(SLIP_Handle slipHandle)
Returns the current magnetic angle.
Definition: slip.h:90
struct _SLIP_Obj_ SLIP_Obj
Defines the slip object.
void SLIP_run(SLIP_Handle slipHandle)
Based on the electrical angle and the incremental slip, calculates the magnetic angle.
Definition: slip.c:90
void SLIP_setElectricalAngle(SLIP_Handle slipHandle, _iq electricalAngle)
Set the electrical angle.
Definition: slip.h:114
Defines the slip object.
Definition: slip.h:68