]> rtime.felk.cvut.cz Git - fpga/rpi-motor-control-pxmc.git/blob - src/app/rpi-pmsm-test1/appl_pxmc.h
Raspberry Pi 3-phase motor control educational system based on PXMC.
[fpga/rpi-motor-control-pxmc.git] / src / app / rpi-pmsm-test1 / appl_pxmc.h
1 /*******************************************************************
2   Components for embedded applications builded for
3   laboratory and medical instruments firmware
4
5   appl_pxmc.h - SPI connected motor control board specific
6                 extensions
7
8   (C) 2001-2015 by Pavel Pisa pisa@cmp.felk.cvut.cz
9   (C) 2002-2015 by PiKRON Ltd. http://www.pikron.com
10
11   This file can be used and copied according to next
12   license alternatives
13    - GPL - GNU Public License
14    - other license provided by project originators
15
16  *******************************************************************/
17
18 #ifndef _APPL_PXMC_H_
19 #define _APPL_PXMC_H_
20
21 #include <stdint.h>
22 #include <pxmc.h>
23
24 struct spimc_state_t;
25
26 typedef struct pxmc_spimc_state_t {
27   pxmc_state_t base;
28   struct spimc_state_t *spimc_state;
29   uint32_t steps_pos_prev;
30   uint32_t cur_d_cum_prev;
31   uint32_t cur_q_cum_prev;
32   int32_t  cur_d_err_sum;
33   int32_t  cur_q_err_sum;
34   short    cur_d_p;
35   short    cur_d_i;
36   short    cur_q_p;
37   short    cur_q_i;
38   short    cur_hold;
39 } pxmc_spimc_state_t;
40
41 #define pxmc_spimc_state_offs(_fld) \
42                 (((size_t)&((pxmc_spimc_state_t *)0L)->_fld) - \
43                  ((size_t)&((pxmc_spimc_state_t *)0L)->base))
44
45 extern int appl_errstop_mode;
46 extern int appl_idlerel_time;
47 int pxmc_process_state_check(unsigned long *pbusy_bits,
48                              unsigned long *perror_bits);
49
50 int pxmc_spimc_pwm_direct_wr(unsigned chan, unsigned pwm, int en);
51
52 int pxmc_spimc_wait_rx_done(void);
53
54 #endif /*_APPL_PXMC_H_*/