]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/lx-rocon.git/blobdiff - sw/app/rocon/appl_tests.c
Prepare PXMCC data structures to be better prepared for multiple axes support.
[fpga/lx-cpu1/lx-rocon.git] / sw / app / rocon / appl_tests.c
index a46987b1aeff53458b9cb836be2a2df4e9aaf5fb..3e4283569ddc7f8d8f8711cfaeb75e98f99acde3 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "appl_defs.h"
 #include "appl_fpga.h"
+#include "pxmcc_types.h"
 
 int cmd_do_test_memusage(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
 {
@@ -407,10 +408,13 @@ int cmd_do_testtumblefw(cmd_io_t *cmd_io, const struct cmd_des *des, char *param
   uint32_t irc;
   uint32_t ptirc;
   uint32_t ptreci;
+  uint32_t pwmtx_info;
   uint64_t ull;
   pxmc_state_t *mcs = pxmc_main_list.pxml_arr[0];
+  volatile pxmcc_data_t *mcc_data = (pxmcc_data_t *)fpga_tumbl_dmem;
+  volatile pxmcc_axis_data_t *mcc_axis = mcc_data->axis + 0;
 
-  fpga_tumbl_dmem[0] = 0;
+  mcc_axis->ccflg = 0;
 
   si_skspace(&ps);
   if (si_long(&ps, &pwm_d, 0) < 0)
@@ -427,18 +431,36 @@ int cmd_do_testtumblefw(cmd_io_t *cmd_io, const struct cmd_des *des, char *param
   ull = (1ULL << 32) * mcs->pxms_ptper;
   ptreci = (ull + ptirc / 2) / ptirc;
 
-  fpga_tumbl_dmem[0] = 0;
-  fpga_tumbl_dmem[1] = (pwm_d << 16) | (pwm_q & 0xffff);
+  pwmtx_info = (9 << 0) | (10 << 8) | (11 << 16);
 
-  fpga_tumbl_dmem[4] = ptirc;
-  fpga_tumbl_dmem[5] = ptreci;
-  fpga_tumbl_dmem[6] = ptofs;
+  mcc_axis->inp_info = mcs->pxms_inp_info;
+  mcc_axis->out_info = mcs->pxms_out_info;
+  mcc_axis->pwmtx_info = pwmtx_info;
+
+  mcc_axis->ptirc = ptirc;
+  mcc_axis->ptreci = ptreci;
+  mcc_axis->ptofs = ptofs;
+
+  mcc_axis->ccflg = 0;
+  mcc_axis->pwm_dq = (pwm_d << 16) | (pwm_q & 0xffff);
 
   pxmc_clear_flags(mcs,PXMS_ENO_m|PXMS_ENG_m|PXMS_ENR_m|PXMS_BSY_m);
 
-  fpga_tumbl_dmem[0] = 1;
+  mcc_axis->ccflg = 1;
+
+  if (0) {
+    mcc_data->axis[1].pwmtx_info = (12 << 0) | (13 << 8) | (14 << 16);
+    mcc_data->axis[1].ccflg = 1;
+    mcc_data->axis[2].pwmtx_info = (12 << 0) | (13 << 8) | (14 << 16);
+    mcc_data->axis[2].ccflg = 1;
+    mcc_data->axis[3].pwmtx_info = (12 << 0) | (13 << 8) | (14 << 16);
+    mcc_data->axis[3].ccflg = 1;
+  }
 
-  printf("spd %ld\n",mcs->pxms_as);
+  printf("spd %ld act_idle %"PRIu32" min_idle %"PRIu32" avail %lu pwm_cycle %"PRIu32"\n",
+         mcs->pxms_as, mcc_data->common.act_idle, mcc_data->common.min_idle,
+         (mcc_data->common.pwm_cycle + 6) / 6, mcc_data->common.pwm_cycle);
+  mcc_data->common.min_idle = 0x7fff;
 
   return 0;
 }