Personal fork of the library for direct control instead of library control

Dependencies:   X_NUCLEO_COMMON

Dependents:   Thesis_Rotating_Platform

Fork of X_NUCLEO_IHM01A1 by Arkadi Rafalovich

Revision:
18:2d6ab2b93685
Parent:
17:35b9ca8c4bd6
Child:
20:a8e81b65f0af
--- a/Components/l6474/l6474_class.h	Mon Jan 04 15:54:07 2016 +0000
+++ b/Components/l6474/l6474_class.h	Wed Jan 13 14:35:59 2016 +0000
@@ -98,7 +98,7 @@
     L6474(PinName flag_irq, PinName standby_reset, PinName direction, PinName pwm, PinName ssel, DevSPI &spi) : StepperMotor(), flag_irq(flag_irq), standby_reset(standby_reset), direction(direction), pwm(pwm), ssel(ssel), dev_spi(spi)
     {
         /* Checking stackability. */
-        if (!(numberOfDevices < MAX_NUMBER_OF_DEVICES))
+        if (!(number_of_devices < MAX_NUMBER_OF_DEVICES))
             error("Instantiation of the L6474 component failed: it can be stacked up to %d times.\r\n", MAX_NUMBER_OF_DEVICES);
 
         /* ACTION 4 ----------------------------------------------------------*
@@ -109,10 +109,10 @@
          *   measure = 0;                                                     *
          *   instance_id = number_of_instances++;                             *
          *--------------------------------------------------------------------*/
-        errorHandlerCallback = 0;
-        deviceInstance = numberOfDevices++;
-        memset(spiTxBursts, 0, L6474_CMD_ARG_MAX_NB_BYTES * MAX_NUMBER_OF_DEVICES * sizeof(uint8_t));
-        memset(spiRxBursts, 0, L6474_CMD_ARG_MAX_NB_BYTES * MAX_NUMBER_OF_DEVICES * sizeof(uint8_t));
+        error_handler_callback = 0;
+        device_instance = number_of_devices++;
+        memset(spi_tx_bursts, 0, L6474_CMD_ARG_MAX_NB_BYTES * MAX_NUMBER_OF_DEVICES * sizeof(uint8_t));
+        memset(spi_rx_bursts, 0, L6474_CMD_ARG_MAX_NB_BYTES * MAX_NUMBER_OF_DEVICES * sizeof(uint8_t));
     }
     
     /**
@@ -150,7 +150,7 @@
      */
     virtual int Init(void *init = NULL)
     {
-        return (int) L6474_Init((MOTOR_InitTypeDef *) init);
+        return (int) L6474_Init((L6474_InitTypeDef *) init);
     }
 
     /**
@@ -189,14 +189,14 @@
      *           + L6474_RESERVED_REG04
      *           + L6474_RESERVED_REG05
      *           + L6474_RESERVED_REG06
-     *           + L6474_TVAL
+     *           + L6474_TVAL           : value in mA
      *           + L6474_RESERVED_REG07
      *           + L6474_RESERVED_REG08
      *           + L6474_RESERVED_REG09
      *           + L6474_RESERVED_REG10
      *           + L6474_T_FAST
-     *           + L6474_TON_MIN
-     *           + L6474_TOFF_MIN
+     *           + L6474_TON_MIN        : value in us
+     *           + L6474_TOFF_MIN       : value in us
      *           + L6474_RESERVED_REG11
      *           + L6474_ADC_OUT
      *           + L6474_OCD_TH
@@ -209,9 +209,26 @@
      *           + L6474_RESERVED_REG14
      *           + L6474_INEXISTENT_REG
      */
-    virtual unsigned int GetParameter(unsigned int parameter)
+    virtual float GetParameter(unsigned int parameter)
     {
-        return (unsigned int) L6474_CmdGetParam((L6474_Registers_t) parameter);
+        unsigned int register_value = (unsigned int) L6474_CmdGetParam((L6474_Registers_t) parameter);
+        float value;
+
+        switch ((L6474_Registers_t) parameter)
+        {
+            case L6474_TVAL:
+                value = L6474_Par_to_Tval_Current((float) register_value);
+                break;
+            case L6474_TON_MIN:
+            case L6474_TOFF_MIN:
+                value = L6474_Par_to_Tmin_Time((float) register_value);
+                break;
+            default:
+                value = (float) register_value;
+                break;
+        }
+        
+        return value;
     }
 
     /**
@@ -309,14 +326,14 @@
      *           + L6474_RESERVED_REG04
      *           + L6474_RESERVED_REG05
      *           + L6474_RESERVED_REG06
-     *           + L6474_TVAL
+     *           + L6474_TVAL           : value in mA
      *           + L6474_RESERVED_REG07
      *           + L6474_RESERVED_REG08
      *           + L6474_RESERVED_REG09
      *           + L6474_RESERVED_REG10
      *           + L6474_T_FAST
-     *           + L6474_TON_MIN
-     *           + L6474_TOFF_MIN
+     *           + L6474_TON_MIN        : value in us
+     *           + L6474_TOFF_MIN       : value in us
      *           + L6474_RESERVED_REG11
      *           + L6474_ADC_OUT
      *           + L6474_OCD_TH
@@ -329,9 +346,25 @@
      *           + L6474_RESERVED_REG14
      *           + L6474_INEXISTENT_REG
      */
