From 9a7a3dba40d7384def81cd83e09b1af79263c571 Mon Sep 17 00:00:00 2001
From: schneider <schneider@blinkenlichts.net>
Date: Tue, 7 May 2019 21:37:54 +0200
Subject: [PATCH] chore(pmic): Move pmic functions to own module

---
 Hello_World/Makefile |   1 +
 Hello_World/main.c   | 108 ++++++++-----------------------------------
 lib/card10/pmic.c    |  75 ++++++++++++++++++++++++++++++
 lib/card10/pmic.h    |   9 ++++
 4 files changed, 105 insertions(+), 88 deletions(-)
 create mode 100644 lib/card10/pmic.c
 create mode 100644 lib/card10/pmic.h

diff --git a/Hello_World/Makefile b/Hello_World/Makefile
index e67468b0..d95c515e 100644
--- a/Hello_World/Makefile
+++ b/Hello_World/Makefile
@@ -69,6 +69,7 @@ CMSIS_ROOT=$(LIBS_DIR)/CMSIS
 SRCS  = main.c
 SRCS  += ../lib/card10/oled96.c
 SRCS  += ../lib/card10/fonts.c
+SRCS  += ../lib/card10/pmic.c
 SRCS  += bhy_support.c bhy_uc_driver.c bhy.c
 SRCS  += MAX77650-Arduino-Library.c
 # Where to find source files for this test
diff --git a/Hello_World/main.c b/Hello_World/main.c
index 2b9e2565..65ddbcf0 100644
--- a/Hello_World/main.c
+++ b/Hello_World/main.c
@@ -56,7 +56,7 @@
 #include "bhy.h"
 #include "Bosch_PCB_7183_di03_BMI160_BMM150-7183_di03.2.1.11696_170103.h"
 #include "bhy_uc_driver.h"
-#include "MAX77650-Arduino-Library.h"
+#include "pmic.h"
 
 /***** Definitions *****/
 
@@ -98,75 +98,6 @@ uint32_t ecg_read_reg(uint8_t reg)
     return (rx_data[1] << 16) | (rx_data[2] << 8) | rx_data[3];
 }
 
