File tree Expand file tree Collapse file tree 3 files changed +32
-1
lines changed Expand file tree Collapse file tree 3 files changed +32
-1
lines changed Original file line number Diff line number Diff line change 30
30
#define GENERIC_CLOCK_GENERATOR_48M_SYNC GCLK_SYNCBUSY_GENCTRL1
31
31
#define GENERIC_CLOCK_GENERATOR_100M (2u)
32
32
#define GENERIC_CLOCK_GENERATOR_100M_SYNC GCLK_SYNCBUSY_GENCTRL2
33
+ #define GENERIC_CLOCK_GENERATOR_12M (4u)
34
+ #define GENERIC_CLOCK_GENERATOR_12M_SYNC GCLK_SYNCBUSY_GENCTRL4
33
35
34
36
//USE DPLL0 for 120MHZ
35
37
#define MAIN_CLOCK_SOURCE GCLK_GENCTRL_SRC_DPLL0
@@ -204,6 +206,19 @@ void SystemInit( void )
204
206
{
205
207
/* Wait for synchronization */
206
208
}
209
+
210
+ //12MHZ CLOCK FOR DAC
211
+ GCLK -> GENCTRL [GENERIC_CLOCK_GENERATOR_12M ].reg = GCLK_GENCTRL_SRC (GCLK_GENCTRL_SRC_DFLL_Val ) |
212
+ GCLK_GENCTRL_IDC |
213
+ GCLK_GENCTRL_DIV (4 ) |
214
+ GCLK_GENCTRL_DIVSEL |
215
+ //GCLK_GENCTRL_OE |
216
+ GCLK_GENCTRL_GENEN ;
217
+
218
+ while ( GCLK -> SYNCBUSY .reg & GENERIC_CLOCK_GENERATOR_12M_SYNC )
219
+ {
220
+ /* Wait for synchronization */
221
+ }
207
222
208
223
/*---------------------------------------------------------------------
209
224
* Set up main clock
Original file line number Diff line number Diff line change @@ -131,7 +131,7 @@ void init( void )
131
131
132
132
analogReference ( AR_DEFAULT ) ; // Analog Reference is AREF pin (3.3v)
133
133
134
- GCLK -> PCHCTRL [DAC_GCLK_ID ].reg = GCLK_PCHCTRL_GEN_GCLK1_Val | (1 << GCLK_PCHCTRL_CHEN_Pos ); //use clock generator 1 (48mhz )
134
+ GCLK -> PCHCTRL [DAC_GCLK_ID ].reg = GCLK_PCHCTRL_GEN_GCLK4_Val | (1 << GCLK_PCHCTRL_CHEN_Pos ); //use clock generator 4 (12mhz )
135
135
while (GCLK -> PCHCTRL [DAC_GCLK_ID ].bit .CHEN == 0 );
136
136
137
137
while ( DAC -> SYNCBUSY .bit .SWRST == 1 ); // Wait for synchronization of registers between the clock domains
Original file line number Diff line number Diff line change @@ -373,6 +373,22 @@ void analogWrite(uint32_t pin, uint32_t value)
373
373
374
374
while (DAC -> SYNCBUSY .bit .ENABLE || DAC -> SYNCBUSY .bit .SWRST );
375
375
DAC -> CTRLA .bit .ENABLE = 1 ; // enable DAC
376
+
377
+ if (channel == 0 ){
378
+
379
+ while ( !DAC -> STATUS .bit .READY0 );
380
+
381
+ while (DAC -> SYNCBUSY .bit .DATA0 );
382
+ DAC -> DATA [0 ].reg = value ;
383
+ }
384
+ else if (channel == 1 ){
385
+ while ( !DAC -> STATUS .bit .READY1 );
386
+
387
+ while (DAC -> SYNCBUSY .bit .DATA1 );
388
+ DAC -> DATA [1 ].reg = value ;
389
+ }
390
+
391
+ delay (10 );
376
392
}
377
393
378
394
//ERROR!
You can’t perform that action at this time.
0 commit comments