Falls jemand Interesse an der Antwort hat:
Die Clock kann man ändern indem man die entsprechende ASF "SYSTEM-Clock
Management for SAMD10" dazu nimmt und dann unter config/conf_clocks.h
von flase zu true ändert.
1 | # define CONF_CLOCK_DFLL_ENABLE true
|
2 | # define CONF_CLOCK_OSC32K_ENABLE true
|
3 | # define CONF_CLOCK_GCLK_1_ENABLE true
|
Außerdem muss noch die Funktion aufgerufen werden:
1 | void configure_clock(void)
|
2 | {
|
3 | struct system_clock_source_dfll_config config_dfll;
|
4 | system_clock_source_dfll_get_config_defaults(&config_dfll);
|
5 | system_clock_source_dfll_set_config(&config_dfll);
|
6 |
|
7 | /* Enable the DFLL oscillator */
|
8 | enum status_code dfll_status = system_clock_source_enable(SYSTEM_CLOCK_SOURCE_DFLL);
|
9 |
|
10 | if (dfll_status != STATUS_OK)
|
11 | {
|
12 | configure_clock(); /* Error enabling the clock source */
|
13 | }
|
14 |
|
15 | /* Configure flash wait states before switching to high frequency clock */
|
16 | system_flash_set_waitstates(2);
|
17 |
|
18 | /* Change system clock to DFLL */
|
19 | struct system_gclk_gen_config config_gclock_gen;
|
20 | system_gclk_gen_get_config_defaults(&config_gclock_gen);
|
21 | config_gclock_gen.source_clock = SYSTEM_CLOCK_SOURCE_DFLL;
|
22 | config_gclock_gen.division_factor = 1;
|
23 | system_gclk_gen_set_config(GCLK_GENERATOR_0, &config_gclock_gen);
|
24 | }
|
Das WEX Problem war ärgerlich denn ich hab einfach nur die Reinfolge
vertauscht hier eine laufende Version
1 | // Globale Variablen
|
2 | struct tcc_module tcc_instance;
|
3 |
|
4 | static void configure_tcc(void)
|
5 | {
|
6 | struct tcc_config config_tcc;
|
7 | tcc_get_config_defaults(&config_tcc, TCC0);
|
8 |
|
9 | config_tcc.counter.period = PERIODE;
|
10 |
|
11 | config_tcc.compare.wave_generation = TCC_WAVE_GENERATION_SINGLE_SLOPE_PWM;
|
12 |
|
13 | config_tcc.pins.enable_wave_out_pin[1] = true;
|
14 | config_tcc.pins.enable_wave_out_pin[5] = true;
|
15 |
|
16 | config_tcc.pins.wave_out_pin[1] = PIN_PA05F_TCC0_WO1;
|
17 | config_tcc.pins.wave_out_pin[5] = PIN_PA09F_TCC0_WO5;
|
18 |
|
19 | config_tcc.pins.wave_out_pin_mux[1] = MUX_PA05F_TCC0_WO1;
|
20 | config_tcc.pins.wave_out_pin_mux[5] = MUX_PA09F_TCC0_WO5;
|
21 |
|
22 | config_tcc.compare.match[1] = PERIODE/2;
|
23 |
|
24 | /* Invert the Waveform output[1] channel to view the DTI effect */
|
25 | //config_tcc.wave_ext.invert[1] = true;
|
26 |
|
27 | tcc_init(&tcc_instance, TCC0, &config_tcc);
|
28 |
|
29 | /* Enable the Dead Time Insertion Generator for the channel 1 (CC1) */
|
30 | TCC0->WEXCTRL.reg |= TCC_WEXCTRL_DTIEN1;
|
31 |
|
32 | /* Define the High s->e time and Low side time for Dead Time generation */
|
33 | TCC0->WEXCTRL.reg |= TCC_WEXCTRL_DTLS(0x20) | TCC_WEXCTRL_DTHS(0x20);
|
34 |
|
35 | tcc_enable(&tcc_instance);
|
36 | }
|
In der main kann man dann mit
1 | tcc_set_compare_value(&tcc_instance, 1, neuerWert);
|
den Compare Wert änder (die PWM)
Falls sich noch jemand mit dem Board beschäftigt bin ich immer offen für
Anregungen.