All the previous but the PID

Dependencies:   mbed QEI PID DmTftLibraryEx

Revision:
23:b9d23a2f390e
Parent:
22:12c555cade79
Child:
25:5fd2d69e2927
--- a/main.cpp	Thu Jan 20 13:26:03 2022 +0000
+++ b/main.cpp	Thu Feb 10 09:39:01 2022 +0000
@@ -1,38 +1,181 @@
 
-#include "mbed.h"
+//Warning: Incompatible redefinition of macro "MBED_RAM_SIZE"  in "tmp/HU5Hqj", Line: 39, Col: 10
+#ifndef MBED_RAM_SIZE
+#define MBED_RAM_SIZE 0x00018000
+#endif
+
+//#include "mbed.h"
+#include "QEI.h"
+#include "SWPos.h"
+
 #include "Timers.h"
-#include "Menu.h"
+//#include "Menu.h"
 #include "Eeprom.h"
-#include "main.h"
-#include "app_config.h"
+//#include "main.h"
+//#include "app_config.h"
 
 /*!
  * \brief Define IO for Unused Pin
  */
-DigitalOut F_CS( D6 );      // MBED description of pin
-DigitalOut SD_CS( D8 );     // MBED description of pin
-DigitalIn userButton( USER_BUTTON );
+//DigitalOut  F_CS    (D6);               // MBED description of pin
+//DigitalOut  SD_CS   (D8);               // MBED description of pin
+
+DigitalIn   userButton  (USER_BUTTON);
 
-int main    (void){
-    F_CS = 1;           // LA:  HW Initialization InProgress 
-    SD_CS = 1;          // LA:  HW Initialization InProgress 
+AnalogIn    adc_temp    (ADC_TEMP);
+AnalogIn    adc_vref    (ADC_VREF);
+AnalogIn    adc_vbat    (ADC_VBAT);
 
-    EepromInit( );      // LA:  Inizializza la EEProm
+//  PWM
+//  ===
+//
+//PwmOut PWM_PB3(PWM_OUT);       // LA:  PWM_OUT = D3 = PB_3
 
-    // LA:  FactoryReset se "userButton" premuto all'avvio
-    //
-    if  (userButton == 0) {
-        FactoryReset( );
-    }
+//  Motion
+//  ======
+//
+//Ticker POS_MotionScan;                              //
 
-    MenuInit( );        // LA:  Inizializza il Display
+QEI Stabilus322699  (PA_1, PA_0, NC, 100, QEI::X4_ENCODING);
+//
+in_sPosizionatoreSW    in_PosizionatoreSW;
+out_sPosizionatoreSW   out_PosizionatoreSW;
 
-    while   (1) {
-        StabilusMenu ();
-    }
-}
+//  LCD Display
+//  ===========
+//
+//Ticker LCD_RefreshViews;                            //
+
+//extern void    StabilusMenu   (uint32_t, uint32_t, int64_t);                 // LA:  Prototype ...
 
 void    FactoryReset    (void) {
     EepromFactoryReset( );
     HAL_NVIC_SystemReset( );
 }
