1 /*******************************************************************
2 Components for embedded applications builded for
3 laboratory and medical instruments firmware
5 pxmcc_interface.h - multi axis motion controller coprocessor
6 interface for access lx-rocon system
8 (C) 2001-2014 by Pavel Pisa pisa@cmp.felk.cvut.cz
9 (C) 2002-2014 by PiKRON Ltd. http://www.pikron.com
11 This file can be used and copied according to next
13 - GPL - GNU Public License
14 - other license provided by project originators
16 *******************************************************************/
18 #ifndef _PXMCC_INTERFACE_H_
19 #define _PXMCC_INTERFACE_H_
23 #include "pxmcc_types.h"
26 pxmcc_data_t *pxmc_rocon_mcc_data(void)
28 return (pxmcc_data_t *)fpga_tumbl_dmem;
32 pxmcc_axis_data_t *pxmc_rocon_mcs2pxmcc(pxmc_state_t *mcs)
34 pxmcc_data_t *mcc_data = pxmc_rocon_mcc_data();
36 if (mcs->pxms_inp_info >= PXMCC_AXIS_COUNT)
39 return mcc_data->axis + mcs->pxms_inp_info;
43 void pxmcc_axis_pwm_dq_out(pxmc_state_t *mcs, int pwm_d, int pwm_q)
45 volatile pxmcc_axis_data_t *mcc_axis = pxmc_rocon_mcs2pxmcc(mcs);
46 mcc_axis->pwm_dq = (pwm_d << 16) | (pwm_q & 0xffff);
50 void pxmcc_axis_enable(pxmc_state_t *mcs, int enable)
52 volatile pxmcc_axis_data_t *mcc_axis = pxmc_rocon_mcs2pxmcc(mcs);
53 mcc_axis->ccflg = enable? 1: 0;
57 void pxmcc_axis_get_cur_dq_act(pxmc_state_t *mcs, int *p_cur_d, int *p_cur_q)
59 volatile pxmcc_axis_data_t *mcc_axis = pxmc_rocon_mcs2pxmcc(mcs);
60 uint32_t cur_dq = mcc_axis->cur_dq;
61 *p_cur_d = (int16_t)(cur_dq >> 16);
62 *p_cur_q = (int16_t)(cur_dq);
65 void pxmcc_axis_get_cur_dq_filt(pxmc_state_t *mcs, int *p_cur_d, int *p_cur_q);
67 void pxmcc_pxmc_ptofs2mcc(pxmc_state_t *mcs, int enable_update);
69 int pxmcc_axis_setup(pxmc_state_t *mcs, int mode);
71 #endif /*_PXMCC_INTERFACE_H_*/