39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_spi_master.h"
75#define SOLIDSWITCH9_REG_OUTCTRCR0 0x00
76#define SOLIDSWITCH9_REG_OUTCTRCR1 0x01
77#define SOLIDSWITCH9_REG_OUTCTRCR2 0x02
78#define SOLIDSWITCH9_REG_OUTCTRCR3 0x03
79#define SOLIDSWITCH9_REG_OUTCFGR0 0x08
80#define SOLIDSWITCH9_REG_OUTCFGR1 0x09
81#define SOLIDSWITCH9_REG_OUTCFGR2 0x0A
82#define SOLIDSWITCH9_REG_OUTCFGR3 0x0B
83#define SOLIDSWITCH9_REG_CHLOFFTCR0 0x10
84#define SOLIDSWITCH9_REG_CHLOFFTCR1 0x11
85#define SOLIDSWITCH9_REG_SOCR 0x13
86#define SOLIDSWITCH9_REG_CTRL 0x14
87#define SOLIDSWITCH9_REG_OUTSR0 0x20
88#define SOLIDSWITCH9_REG_OUTSR1 0x21
89#define SOLIDSWITCH9_REG_OUTSR2 0x22
90#define SOLIDSWITCH9_REG_OUTSR3 0x23
91#define SOLIDSWITCH9_REG_ADC0SR 0x28
92#define SOLIDSWITCH9_REG_ADC1SR 0x29
93#define SOLIDSWITCH9_REG_ADC2SR 0x2A
94#define SOLIDSWITCH9_REG_ADC3SR 0x2B
95#define SOLIDSWITCH9_REG_ADC9SR 0x2C
96#define SOLIDSWITCH9_REG_CLEAR_ALL_STATUS 0x3F
102#define SOLIDSWITCH9_ROM_COMPANY_CODE 0x00
103#define SOLIDSWITCH9_ROM_DEVICE_FAMILY 0x01
104#define SOLIDSWITCH9_ROM_PRODUCT_CODE_1 0x02
105#define SOLIDSWITCH9_ROM_PRODUCT_CODE_2 0x03
106#define SOLIDSWITCH9_ROM_PRODUCT_CODE_3 0x04
107#define SOLIDSWITCH9_ROM_VERSION 0x0A
108#define SOLIDSWITCH9_ROM_SPI_MODE 0x10
109#define SOLIDSWITCH9_ROM_WD_TYPE_1 0x11
110#define SOLIDSWITCH9_ROM_WD_BIT_POSITION_1 0x13
111#define SOLIDSWITCH9_ROM_WD_BIT_POSITION_2 0x14
112#define SOLIDSWITCH9_ROM_SPI_CPHA 0x20
113#define SOLIDSWITCH9_ROM_GSB_OPTIONS 0x3E
114#define SOLIDSWITCH9_ROM_SW_RESET 0x3F
132#define SOLIDSWITCH9_GSB_GSBN 0x80
133#define SOLIDSWITCH9_GSB_RESET 0x40
134#define SOLIDSWITCH9_GSB_SPI_ERROR 0x20
135#define SOLIDSWITCH9_GSB_OT_PL_VDS 0x10
136#define SOLIDSWITCH9_GSB_T_CASE 0x08
137#define SOLIDSWITCH9_GSB_LOFF 0x04
138#define SOLIDSWITCH9_GSB_OLOFF 0x02
139#define SOLIDSWITCH9_GSB_FAIL_SAFE 0x01
145#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_0_PCT 0x0000
146#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_5_PCT 0x0330
147#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_10_PCT 0x0660
148#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_15_PCT 0x0990
149#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_20_PCT 0x0CC0
150#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_25_PCT 0x1000
151#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_30_PCT 0x1330
152#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_35_PCT 0x1660
153#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_40_PCT 0x1990
154#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_45_PCT 0x1CC0
155#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_50_PCT 0x2000
156#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_55_PCT 0x2330
157#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_60_PCT 0x2660
158#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_65_PCT 0x2990
159#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_70_PCT 0x2CC0
160#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_75_PCT 0x3000
161#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_80_PCT 0x3330
162#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_85_PCT 0x3660
163#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_90_PCT 0x3990
164#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_95_PCT 0x3CC0
165#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_100_PCT 0x3FF0
166#define SOLIDSWITCH9_OUTCTRCRX_DUTY_CR_MASK 0x3FF0
167#define SOLIDSWITCH9_OUTCTRCRX_OLOFFCR_EN 0x0004
168#define SOLIDSWITCH9_OUTCTRCRX_WDTB 0x0002
174#define SOLIDSWITCH9_OUTCFGRX_SLOPECR_STANDARD 0x0000
175#define SOLIDSWITCH9_OUTCFGRX_SLOPECR_FAST 0x4000
176#define SOLIDSWITCH9_OUTCFGRX_SLOPECR_FASTER 0x8000
177#define SOLIDSWITCH9_OUTCFGRX_SLOPECR_FASTEST 0xC000
178#define SOLIDSWITCH9_OUTCFGRX_SLOPECR_MASK 0xC000
179#define SOLIDSWITCH9_OUTCFGRX_CHPHA_MASK 0x1F00
180#define SOLIDSWITCH9_OUTCFGRX_CPCR_STOP 0x0000
181#define SOLIDSWITCH9_OUTCFGRX_CPCR_START 0x0040
182#define SOLIDSWITCH9_OUTCFGRX_CPCR_CONTINUOUS 0x0080
183#define SOLIDSWITCH9_OUTCFGRX_CPCR_FILTERED 0x00C0
184#define SOLIDSWITCH9_OUTCFGRX_CPCR_MASK 0x00C0
185#define SOLIDSWITCH9_OUTCFGRX_PWMFCY_1024 0x0000
186#define SOLIDSWITCH9_OUTCFGRX_PWMFCY_2048 0x0010
187#define SOLIDSWITCH9_OUTCFGRX_PWMFCY_4096 0x0020
188#define SOLIDSWITCH9_OUTCFGRX_PWMFCY_512 0x0030
189#define SOLIDSWITCH9_OUTCFGRX_PWMFCY_MASK 0x0030
190#define SOLIDSWITCH9_OUTCFGRX_CCR_BULB 0x0000
191#define SOLIDSWITCH9_OUTCFGRX_CCR_LED 0x0008
192#define SOLIDSWITCH9_OUTCFGRX_CCR_MASK 0x0008
193#define SOLIDSWITCH9_OUTCFGRX_DIENCR_EN 0x0004
194#define SOLIDSWITCH9_OUTCFGRX_VDSMASK 0x0002
200#define SOLIDSWITCH9_CHLOFFTCR0_CH2_LATCH_OFF 0x0000
201#define SOLIDSWITCH9_CHLOFFTCR0_CH2_16MS 0x1000
202#define SOLIDSWITCH9_CHLOFFTCR0_CH2_32MS 0x2000
203#define SOLIDSWITCH9_CHLOFFTCR0_CH2_240MS 0xF000
204#define SOLIDSWITCH9_CHLOFFTCR0_CH2_MASK 0xF000
205#define SOLIDSWITCH9_CHLOFFTCR0_CH1_LATCH_OFF 0x0000
206#define SOLIDSWITCH9_CHLOFFTCR0_CH1_16MS 0x0100
207#define SOLIDSWITCH9_CHLOFFTCR0_CH1_32MS 0x0200
208#define SOLIDSWITCH9_CHLOFFTCR0_CH1_240MS 0x0F00
209#define SOLIDSWITCH9_CHLOFFTCR0_CH1_MASK 0x0F00
210#define SOLIDSWITCH9_CHLOFFTCR0_CH0_LATCH_OFF 0x0000
211#define SOLIDSWITCH9_CHLOFFTCR0_CH0_16MS 0x0010
212#define SOLIDSWITCH9_CHLOFFTCR0_CH0_32MS 0x0020
213#define SOLIDSWITCH9_CHLOFFTCR0_CH0_240MS 0x00F0
214#define SOLIDSWITCH9_CHLOFFTCR0_CH0_MASK 0x00F0
220#define SOLIDSWITCH9_CHLOFFTCR1_CH3_LATCH_OFF 0x0000
221#define SOLIDSWITCH9_CHLOFFTCR1_CH3_16MS 0x0010
222#define SOLIDSWITCH9_CHLOFFTCR1_CH3_32MS 0x0020
223#define SOLIDSWITCH9_CHLOFFTCR1_CH3_240MS 0x00F0
224#define SOLIDSWITCH9_CHLOFFTCR1_CH3_MASK 0x00F0
230#define SOLIDSWITCH9_SOCR_CH3_EN 0x0800
231#define SOLIDSWITCH9_SOCR_CH2_EN 0x0400
232#define SOLIDSWITCH9_SOCR_CH1_EN 0x0200
233#define SOLIDSWITCH9_SOCR_CH0_EN 0x0100
234#define SOLIDSWITCH9_SOCR_CHX_MASK 0x0F00
235#define SOLIDSWITCH9_SOCR_WDTB 0x0002
241#define SOLIDSWITCH9_CTRL_GOSTBY 0x8000
242#define SOLIDSWITCH9_CTRL_UNLOCK 0x4000
243#define SOLIDSWITCH9_CTRL_CTDTH_120C 0x0000
244#define SOLIDSWITCH9_CTRL_CTDTH_130C 0x1000
245#define SOLIDSWITCH9_CTRL_CTDTH_140C 0x2000
246#define SOLIDSWITCH9_CTRL_CTDTH_MASK 0x3000
247#define SOLIDSWITCH9_CTRL_EN 0x0800
248#define SOLIDSWITCH9_CTRL_PWM_TRIG_RISING 0x0000
249#define SOLIDSWITCH9_CTRL_PWM_TRIG_FALLING 0x0400
250#define SOLIDSWITCH9_CTRL_PWM_TRIG_MASK 0x0400
251#define SOLIDSWITCH9_CTRL_LOCKEN_SLOPECRX 0x0040
252#define SOLIDSWITCH9_CTRL_LOCKEN_CCRX 0x0020
253#define SOLIDSWITCH9_CTRL_LOCKEN_CHPHAX 0x0010
254#define SOLIDSWITCH9_CTRL_LOCKEN_CHLOFFTCRX 0x0008
255#define SOLIDSWITCH9_CTRL_LOCKEN_PWM_CLK_SYNC 0x0004
256#define SOLIDSWITCH9_CTRL_LOCKEN_MASK 0x007C
257#define SOLIDSWITCH9_CTRL_PWMSYNC 0x0002
263#define SOLIDSWITCH9_OUTSRX_DIENSR 0x8000
264#define SOLIDSWITCH9_OUTSRX_DIOTP1 0x4000
265#define SOLIDSWITCH9_OUTSRX_DIOTP0 0x2000
266#define SOLIDSWITCH9_OUTSRX_CHFBSRX 0x1000
267#define SOLIDSWITCH9_OUTSRX_VDSFSRX 0x0800
268#define SOLIDSWITCH9_OUTSRX_STKFLTRX 0x0400
269#define SOLIDSWITCH9_OUTSRX_OLPUSRX 0x0200
270#define SOLIDSWITCH9_OUTSRX_CHLOFFSRX 0x0100
271#define SOLIDSWITCH9_OUTSRX_RST 0x0080
272#define SOLIDSWITCH9_OUTSRX_SPIE 0x0040
273#define SOLIDSWITCH9_OUTSRX_PWMCLOCKLOW 0x0020
274#define SOLIDSWITCH9_OUTSRX_VCCUV 0x0010
280#define SOLIDSWITCH9_ADCXSR_ADCXSR_MASK 0x3FF0
281#define SOLIDSWITCH9_ADCXSR_SOCRX_EN 0x0004
282#define SOLIDSWITCH9_ADCXSR_UPDTSR 0x0002
288#define SOLIDSWITCH9_ADC9SR_ADC9SR_MASK 0x3FF0
289#define SOLIDSWITCH9_ADC9SR_UPDTSR 0x0002
295#define SOLIDSWITCH9_INFO_COMPANY_CODE 0x00
296#define SOLIDSWITCH9_INFO_DEVICE_FAMILY 0x01
297#define SOLIDSWITCH9_INFO_PRODUCT_CODE_1 0x58
298#define SOLIDSWITCH9_INFO_PRODUCT_CODE_2 0x56
299#define SOLIDSWITCH9_INFO_PRODUCT_CODE_3 0x61
305#define SOLIDSWITCH9_OUT3 0x08
306#define SOLIDSWITCH9_OUT2 0x04
307#define SOLIDSWITCH9_OUT1 0x02
308#define SOLIDSWITCH9_OUT0 0x01
309#define SOLIDSWITCH9_OUT_MASK 0x0F
310#define SOLIDSWITCH9_OUT_DUTY_0_PCT 0x0000
311#define SOLIDSWITCH9_OUT_DUTY_5_PCT 0x0033
312#define SOLIDSWITCH9_OUT_DUTY_10_PCT 0x0066
313#define SOLIDSWITCH9_OUT_DUTY_15_PCT 0x0099
314#define SOLIDSWITCH9_OUT_DUTY_20_PCT 0x00CC
315#define SOLIDSWITCH9_OUT_DUTY_25_PCT 0x0100
316#define SOLIDSWITCH9_OUT_DUTY_30_PCT 0x0133
317#define SOLIDSWITCH9_OUT_DUTY_35_PCT 0x0166
318#define SOLIDSWITCH9_OUT_DUTY_40_PCT 0x0199
319#define SOLIDSWITCH9_OUT_DUTY_45_PCT 0x01CC
320#define SOLIDSWITCH9_OUT_DUTY_50_PCT 0x0200
321#define SOLIDSWITCH9_OUT_DUTY_55_PCT 0x0233
322#define SOLIDSWITCH9_OUT_DUTY_60_PCT 0x0266
323#define SOLIDSWITCH9_OUT_DUTY_65_PCT 0x0299
324#define SOLIDSWITCH9_OUT_DUTY_70_PCT 0x02CC
325#define SOLIDSWITCH9_OUT_DUTY_75_PCT 0x0300
326#define SOLIDSWITCH9_OUT_DUTY_80_PCT 0x0333
327#define SOLIDSWITCH9_OUT_DUTY_85_PCT 0x0366
328#define SOLIDSWITCH9_OUT_DUTY_90_PCT 0x0399
329#define SOLIDSWITCH9_OUT_DUTY_95_PCT 0x03CC
330#define SOLIDSWITCH9_OUT_DUTY_100_PCT 0x03FF
336#define SOLIDSWITCH9_DEF_FREQ 400000
337#define SOLIDSWITCH9_DEF_DUTY_CYCLE 0.5
347#define SOLIDSWITCH9_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
348#define SOLIDSWITCH9_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
366#define SOLIDSWITCH9_MAP_MIKROBUS( cfg, mikrobus ) \
367 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
368 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
369 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
370 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
371 cfg.di0 = MIKROBUS( mikrobus, MIKROBUS_AN ); \
372 cfg.pwm = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
373 cfg.di1 = MIKROBUS( mikrobus, MIKROBUS_INT )
void solidswitch9_cfg_setup(solidswitch9_cfg_t *cfg)
SolidSwitch 9 configuration object setup function.
err_t solidswitch9_read_rom(solidswitch9_t *ctx, uint8_t addr, uint8_t *data_out)
SolidSwitch 9 read ROM function.
err_t solidswitch9_clear_all_status(solidswitch9_t *ctx)
SolidSwitch 9 clear all status function.
err_t solidswitch9_init(solidswitch9_t *ctx, solidswitch9_cfg_t *cfg)
SolidSwitch 9 initialization function.
err_t solidswitch9_write_reg(solidswitch9_t *ctx, uint8_t reg, uint16_t data_in)
SolidSwitch 9 write register function.
void solidswitch9_set_di0_pin(solidswitch9_t *ctx, uint8_t state)
SolidSwitch 9 set DI0 pin function.
err_t solidswitch9_sw_reset(solidswitch9_t *ctx)
SolidSwitch 9 software reset function.
err_t solidswitch9_set_duty_cycle(solidswitch9_t *ctx, float duty_cycle)
SolidSwitch 9 sets PWM duty cycle.
err_t solidswitch9_read_reg_clear(solidswitch9_t *ctx, uint8_t reg, uint16_t *data_out)
SolidSwitch 9 read and clear register function.
err_t solidswitch9_pwm_stop(solidswitch9_t *ctx)
SolidSwitch 9 stop PWM module.
err_t solidswitch9_unlock_write(solidswitch9_t *ctx)
SolidSwitch 9 unlock write function.
err_t solidswitch9_pwm_start(solidswitch9_t *ctx)
SolidSwitch 9 start PWM module.
err_t solidswitch9_check_info(solidswitch9_t *ctx)
SolidSwitch 9 check information function.
void solidswitch9_set_di1_pin(solidswitch9_t *ctx, uint8_t state)
SolidSwitch 9 set DI1 pin function.
err_t solidswitch9_enable_out(solidswitch9_t *ctx, uint8_t out_mask)
SolidSwitch 9 enable outputs function.
err_t solidswitch9_default_cfg(solidswitch9_t *ctx)
SolidSwitch 9 default configuration function.
err_t solidswitch9_set_out_duty(solidswitch9_t *ctx, uint8_t out_mask, uint16_t duty)
SolidSwitch 9 set output duty function.
err_t solidswitch9_read_reg(solidswitch9_t *ctx, uint8_t reg, uint16_t *data_out)
SolidSwitch 9 read register function.
solidswitch9_return_value_t
SolidSwitch 9 Click return value data.
Definition solidswitch9.h:429
@ SOLIDSWITCH9_ERROR
Definition solidswitch9.h:431
@ SOLIDSWITCH9_OK
Definition solidswitch9.h:430
This file contains SPI specific macros, functions, etc.
SolidSwitch 9 Click configuration object.
Definition solidswitch9.h:404
pin_name_t di0
Definition solidswitch9.h:412
spi_master_chip_select_polarity_t cs_polarity
Definition solidswitch9.h:419
pin_name_t sck
Definition solidswitch9.h:408
pin_name_t di1
Definition solidswitch9.h:414
spi_master_mode_t spi_mode
Definition solidswitch9.h:418
pin_name_t mosi
Definition solidswitch9.h:407
uint32_t spi_speed
Definition solidswitch9.h:417
uint32_t dev_pwm_freq
Definition solidswitch9.h:420
pin_name_t pwm
Definition solidswitch9.h:413
pin_name_t miso
Definition solidswitch9.h:406
pin_name_t cs
Definition solidswitch9.h:409
SolidSwitch 9 Click context object.
Definition solidswitch9.h:383
spi_master_t spi
Definition solidswitch9.h:389
uint8_t wdtb
Definition solidswitch9.h:395
digital_out_t di0
Definition solidswitch9.h:385
digital_out_t di1
Definition solidswitch9.h:386
uint32_t pwm_freq
Definition solidswitch9.h:393
uint8_t status
Definition solidswitch9.h:394
pin_name_t chip_select
Definition solidswitch9.h:392
pwm_t pwm
Definition solidswitch9.h:390