-void pmic_init(void)
-{
-    uint8_t didm = MAX77650_getDIDM();
-    uint8_t cid = MAX77650_getChipID();
-    printf("MAX7765x DIDM: 0x%02x CID: 0x%02x\n", didm, cid);
-
-    //MAX77650_setIP_SBB0(0b11);  //Limit output of SBB0 to 500mA
-    MAX77650_setTV_SBB0(0b101000); //Set output Voltage of SBB0 to 1.8V
-    MAX77650_setADE_SBB0(0b0); //Disable Active Discharge at SBB0 Output
-    MAX77650_setEN_SBB0(0b110); //Enable SBB0 is on irrespective of FPS whenever the on/off controller is in its "On via Software" or "On via On/Off Controller" states
-
-    //MAX77650_setIP_SBB1(0b11);  //Limit output of SBB1 to 500mA
-#if BOARD_EVKIT
-    MAX77650_setTV_SBB1(0b100000); //Set output Voltage of SBB1 to 1.2V
-#else
-    MAX77650_setTV_SBB1(0b001001); //Set output Voltage of SBB1 to 3.3V
-#endif
-    MAX77650_setADE_SBB1(0b0); //Disable Active Discharge at SBB1 Output
-    MAX77650_setEN_SBB1(0b110); //Enable SBB1 is on irrespective of FPS whenever the on/off controller is in its "On via Software" or "On via On/Off Controller" states
-
-    //MAX77650_setIP_SBB2(0b11);  //Limit output of SBB2 to 500mA
-#if BOARD_EVKIT
-    MAX77650_setTV_SBB2(0b110010); //Set output Voltage of SBB2 to 3.3V
-#else
-    MAX77650_setTV_SBB2(0b110100); //Set output Voltage of SBB2 to 5.0V
-#endif
-    MAX77650_setADE_SBB2(0b0); //Disable Active Discharge at SBB2 Output
-    MAX77650_setEN_SBB2(0b110); //Enable SBB2 is on irrespective of FPS whenever the on/off controller is in its "On via Software" or "On via On/Off Controller" states
-
-
-    // Prepare the PMIC LEDs
-    MAX77650_setLED_FS0(0b01);
-    MAX77650_setINV_LED0(false);    //LED red: phase operation
-    MAX77650_setBRT_LED0(0b00000);  //LED red: brightness
-    MAX77650_setP_LED0(0b1111);     //LED red: LED period
-    MAX77650_setD_LED0(0b1111);     //LED red: LED duty-cycle
-
-    MAX77650_setLED_FS1(0b01);
-    MAX77650_setINV_LED1(false);    //LED green: phase operation
-    MAX77650_setBRT_LED1(0b00000);  //LED green: brightness
-    MAX77650_setP_LED1(0b1111);     //LED green: LED period
-    MAX77650_setD_LED1(0b1111);     //LED green: LED duty-cycle
-
-    MAX77650_setLED_FS2(0b01);
-    MAX77650_setINV_LED2(false);    //LED blue: phase operation
-    MAX77650_setBRT_LED2(0b00000);  //LED blue: brightness
-    MAX77650_setP_LED2(0b1111);     //LED blue: LED period
-    MAX77650_setD_LED2(0b1111);     //LED blue: LED duty-cycle
-
-    MAX77650_setEN_LED_MSTR(true);  //LEDs Master enable
-}
-
-void set_led(uint8_t led, uint8_t val)
-{
-    if(led == 0) {
-        MAX77650_setLED_FS0(val > 0 ? 0b01 : 0);
-        MAX77650_setBRT_LED0(val);
-    }
-    if(led == 1) {
-        MAX77650_setLED_FS1(val > 0 ? 0b01 : 0);
-        MAX77650_setBRT_LED1(val);
-    }
-    if(led == 2) {
-        MAX77650_setLED_FS2(val > 0 ? 0b01 : 0);
-        MAX77650_setBRT_LED2(val);
-    }
-
-}
-
 // *****************************************************************************
 int main(void)
 {
@@ -235,27 +166,28 @@ int main(void)
     pmic_init();
 
     while (1) {
-        set_led(0, 33);
-        set_led(1, 0);
-        set_led(2, 0);
-        TMR_Delay(MXC_TMR0, MSEC(500), 0);
-
-        set_led(0, 0);
-        set_led(1, 33);
-        set_led(2, 0);
-        TMR_Delay(MXC_TMR0, MSEC(500), 0);
-
-        set_led(0, 0);
-        set_led(1, 0);
-        set_led(2, 33);
-        TMR_Delay(MXC_TMR0, MSEC(500), 0);
-
-        set_led(0, 0);
-        set_led(1, 0);
-        set_led(2, 0);
+        pmic_set_led(0, 31);
+        pmic_set_led(1, 0);
+        pmic_set_led(2, 0);
+        TMR_Delay(MXC_TMR0, MSEC(200), 0);
+
+        pmic_set_led(0, 0);
+        pmic_set_led(1, 31);
+        pmic_set_led(2, 0);
+        TMR_Delay(MXC_TMR0, MSEC(200), 0);
+
+        pmic_set_led(0, 0);
+        pmic_set_led(1, 0);
+        pmic_set_led(2, 31);
+        TMR_Delay(MXC_TMR0, MSEC(200), 0);
+
+        pmic_set_led(0, 0);
+        pmic_set_led(1, 0);
+        pmic_set_led(2, 0);
         GPIO_OutSet(&motor_pin);
         TMR_Delay(MXC_TMR0, MSEC(500), 0);
         GPIO_OutClr(&motor_pin);
+        TMR_Delay(MXC_TMR0, MSEC(1000), 0);
         printf("count = %d\n", count++);
     }
 }
