#ifndef UDCCD_R8_BSP_H_ #define UDCCD_R8_BSP_H_ /**** Includes ****/ #include #include "../common/level.h" /**** Public definitions ****/ //ADC definitions typedef enum { ADC_ICOIL = 0x00, ADC_UCOIL = 0x01, ADC_UBAT = 0x02, ADC_IBAT = 0x03, ADC_POT = 0x04, ADC_MODE = 0x05, ADC_TEMP = 0x08, ADC_INTREF = 0x0E, ADC_GND = 0x0F } adcCh_t; typedef enum { ADC_DIV2 = 0x01, ADC_DIV4 = 0x02, ADC_DIV8 = 0x03, ADC_DIV16 = 0x04, ADC_DIV32 = 0x05, ADC_DIV64 = 0x06, ADC_DIV128 = 0x07 } adcDiv_t; //Timer definitions typedef enum { TIM_DIV1 = 0x01, TIM_DIV8 = 0x02, TIM_DIV64 = 0x03, TIM_DIV256 = 0x04, TIM_DIV1024 = 0x05 } timerDiv_t; typedef enum { PWM_COIL = 'A', PWM_LED = 'B' } pwmCh_t; typedef enum { SPEED_1 = 3, SPEED_0 = 4 } speedCh_t; typedef struct { adcDiv_t adc_clk_prescaler; uint8_t adc_auto_wake; timerDiv_t pwm_timer_prescaler; uint16_t pwm_timer_top; timerDiv_t freq_timer_prescaler; uint16_t uart_prescaler; uint8_t systick_timer_top; timerDiv_t systick_timer_prescaler; uint8_t disable_unused; uint8_t en_watchdog; } hwConfig_t; /**** Public function declarations ****/ void HAL_Init_Min(hwConfig_t* hwCfg); void HAL_Init_Extra(hwConfig_t* hwCfg); level_t HAL_ReadLvl_Handbrake(void); level_t HAL_ReadLvl_Brake(void); level_t HAL_ReadLvl_Dimm(void); level_t HAL_ReadLvl_BtnUp(void); level_t HAL_ReadLvl_BtnDown(void); level_t HAL_ReadLvl_BtnMode(void); level_t HAL_ReadLvl_HandbrakePull(void); level_t HAL_ReadLvl_CoilLow(void); level_t HAL_ReadLvl_CoilHigh(void); level_t HAL_ReadLvl_LedsPwm(void); level_t HAL_ReadLvl_Speed0(void); level_t HAL_ReadLvl_Speed1(void); level_t HAL_ReadLvl_SpeedPull(void); void HAL_SetPull_Handbrake(level_t lvl); void HAL_SetPull_Speed(level_t lvl); void HAL_ADC_Wake(void); void HAL_ADC_Sleep(void); uint16_t HAL_ADC_Read(adcCh_t ch); void HAL_Coil_SetLowSide(uint8_t on); void HAL_Coil_SetPWM(uint8_t percent); void HAL_Coil_SetPWM16b(uint16_t value); void HAL_LEDS_Set(uint8_t image); uint8_t HAL_LEDS_Get(void); void HAL_LEDS_SetPWM(uint8_t percent); void HAL_PWM_Wake(void); void HAL_PWM_Sleep(void); void HAL_PWM_SetDuty16b(pwmCh_t ch, uint16_t value); void HAL_PWM_SetDuty100(pwmCh_t ch, uint8_t percent); #endif /* UDCCD_R8_BSP_H_ */