Go Down

Topic: info arduino Due (Read 1 time) previous topic - next topic

leo72

Nella funzione analogWrite trovo questa funzione:
Code: [Select]
PWMC_ConfigureClocks(PWM_FREQUENCY * PWM_MAX_DUTY_CYCLE, 0, VARIANT_MCK);

Prova nel tuo sketch a cambiare PWM_FREQUENCY con quello che vuoi e poi il duty cycle seguente.

gptxever

ok...visto che la strada allora è quella proverò a fare un po di test con le funzioni che ho scritto sopra e mi hai suggerito tu...oscilloscopio sotto mano e un po di pazienza:)...grazie intanto leo..ti faro sapere..
Samuele

leo72


ok...visto che la strada allora è quella proverò a fare un po di test con le funzioni che ho scritto sopra e mi hai suggerito tu...oscilloscopio sotto mano e un po di pazienza:)...grazie intanto leo..ti faro sapere..

OK.
Io dico che con questa funzione qualcosa di buono ci combini  ;)

gptxever

#13
Jan 21, 2013, 09:09 pm Last Edit: Jan 21, 2013, 09:11 pm by gptxever Reason: 1
leo buone notizie:).... ho fatto qualche test e sono arrivato a queste conclusioni:

ho ottenuto la frequenza desiderata in questo modo:

Code: [Select]
void setup(){
....
....
 analogWrite(Outmot1, 0);
 analogWrite(Outmot2, 0);
 analogWrite(Outmot3, 0);
 analogWrite(Outmot4, 0);
 
 PWMC_ConfigureClocks(500 * PWM_MAX_DUTY_CYCLE , 0, VARIANT_MCK);
....
....


scopro che:
i canali di cui viene modificata la frequenza del PWM sono solo: 6,7,8,9.
nel void setup() necessita  l'istruzione
Code: [Select]
analogWrite(pin_uscita, valore PWM);
e rispettivamente prima di
Code: [Select]
PWMC_ConfigureClocks(500 * PWM_MAX_DUTY_CYCLE , 0, VARIANT_MCK);
ma non saprei dire il motivo (forse xke riconosce l'out come abilitato o inizializzato, o una roba del genere penso)..

in seguito per modificare il duty cycle posso utilizzare sia il classico "analogRead()" o la funzione " PWMC_SetDutyCycle(PWM_INTERFACE, PWM_CHx, value);"...non ho notato differenze...
Samuele

leo72


leo buone notizie:).... ho fatto qualche test e sono arrivato a queste conclusioni:

Ottimo  ;)

Quote

scopro che:
i canali di cui viene modificata la frequenza del PWM sono solo: 6,7,8,9.

Il SAM3X è un chip molto complesso. Bisognerebbe guardarsi tutto il core e capire cos'è supportato e cosa no. Non hai idea delle periferiche che integra, e se parliamo solo di timer ce ne sono almeno 4 o 5 differenti (RTC, SysTick, Watchdog, Pwm, RTT).

Quote

nel void setup() necessita  l'istruzione
Code: [Select]
analogWrite(pin_uscita, valore PWM);
e rispettivamente prima di
Code: [Select]
PWMC_ConfigureClocks(500 * PWM_MAX_DUTY_CYCLE , 0, VARIANT_MCK);
ma non saprei dire il motivo (forse xke riconosce l'out come abilitato o inizializzato, o una roba del genere penso)..

Forse perché nel core c'è qualche altra inizializzazione che non ho visto e che l'analogWrite richiama.

Go Up