diff --git a/lib/card10/pmic.c b/lib/card10/pmic.c
new file mode 100644
index 00000000..6701a4d2
--- /dev/null
+++ b/lib/card10/pmic.c
@@ -0,0 +1,75 @@
+#include "i2c.h"
+#include "pmic.h"
+#include "MAX77650-Arduino-Library.h"
+#include <stdint.h>
+#include <stdio.h>
+
+void pmic_init(void)
+{
+    uint8_t didm = MAX77650_getDIDM();
+    uint8_t cid = MAX77650_getChipID();
+    printf("MAX7765x DIDM: 0x%02x CID: 0x%02x\n", didm, cid);
+
+    //MAX77650_setIP_SBB0(0b11);  //Limit output of SBB0 to 500mA
+    MAX77650_setTV_SBB0(0b101000); //Set output Voltage of SBB0 to 1.8V
+    MAX77650_setADE_SBB0(0b0); //Disable Active Discharge at SBB0 Output
+    MAX77650_setEN_SBB0(0b110); //Enable SBB0 is on irrespective of FPS whenever the on/off controller is in its "On via Software" or "On via On/Off Controller" states
+
+    //MAX77650_setIP_SBB1(0b11);  //Limit output of SBB1 to 500mA
+#if BOARD_EVKIT
+    MAX77650_setTV_SBB1(0b100000); //Set output Voltage of SBB1 to 1.2V
+#else
+    MAX77650_setTV_SBB1(0b001001); //Set output Voltage of SBB1 to 3.3V
+#endif
+    MAX77650_setADE_SBB1(0b0); //Disable Active Discharge at SBB1 Output
+    MAX77650_setEN_SBB1(0b110); //Enable SBB1 is on irrespective of FPS whenever the on/off controller is in its "On via Software" or "On via On/Off Controller" states
+
+    //MAX77650_setIP_SBB2(0b11);  //Limit output of SBB2 to 500mA
+#if BOARD_EVKIT
+    MAX77650_setTV_SBB2(0b110010); //Set output Voltage of SBB2 to 3.3V
+#else
+    MAX77650_setTV_SBB2(0b110100); //Set output Voltage of SBB2 to 5.0V
+#endif
+    MAX77650_setADE_SBB2(0b0); //Disable Active Discharge at SBB2 Output
+    MAX77650_setEN_SBB2(0b110); //Enable SBB2 is on irrespective of FPS whenever the on/off controller is in its "On via Software" or "On via On/Off Controller" states
+
+    // Prepare the PMIC LEDs
+    MAX77650_setLED_FS0(0b11);
+    MAX77650_setINV_LED0(false);    //LED red: phase operation
+    MAX77650_setBRT_LED0(0b00000);  //LED red: brightness
+    MAX77650_setP_LED0(0b1111);     //LED red: LED period
+    MAX77650_setD_LED0(0b1111);     //LED red: LED duty-cycle
+
+    MAX77650_setLED_FS1(0b11);
+    MAX77650_setINV_LED1(false);    //LED green: phase operation
+    MAX77650_setBRT_LED1(0b00000);  //LED green: brightness
+    MAX77650_setP_LED1(0b1111);     //LED green: LED period
+    MAX77650_setD_LED1(0b1111);     //LED green: LED duty-cycle
+
+    MAX77650_setLED_FS2(0b11);
+    MAX77650_setINV_LED2(false);    //LED blue: phase operation
+    MAX77650_setBRT_LED2(0b00000);  //LED blue: brightness
+    MAX77650_setP_LED2(0b1111);     //LED blue: LED period
+    MAX77650_setD_LED2(0b1111);     //LED blue: LED duty-cycle
+
+    MAX77650_setEN_LED_MSTR(true);  //LEDs Master enable
+}
+
+void pmic_set_led(uint8_t led, uint8_t val)
+{
+    if(led == 0) {
+        MAX77650_setLED_FS0(val > 0 ? 0b01 : 0);
+        MAX77650_setBRT_LED0(val);
+    }
+    if(led == 1) {
+        MAX77650_setLED_FS1(val > 0 ? 0b01 : 0);
+        MAX77650_setBRT_LED1(val);
+    }
+    if(led == 2) {
+        MAX77650_setLED_FS2(val > 0 ? 0b01 : 0);
+        MAX77650_setBRT_LED2(val);
+    }
+
+}
+
+
diff --git a/lib/card10/pmic.h b/lib/card10/pmic.h
new file mode 100644
index 00000000..43dd9961
--- /dev/null
+++ b/lib/card10/pmic.h
@@ -0,0 +1,9 @@
+#ifndef PMIC_H
+#define PMIC_H
+
+#include <stdint.h>
+
+void pmic_init(void);
+void pmic_set_led(uint8_t led, uint8_t val);
+
+#endif
-- 
GitLab