-    virtual void SetParameter(unsigned int parameter, unsigned int value)
+    virtual void SetParameter(unsigned int parameter, float value)
     {
-        L6474_CmdSetParam((L6474_Registers_t) parameter, (unsigned int) value);
+        float register_value;
+
+        switch ((L6474_Registers_t) parameter)
+        {
+            case L6474_TVAL:
+                register_value = L6474_Tval_Current_to_Par(value);
+                break;
+            case L6474_TON_MIN:
+            case L6474_TOFF_MIN:
+                register_value = L6474_Tmin_Time_to_Par(value);
+                break;
+            default:
+                register_value = value;
+                break;
+        }
+
+        L6474_CmdSetParam((L6474_Registers_t) parameter, (unsigned int) register_value);
     }
 
     /**
@@ -621,7 +654,7 @@
      */
     void AttachFlagIRQ(void (*fptr)(void))
     {
-        flag_irq.rise(fptr);
+        flag_irq.fall(fptr);
     }
     
     /**
@@ -665,7 +698,7 @@
      *   DrvStatusTypeDef COMPONENT_ComputeAverage(void);    //(3)            *
      *------------------------------------------------------------------------*/
     void L6474_AttachErrorHandler(void (*callback)(uint16_t error));
-    DrvStatusTypeDef L6474_Init(MOTOR_InitTypeDef *init);
+    DrvStatusTypeDef L6474_Init(L6474_InitTypeDef *init);
     DrvStatusTypeDef L6474_ReadID(uint8_t *id);
     uint16_t L6474_GetAcceleration(void);
     uint16_t L6474_GetCurrentSpeed(void);
@@ -706,12 +739,15 @@
     void L6474_ErrorHandler(uint16_t error);
     void L6474_SendCommand(uint8_t param);
     void L6474_SetRegisterToPredefinedValues(void);
+    void L6474_SetRegisterToInitializationValues(L6474_InitTypeDef *init);
     void L6474_WriteBytes(uint8_t *pByteToTransmit, uint8_t *pReceivedByte);
     void L6474_SetDeviceParamsToPredefinedValues(void);
     void L6474_StartMovement(void);
     void L6474_StepClockHandler(void);
-    uint8_t L6474_Tval_Current_to_Par(double Tval);
-    uint8_t L6474_Tmin_Time_to_Par(double Tmin);
+    float L6474_Tval_Current_to_Par(float current_mA);
+    float L6474_Par_to_Tval_Current(float Tval);
+    float L6474_Tmin_Time_to_Par(float ton_min_us);
+    float L6474_Par_to_Tmin_Time(float Tmin);
 
 
     /*** Component's I/O Methods ***/
@@ -860,7 +896,7 @@
      */
     uint8_t L6474_SpiWriteBytes(uint8_t *pByteToTransmit, uint8_t *pReceivedByte)
     {
-        return (uint8_t) (ReadWrite(pReceivedByte, pByteToTransmit, numberOfDevices) == COMPONENT_OK ? 0 : 1);
+        return (uint8_t) (ReadWrite(pReceivedByte, pByteToTransmit, number_of_devices) == COMPONENT_OK ? 0 : 1);
     }
 
 
@@ -929,21 +965,21 @@
      *   static int number_of_instances;                                      *
      *------------------------------------------------------------------------*/
     /* Data. */
-    void (*errorHandlerCallback)(uint16_t error);
-    deviceParams_t devicePrm;
-    uint8_t deviceInstance;
+    void (*error_handler_callback)(uint16_t error);
+    deviceParams_t device_prm;
+    uint8_t device_instance;
 
     /* Static data. */
-    static uint8_t numberOfDevices;
-    static uint8_t spiTxBursts[L6474_CMD_ARG_MAX_NB_BYTES][MAX_NUMBER_OF_DEVICES];
-    static uint8_t spiRxBursts[L6474_CMD_ARG_MAX_NB_BYTES][MAX_NUMBER_OF_DEVICES];
+    static uint8_t number_of_devices;
+    static uint8_t spi_tx_bursts[L6474_CMD_ARG_MAX_NB_BYTES][MAX_NUMBER_OF_DEVICES];
+    static uint8_t spi_rx_bursts[L6474_CMD_ARG_MAX_NB_BYTES][MAX_NUMBER_OF_DEVICES];
 
 
 public:
 
     /* Static data. */
-    static bool spiPreemtionByIsr;
-    static bool isrFlag;
+    static bool spi_preemtion_by_isr;
+    static bool isr_flag;
 };
 
 #endif // __L6474_CLASS_H