@@ -53,47 +53,36 @@ static void syncTCC(Tcc* TCCx) {
5353 while (TCCx -> SYNCBUSY .reg & TCC_SYNCBUSY_MASK );
5454}
5555
56- void analogReadResolution ( int res )
56+ void analogReadResolution (int res )
5757{
58- _readResolution = res ;
59- if (res > 10 )
60- {
58+ _readResolution = res ;
59+ if (res > 10 ) {
6160 ADC -> CTRLB .bit .RESSEL = ADC_CTRLB_RESSEL_12BIT_Val ;
6261 _ADCResolution = 12 ;
63- }
64- else if (res > 8 )
65- {
62+ } else if (res > 8 ) {
6663 ADC -> CTRLB .bit .RESSEL = ADC_CTRLB_RESSEL_10BIT_Val ;
6764 _ADCResolution = 10 ;
68- }
69- else
70- {
65+ } else {
7166 ADC -> CTRLB .bit .RESSEL = ADC_CTRLB_RESSEL_8BIT_Val ;
7267 _ADCResolution = 8 ;
7368 }
7469 syncADC ();
7570}
7671
77- void analogWriteResolution ( int res )
72+ void analogWriteResolution (int res )
7873{
79- _writeResolution = res ;
74+ _writeResolution = res ;
8075}
8176
82- static inline uint32_t mapResolution ( uint32_t value , uint32_t from , uint32_t to )
77+ static inline uint32_t mapResolution (uint32_t value , uint32_t from , uint32_t to )
8378{
84- if ( from == to )
85- {
86- return value ;
79+ if (from == to ) {
80+ return value ;
8781 }
88-
89- if ( from > to )
90- {
91- return value >> (from - to ) ;
92- }
93- else
94- {
95- return value << (to - from ) ;
82+ if (from > to ) {
83+ return value >> (from - to );
9684 }
85+ return value << (to - from );
9786}
9887
9988/*
@@ -102,10 +91,10 @@ static inline uint32_t mapResolution( uint32_t value, uint32_t from, uint32_t to
10291 *
10392 * Warning : On Arduino Zero board the input/output voltage for SAMD21G18 is 3.3 volts maximum
10493 */
105- void analogReference ( eAnalogReference ulMode )
94+ void analogReference (eAnalogReference mode )
10695{
10796 syncADC ();
108- switch ( ulMode )
97+ switch (mode )
10998 {
11099 case AR_INTERNAL :
111100 case AR_INTERNAL2V23 :
@@ -136,27 +125,25 @@ void analogReference( eAnalogReference ulMode )
136125 }
137126}
138127
139- uint32_t analogRead ( uint32_t ulPin )
128+ uint32_t analogRead (uint32_t pin )
140129{
141130 uint32_t valueRead = 0 ;
142131
143- if ( ulPin < A0 )
144- {
145- ulPin += A0 ;
132+ if (pin < A0 ) {
133+ pin += A0 ;
146134 }
147135
148- pinPeripheral (ulPin , PIO_ANALOG );
136+ pinPeripheral (pin , PIO_ANALOG );
149137
150- if (ulPin == A0 ) // Disable DAC, if analogWrite(A0,dval) used previously the DAC is enabled
151- {
138+ if (pin == A0 ) { // Disable DAC, if analogWrite(A0,dval) used previously the DAC is enabled
152139 syncDAC ();
153140 DAC -> CTRLA .bit .ENABLE = 0x00 ; // Disable DAC
154141 //DAC->CTRLB.bit.EOEN = 0x00; // The DAC output is turned off.
155142 syncDAC ();
156143 }
157144
158145 syncADC ();
159- ADC -> INPUTCTRL .bit .MUXPOS = g_APinDescription [ulPin ].ulADCChannelNumber ; // Selection for the positive ADC input
146+ ADC -> INPUTCTRL .bit .MUXPOS = g_APinDescription [pin ].ulADCChannelNumber ; // Selection for the positive ADC input
160147
161148 // Control A
162149 /*
@@ -185,7 +172,7 @@ uint32_t analogRead( uint32_t ulPin )
185172 ADC -> SWTRIG .bit .START = 1 ;
186173
187174 // Store the value
188- while ( ADC -> INTFLAG .bit .RESRDY == 0 ); // Waiting for conversion to complete
175+ while (ADC -> INTFLAG .bit .RESRDY == 0 ); // Waiting for conversion to complete
189176 valueRead = ADC -> RESULT .reg ;
190177
191178 syncADC ();
@@ -200,90 +187,88 @@ uint32_t analogRead( uint32_t ulPin )
200187// hardware support. These are defined in the appropriate
201188// pins_*.c file. For the rest of the pins, we default
202189// to digital output.
203- void analogWrite ( uint32_t ulPin , uint32_t ulValue )
190+ void analogWrite (uint32_t pin , uint32_t value )
204191{
205- uint32_t attr = g_APinDescription [ulPin ].ulPinAttribute ;
192+ uint32_t attr = g_APinDescription [pin ].ulPinAttribute ;
206193
207- if ( (attr & PIN_ATTR_ANALOG ) == PIN_ATTR_ANALOG )
194+ if ((attr & PIN_ATTR_ANALOG ) == PIN_ATTR_ANALOG )
208195 {
209- if ( ulPin != PIN_A0 ) // Only 1 DAC on A0 (PA02)
210- {
196+ // DAC handling code
197+
198+ if (pin != PIN_A0 ) { // Only 1 DAC on A0 (PA02)
211199 return ;
212200 }
213201
214- ulValue = mapResolution (ulValue , _writeResolution , 10 );
202+ value = mapResolution (value , _writeResolution , 10 );
215203
216204 syncDAC ();
217- DAC -> DATA .reg = ulValue & 0x3FF ; // DAC on 10 bits.
205+ DAC -> DATA .reg = value & 0x3FF ; // DAC on 10 bits.
218206 syncDAC ();
219207 DAC -> CTRLA .bit .ENABLE = 0x01 ; // Enable DAC
220208 syncDAC ();
221- return ;
209+ return ;
222210 }
223211
224- if ( (attr & PIN_ATTR_PWM ) == PIN_ATTR_PWM )
212+ if ((attr & PIN_ATTR_PWM ) == PIN_ATTR_PWM )
225213 {
226214 if (attr & PIN_ATTR_TIMER ) {
227215 #if !(ARDUINO_SAMD_VARIANT_COMPLIANCE >= 10603 )
228216 // Compatibility for cores based on SAMD core <=1.6.2
229- if (g_APinDescription [ulPin ].ulPinType == PIO_TIMER_ALT ) {
230- pinPeripheral (ulPin , PIO_TIMER_ALT );
217+ if (g_APinDescription [pin ].ulPinType == PIO_TIMER_ALT ) {
218+ pinPeripheral (pin , PIO_TIMER_ALT );
231219 } else
232220 #endif
233221 {
234- pinPeripheral (ulPin , PIO_TIMER );
222+ pinPeripheral (pin , PIO_TIMER );
235223 }
236224 } else {
237225 // We suppose that attr has PIN_ATTR_TIMER_ALT bit set...
238- pinPeripheral (ulPin , PIO_TIMER_ALT );
226+ pinPeripheral (pin , PIO_TIMER_ALT );
239227 }
240228
241- Tc * TCx = 0 ;
242- Tcc * TCCx = 0 ;
243- uint8_t Channelx = GetTCChannelNumber ( g_APinDescription [ulPin ].ulPWMChannel ) ;
244- if ( GetTCNumber ( g_APinDescription [ulPin ].ulPWMChannel ) >= TCC_INST_NUM )
245- {
246- TCx = (Tc * ) GetTC ( g_APinDescription [ulPin ].ulPWMChannel ) ;
247- }
248- else
249- {
250- TCCx = (Tcc * ) GetTC ( g_APinDescription [ulPin ].ulPWMChannel ) ;
229+ Tc * TCx = NULL ;
230+ Tcc * TCCx = NULL ;
231+ uint8_t Channelx = GetTCChannelNumber (g_APinDescription [pin ].ulPWMChannel );
232+ if (GetTCNumber (g_APinDescription [pin ].ulPWMChannel ) >= TCC_INST_NUM ) {
233+ TCx = (Tc * ) GetTC (g_APinDescription [pin ].ulPWMChannel );
234+ } else {
235+ TCCx = (Tcc * ) GetTC (g_APinDescription [pin ].ulPWMChannel );
251236 }
252237
253238 // Enable clocks according to TCCx instance to use
254- switch ( GetTCNumber ( g_APinDescription [ulPin ].ulPWMChannel ) )
239+ switch (GetTCNumber (g_APinDescription [pin ].ulPWMChannel ) )
255240 {
256241 case 0 : // TCC0
257242 case 1 : // TCC1
258243 // Enable GCLK for TCC0 and TCC1 (timer counter input clock)
259- GCLK -> CLKCTRL .reg = (uint16_t ) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID ( GCM_TCC0_TCC1 )) ;
260- break ;
244+ GCLK -> CLKCTRL .reg = (uint16_t ) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID (GCM_TCC0_TCC1 )) ;
245+ break ;
261246
262247 case 2 : // TCC2
263248 case 3 : // TC3
264249 // Enable GCLK for TCC2 and TC3 (timer counter input clock)
265- GCLK -> CLKCTRL .reg = (uint16_t ) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID ( GCM_TCC2_TC3 )) ;
266- break ;
250+ GCLK -> CLKCTRL .reg = (uint16_t ) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID (GCM_TCC2_TC3 )) ;
251+ break ;
267252
268253 case 4 : // TC4
269254 case 5 : // TC5
270255 // Enable GCLK for TC4 and TC5 (timer counter input clock)
271- GCLK -> CLKCTRL .reg = (uint16_t ) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID ( GCM_TC4_TC5 ));
272- break ;
256+ GCLK -> CLKCTRL .reg = (uint16_t ) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID (GCM_TC4_TC5 ));
257+ break ;
273258
274259 case 6 : // TC6 (not available on Zero)
275260 case 7 : // TC7 (not available on Zero)
276261 // Enable GCLK for TC6 and TC7 (timer counter input clock)
277- GCLK -> CLKCTRL .reg = (uint16_t ) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID ( GCM_TC6_TC7 ));
278- break ;
262+ GCLK -> CLKCTRL .reg = (uint16_t ) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID (GCM_TC6_TC7 ));
263+ break ;
279264 }
280265
281- while ( GCLK -> STATUS .bit .SYNCBUSY == 1 ) ;
266+ while (GCLK -> STATUS .bit .SYNCBUSY == 1 ) ;
282267
283- ulValue = mapResolution (ulValue , _writeResolution , 8 );
268+ value = mapResolution (value , _writeResolution , 8 );
284269
285270 // Set PORT
286- if ( TCx )
271+ if (TCx )
287272 {
288273 // -- Configure TC
289274
@@ -295,7 +280,7 @@ void analogWrite( uint32_t ulPin, uint32_t ulValue )
295280 // Set TCx as normal PWM
296281 TCx -> COUNT8 .CTRLA .reg |= TC_CTRLA_WAVEGEN_NPWM ;
297282 // Set TCx in waveform mode Normal PWM
298- TCx -> COUNT8 .CC [Channelx ].reg = (uint8_t ) ulValue ;
283+ TCx -> COUNT8 .CC [Channelx ].reg = (uint8_t ) value ;
299284 syncTC_8 (TCx );
300285 // Set PER to maximum counter value (resolution : 0xFF)
301286 TCx -> COUNT8 .PER .reg = 0xFF ;
@@ -314,29 +299,26 @@ void analogWrite( uint32_t ulPin, uint32_t ulValue )
314299 TCCx -> WAVE .reg |= TCC_WAVE_WAVEGEN_NPWM ;
315300 syncTCC (TCCx );
316301 // Set TCx in waveform mode Normal PWM
317- TCCx -> CC [Channelx ].reg = (uint32_t )ulValue ;
302+ TCCx -> CC [Channelx ].reg = (uint32_t )value ;
318303 syncTCC (TCCx );
319304 // Set PER to maximum counter value (resolution : 0xFF)
320305 TCCx -> PER .reg = 0xFF ;
321306 syncTCC (TCCx );
322307 // Enable TCCx
323- TCCx -> CTRLA .reg |= TCC_CTRLA_ENABLE ;
308+ TCCx -> CTRLA .reg |= TCC_CTRLA_ENABLE ;
324309 syncTCC (TCCx );
325310 }
326311
327- return ;
312+ return ;
328313 }
329314
330315 // -- Defaults to digital write
331- pinMode ( ulPin , OUTPUT ) ;
332- ulValue = mapResolution (ulValue , _writeResolution , 8 );
333- if ( ulValue < 128 )
334- {
335- digitalWrite ( ulPin , LOW ) ;
336- }
337- else
338- {
339- digitalWrite ( ulPin , HIGH ) ;
316+ pinMode (pin , OUTPUT );
317+ value = mapResolution (value , _writeResolution , 8 );
318+ if (value < 128 ) {
319+ digitalWrite (pin , LOW );
320+ } else {
321+ digitalWrite (pin , HIGH );
340322 }
341323}
342324
0 commit comments