HWA
Bare metal programming with style
ica_2.h
Go to the documentation of this file.
1 
2 /* This file is part of the HWA project.
3  * Copyright (c) 2012,2015 Christophe Duparquet.
4  * All rights reserved. Read LICENSE.TXT for details.
5  */
6 
32 /* TODO: complete this.
33  */
34 #define hw_configure__ica , _hw_cfica
35 
36 #define hw_ica_input_pin_icp , 1
37 #define hw_ica_input_acmp0 , 2
38 
39 #define hw_ica_edge_falling , 1
40 #define hw_ica_edge_rising , 2
41 
42 #define _hw_cfica_kw_edge , _hw_cfica_edge
43 //#define _hw_cfica_kw_ , _hw_cfica_
44 
45 //_hw_cfica(counter1_capture0,counter1, 0,edge, falling,,);
46 #define _hw_cfica(o,ct,ic,k,...) \
47  HW_B(_hw_cficakw1_,_hw_cfica_kw_##k)(ct,k,__VA_ARGS__,)
48 
49 #define _hw_cficakw1_0(ct,kw,...) HW_E(HW_EM_AL(k,(input,edge,filter)))
50 
51 #define _hw_cficakw1_1(ct,kw,...) HW_A1(_hw_cfica_kw_##kw)(ct,__VA_ARGS__)
52 
53 #define _hw_cfica_edge(ct,v,...) HW_B(_hw_cfica_vedge_,hw_ica_edge_##v)(ct,v,__VA_ARGS__)
54 #define _hw_cfica_vedge_0(ct,v,...) \
55  HW_E(HW_EM_VAL(v,edge,(falling,rising)))
56 #define _hw_cfica_vedge_1(ct,v,...) \
57  _hw_write(ct, ices, HW_A1(hw_ica_edge_##v)-1 ) HW_EOL(__VA_ARGS__)
58 
59 
75 #define hwa_configure__ica , _hwa_cfica
76 
77 #define _hwa_cfica(o,ct,ic,k,...) \
78  do { HW_BW(_hwa_cfica_kinput_,input,k)(ct,k,__VA_ARGS__) } while(0)
79 
80 #define _hwa_cfica_kinput_0(ct,k,...) \
81  HW_BW(_hwa_cfica_kedge_,edge,k)(ct,k,__VA_ARGS__) //HW_E(HW_EM_AN(k,input))
82 #define _hwa_cfica_kinput_1(ct,k,v,...) HW_B(_hwa_cfica_vinput_,hw_ica_input_##v)(ct,v,__VA_ARGS__)
83 #define _hwa_cfica_vinput_0(ct,v,...) HW_E(HW_EM_VAL(v,input,(pin_icp,acmp0)))
84 #define _hwa_cfica_vinput_1(ct,v,k,...) \
85  hwa->ct.capture0.config.input = HW_A1(hw_ica_input_##v); \
86  HW_BW(_hwa_cfica_kedge_,edge,k)(ct,k,__VA_ARGS__)
87 
88 #define _hwa_cfica_kedge_0(ct,k,...) \
89  HW_BW(_hwa_cfica_kfilter_,filter,k)(ct,k,__VA_ARGS__) // HW_E(HW_EM_AN(k,edge))
90 
91 #define _hwa_cfica_kedge_1(ct,k,v,...) \
92  HW_B(_hwa_cfica_vedge_,hw_ica_edge_##v)(ct,v,__VA_ARGS__)
93 
94 #define _hwa_cfica_vedge_0(ct,v,...) HW_E(HW_EM_VAL(v,edge,(falling,rising)))
95 
96 #define _hwa_cfica_vedge_1(ct,v,k,...) \
97  hwa->ct.capture0.config.edge = HW_A1(hw_ica_edge_##v); \
98  HW_BW(_hwa_cfica_kfilter_,filter,k)(ct,k,__VA_ARGS__)
99 
100 #define _hwa_cfica_kfilter_0(ct,...) \
101  HW_EOL(__VA_ARGS__)
102 
103 #define _hwa_cfica_kfilter_1(ct,k,v,...) \
104  HW_B(_hwa_cfica_vfilter_,_hw_state_##v)(ct,v,__VA_ARGS__)
105 
106 #define _hwa_cfica_vfilter_0(ct,v,...) \
107  HW_E(HW_EM_VOAL(v,filter,(on,off)))
108 
109 #define _hwa_cfica_vfilter_1(ct,v,...) \
110  hwa->ct.capture0.config.filter = HW_A1(_hw_state_##v); \
111  HW_EOL(__VA_ARGS__)
112 
113 
124 #define hw_read__ica , _hw_read_ica
125 #define _hw_read_ica(o,ct,ic,...) _hw_read(ct,icr##ic) HW_EOL(__VA_ARGS__)
126 
127 
138 #define hw_write__ica , _hw_write_ica
139 #define _hw_write_ica(o,ct,ic,v,...) _hw_write(ct,icr##ic,v) HW_EOL(__VA_ARGS__)
140 
148 #define hwa_write__ica , _hwa_write_ica
149 #define _hwa_write_ica(o,ct,ic,v,...) _hwa_write(ct,icr##ic,v) HW_EOL(__VA_ARGS__)
150 
151