firmware  v0.1.2
Chromation Spectrometer Dev-Kit
test_Lis.h
1 #ifndef _TEST_LIS_H
2 #define _TEST_LIS_H
3 
4 /* =====[ Exposure ]===== */
5 void MSB_returns_most_significant_bit_of_16bit_input(void);
6 void LSB_returns_least_significant_bit_of_16bit_input(void);
7 
8 /* =====[ LisInit ]===== */
9 void LisInit_sets_PixSelect_as_an_output(void);
10 void LisInit_idles_PixSelect_low(void);
11 void LisInit_sets_Clk_as_an_output(void);
12 void LisInit_sets_Rst_as_an_output(void);
13 void LisInit_idles_Rst_low(void);
14 void LisInit_sets_Sync_as_an_input(void);
15 void LisInit_sets_PWM_frequency_at_50kHz(void);
16 void LisInit_sets_PWM_duty_cycle_to_50_percent(void);
17 void LisInit_resets_PWM_timer_at_top(void);
18 void LisInit_PWM_timer_top_is_OCR0A(void);
19 void LisInit_PWM_timer_is_clocked_by_CPU_with_no_prescaling(void);
20 void LisInit_outputs_the_PWM_clock_on_pin_Clk(void);
21 
22 /* =====[ LisConfigIsValid ]===== */
23 void LisConfigIsValid_returns_false_if_binning_is_invalid(void);
24 void LisConfigIsValid_returns_false_if_gain_is_invalid(void);
25 void LisConfigIsValid_returns_false_if_active_rows_is_invalid(void);
26 void LisConfigIsValid_returns_true_if_config_is_valid(void);
27 
28 /* =====[ _ConfigAs28bits ]===== */
29 void ConfigAs28bits_writes_config_as_little_endian_ie_binning_is_config_byte0_bit0(void);
30 void ConfigAs28bits_sets_config_byte0_bit0_if_BINNING_ON(void);
31 void ConfigAs28bits_clears_config_byte0_bit0_if_BINNING_OFF(void);
32 void ConfigAs28bits_byte0_bit1_clear_and_bit2_clear_if_GAIN_1X(void);
33 void ConfigAs28bits_byte0_bit1_clear_and_bit2_set_if_GAIN_2X5(void);
34 void ConfigAs28bits_byte0_bit1_set_and_bit2_clear_if_GAIN_4X(void);
35 void ConfigAs28bits_byte0_bit1_set_and_bit2_set_if_GAIN_5X(void);
36 void ConfigAs28bits_bit3_to_bit27_set_if_ALL_ROWS_ACTIVE(void);
37 void ConfigAs28bits_b3b8b13b18b23_set_if_ROW_1_ACTIVE(void);
38 void ConfigAs28bits_b4b9b14b19b24_set_if_ROW_2_ACTIVE(void);
39 void ConfigAs28bits_b5b10b15b20b25_set_if_ROW_3_ACTIVE(void);
40 void ConfigAs28bits_b6b11b16b21b26_set_if_ROW_4_ACTIVE(void);
41 void ConfigAs28bits_b7b12b17b22b27_set_if_ROW_5_ACTIVE(void);
42 
43 /* =====[ LisWriteConfig ]===== */
44 void LisWriteConfig_converts_config_to_28bit_sequence(void);
45 void LisWriteConfig_enters_LIS_programming_mode(void);
46 void LisWriteConfig_writes_28bits_to_LIS_setup_register(void);
47 void LisWriteConfig_exits_LIS_programming_mode(void);
48 
49 /* =====[ _WaitForLisClkLow ]===== */
50 void WaitForLisClkLow_clears_flag_PwmTimerMatchesOCF0B(void);
51 void WaitForLisClkLow_waits_until_flag_PwmTimerMatchesOCF0B_is_set(void);
52 
53 /* =====[ _WaitForLisClkHigh ]===== */
54 void WaitForLisClkHigh_clears_flag_PwmTimerMatchesOCF0A(void);
55 void WaitForLisClkHigh_waits_until_flag_PwmTimerMatchesOCF0A_is_set(void);
56 
57 /* =====[ _EnterLisProgrammingMode ]===== */
58 void EnterLisProgrammingMode_waits_for_LisClk_LOW(void);
59 void EnterLisProgrammingMode_asserts_LisPixSelect_to_program_Lis(void);
60 
61 /* =====[ _ExitLisProgrammingMode ]===== */
62 void ExitLisProgrammingMode_outputs_LOW_on_pin_LisRst(void);
63 void ExitLisProgrammingMode_outputs_LOW_on_pin_LisPixSelect(void);
64 
65 /* =====[ _WriteLisConfigBit ]===== */
66 void WriteLisConfigBit_outputs_bit_on_LisRst(void);
67 void WriteLisConfigBit_waits_for_LisClk_HIGH(void);
68 void WriteLisConfigBit_waits_for_LisClk_LOW(void);
69 
70 /* =====[ _Write28bitLisConfig ]===== */
71 void Write28bitLisConfig_writes_28bits_starting_at_byte0_bit0_and_ending_at_byte3_bit3(void);
72 
73 /* =====[ LisExpose ]===== */
74 void LisExpose_waits_for_the_falling_edge_of_Lis_Clk(void);
75 void LisExpose_starts_exposure_by_driving_Lis_Rst_HIGH(void);
76 void LisExpose_counts_falling_edges_of_Lis_Clk_until_count_equals_exposure_ticks(void);
77 void LisExpose_stops_exposure_by_driving_Lis_Rst_LOW(void);
78 
79 #endif // _TEST_LIS_H