+
+/*
+void    LCD____tScan (void) {
+//    StabilusMenu (out_PosizionatoreSW.ui32_PreviousStep_ms, out_PosizionatoreSW.ui32_ActualStepSampled_ms, out_PosizionatoreSW.ui32_PassedActual_ms);
+}
+
+
+void    Motion_tScan (void) {
+    PosizionatoreSW (in_PosizionatoreSW, out_PosizionatoreSW);
+}
+*/
+
+//  =======
+//  =======
+//  Main(s)
+//  =======
+//  =======
+//
+int main    (void){
+//int32_t i32_Pulses;
+//    F_CS =  1;          // LA:  HW Initialization InProgress 
+//    SD_CS = 1;          // LA:  HW Initialization InProgress 
+//    BoardLED3 = 1;
+
+    EepromInit();       // LA:  Inizializza la EEProm
+    TimersInit();       // LA:  Parte il Timer a 1ms
+
+    // LA:  FactoryReset se "userButton" premuto all'avvio
+    //
+    if  (userButton == 0) {
+        FactoryReset();
+    }
+
+    MenuInit();                                             // LA:  Inizializza il Display
+//    LCD_RefreshViews.attach_us  (&LCD____tScan, 250000);    //      Scansione LCD @100ms
+
+    // LA:  Motion (1st) Setup
+    //
+    in_PosizionatoreSW.b_AxisPowered =  false;
+    in_PosizionatoreSW.b_ACPos_Homed =  false;
+    in_PosizionatoreSW.i32_Max_Speed =  1024;       // [ui]
+    in_PosizionatoreSW.i32_ZeroSpeed =  0;          //
+
+    in_PosizionatoreSW.b_JogMode =  false;
+    in_PosizionatoreSW.b_JogFW =    false;
+    in_PosizionatoreSW.b_JogBW =    false;
+    in_PosizionatoreSW.i32_JogAccel_ms =    500;    // [ms]
+    in_PosizionatoreSW.i32_JogDecel_ms =    250;    //
+    //
+    in_PosizionatoreSW.f_JogSpeed_x100_FW = 25.0;   // % of "i32_Max_Speed"
+    in_PosizionatoreSW.f_JogSpeed_x100_BW = 25.0;   //
+
+    in_PosizionatoreSW.b_ServoLock =    false;
+    in_PosizionatoreSW.rtServoLock_Q =  false;
+    //
+    in_PosizionatoreSW.i64_TargetPosition = 0;      // [ui]
+    in_PosizionatoreSW.i64_ActualPosition = 0;      //
+    in_PosizionatoreSW.i64_AccelerationWindow = 0;  // LA:  Spazio concesso all'accelerazione.
+    in_PosizionatoreSW.i64_DecelerationWindow = 0;  //      Spazio concesso alla decelerazione, è prioritario rispetto all'accelerazione.
+    in_PosizionatoreSW.i64_diToleranceWindow =  0;  //      Finestra di Tolleranza
+    //
+    in_PosizionatoreSW.f_MaximumSpeed_x100_FW = 25.0;       // % of "i32_Max_Speed"
+    in_PosizionatoreSW.f_MaximumSpeed_x100_BW = 25.0;       //
+    in_PosizionatoreSW.f_ServoLockSpeed_x100_FW =   5.0;    //
+    in_PosizionatoreSW.f_ServoLockSpeed_x100_BW =   5.0;    //
+
+//    POS_MotionScan.attach_us    (&Motion_tScan, 2000);      // LA:  Scansione Motion @2ms
+
+//    PWM_SetOut.attach_us  (&PWM____tScan, 100);             //      Scansione base PWM @100us  Ok
+//    PWM_SetOut.attach_us  (&PWM____tScan, 50);              //      Scansione base PWM @50us  Ok
+//    PWM_SetOut.attach_us  (&PWM____tScan, 30);              //      Scansione base PWM @30us  Ok
+//    PWM_SetOut.attach_us  (&PWM____tScan, 25);              //      Scansione base PWM @25us  No (al pelo ...)
+//    PWM_SetOut.attach_us  (&PWM____tScan, 10);              //      Scansione base PWM @10us  No (al pelo ...)
+//    PWM_SetOut.attach_us  (&PWM____tScan, 20);              //      Scansione base PWM @20us  No
+
+//  PWM_SetOut.attach_us  (&PWM____tScan, 40);              //      Scansione base PWM @40us,   Duty Cycle 4ms, 0- 100%
+//    PWM_SetOut.attach_us  (&PWM____tScan, 100);              //      Scansione base PWM @40us,   Duty Cycle 5ms, 0- 100%
+
+//    PWM_PB3.period_us(100);         // LA:  TimeBase is 100us
+//    PWM_PB3.pulsewidth_us(50);      //      0.. 100us ->   0.. 100%
+
+    while   (1) {
+//        int32_t i32_Pulses;
+//        i32_Pulses =    Stabilus322699.getPulses();
+
+        // LA:  Wedge 4 LCDRefresh
+        StabilusMenu (out_PosizionatoreSW.ui32_PreviousStep_ms, out_PosizionatoreSW.ui32_ActualStepSampled_ms, out_PosizionatoreSW.ui32_PassedActual_ms, Stabilus322699.getPulses());
+//        StabilusMenu (0, 1, 2, i32_Pulses);
+//        StabilusMenu (0, 1, i32_Pulses);
+//        StabilusMenu (0, 0, 0); // i32_Pulses);
+//        StabilusMenu (); // i32_Pulses);
+//        StabilusMenu (1); // i32_Pulses);
+
+/*
+        PWM_PB3 =  PWM_PB3+ (float)0.01;
+        wait_ms(10);
+
+        if  (PWM_PB3 >= (float)1.0)
+            PWM_PB3 = 0;
+*/
+    }
+}
+
+
+/*
+bool    PWM_0000    (uint32_t   ui32_Duty_x100) {
+static uint32_t ui32_PWM_Base;
+
+    if  (ui32_PWM_Base >= 100)
+        ui32_PWM_Base = 0;
+    else
+        ui32_PWM_Base ++;
+
+    if  (
+            (ui32_Duty_x100 > 0) &&
+            (ui32_Duty_x100 <= 100) &&
+            (ui32_PWM_Base <= ui32_Duty_x100)
+        )
+        return  (true);
+    else
+        return  (false);
+}
+
+void    PWM____tScan (void) {
+    PWM =   PWM_0000 (50);
+}
+*/