sto compilando uno sketch per arduino leonardo, utilizzando il makefile del github Sudar, ma ho ottenuto un errore che non mi aspettavo per il comando analogWriteResolution.
il secondo sketch è un taglia incolla dell'esempio della referenza ufficiale.
tutti le tre compilazioni terminano con questo errore:
/run/arduino/sketches/analogWriteResolution/analogWriteResolution.ino:5:5: error: 'analogWriteResolution' was not declared in this scope
analogWriteResolution(8);
^~~~~~~~~~~~~~~~~~~~~
/run/arduino/sketches/analogWriteResolution/analogWriteResolution.ino:5:5: note: suggested alternative: 'analogWrite'
analogWriteResolution(8);
^~~~~~~~~~~~~~~~~~~~~
analogWrite
It defaults to 8 bits (values between 0 - 255) for backward compatibility with AVR based boards.
io capirei che dovrebbe funzionare benissimo con AVR. altrimenti sarebbe scritto esplicitamente che non è compatibile con AVR.
tra l'altro, il pro micro che sto utilizzando ora possiede pin con risoluzione a 8 bit, pin con risoluzione a 10 bit e pin con risoluzione a 16 bit. Come può essere che una simile istruzione non funzioni? se no, come si fà?
Come ti è stato detto, quella funzione NON è implementata nel "core" AVR, ma nei core SAMD, MBED e UNO R4 (basta fare una ricerca all'interno dei vari "cores" per rendersene conto), per cui, se vuoi sfruttare la capacità dei timers a 16 bit di generare PWM con risoluzione maggiore degli 8 bit ... devi prendere il datasheet della MCU, studiare come funziona la cosa e fare tutto a mano manipolando i registri.
... so che sei un vecchio utente del forum , ma ... nuovo della sezione Italiana, per cui, cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazioneNELL'APPOSITA DISCUSSIONE spiegandoci bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
grazie ancora.
non ho dubbi che tutto quello che dite sia corretto.
mi trovo solo un po' in difficoltà a comprendere il modo in cui la questione è documentata e come mai sia stato fatto così.
in pratica, gli schemi ufficiali del pro micro dichiarano che alcuni pin funzionano a 10 o a 16 bit, ma non mi è ancora chiarissimo cosa accade se eseguo un'istruzione analogWrite(). io mi aspetterei che, a meno di particolari configurazioni, venga utilizzata la piena funzionalità del pin e siano necessarie al contrario opportune manovre per ridurla a valori inferiori. invece sembrerebbe esattamente il contrario: per compatibilità con i pin a 8 bit dei modelli precedenti, andrebbero tutti a 8, salvo artifici complessi che tuttavia è laborioso ricostruire, perché non sarebbero neppure documentati esplicitamente da qualche parte.
che senso ha tutto questo?
e quantomeno, non avrebbe potuto essere spiegato in un modo un po' più diretto?
Pro micro e' uno dei "precedenti". E analogWrite per AVR ha resoluzione 8bit.
Puoi configurare timer1 per 10 o 16bit, ma non lo puoi fare con analogWrite..
Puoi anche cercare "arduino fast pwm", alta frequenza e alta risoluzione vanno mano a mano. Si tratta sempre la stessa cosa, uso di 16bit timer1.
Puoi trovare anche qualche library (non ho provato personalmente):