diff --git a/Hello_World/Makefile b/Hello_World/Makefile index e67468b08cfd33342c091ce5a342dba26f933f87..d95c515ecd6b1edaa063707a0d36dc4cdb3830b0 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 2b9e2565e1542f9c96bdbd768e4cf7f3ec49db01..65ddbcf0bddaa794c010e031446115dd6947f870 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 0000000000000000000000000000000000000000..6701a4d230d1d53d72c33c50824a3238b81b114a --- /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 0000000000000000000000000000000000000000..43dd99612faa6623cbf6e2cf488af624c2320d9a --- /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