Arduino Zero pin 13 PWM

Ciao ragazzi, ho un problema a far funzionare il pin digitale 13 in modalità PWM. A voi funziona?
Come posso risolvere per farlo funzionare in PWM?
Ho anche provato a fare delle piccole modifiche al file variant.cpp ma nulla non funziona.
Grazie a tutti :slight_smile:

Che problemi hai di preciso? Se stai usando analogWrite() dovrebbe andare.

Si proprio con analogWrite() non funziona il pin 13. A casa ho 2 Arduino M0+ e 3 Genuino Zero ma il problema si presenta con tutti, anche con l'ultimo core installato (versione 1.6.6).
Per caso riesci a provare?

No, non ho nessuna delle schede in questione, però mi suona molto strano. Prova a farci vedere il codice che usi.

Il codice è banale, faccio uso solo della funzione analogWrite().
Nemmeno con l'esempio "Fade.ino", interno all'IDE, riesco a far funzionare il pin 13 in PWM.
Credo sia un problema di core arduino.

Cosa stai cercando di pilotare in PWM dal pin 13 ? e, conseguentemente, come vedi che il PWM non funziona ?

Guglielmo

Un semplice led. Non si accende con analogWrite(). Il pin 13 non fornisce nessuna tensione. Mentre con la funzione digitaWrite() tutto funziona correttamente. Me lo fa con tutte le board zero che ho :S

Ti rammento comunque che il pin 13 della Zero (come tutti i suoi pin di I/O) è in grado di fornire NON più di 7 mA (MAX) a 3.3V ... attaccarci un LED è ... andarsele a cercare, indipendentmente da tutto !

Guglielmo

Questo è ovvio!!!
Qualcuno è riuscito a provare?

Si, confermo, ho provato sul 9 e sul 13 il programma di fading che è tra gli esempi del IDE verificando con ... l'oscilloscopio (... non con un LED :grin: ) ed effettivamnete sul pin 9 ho il segnale ad onda quadra, sul 13 ... linea piatta :o

Il classico "blink" invece funziona regolarmente ... ::slight_smile:

Guglielmo

Credo sia il caso di aprire un issue allora! :frowning:

Il pin 13 risulta collegato a PA17 del micro, tocca andare a controllare sul data sheet del SAMD se quel pin è utilizzabile per il PWM, oppure se a livello di core non hanno fatto qualche cavolata con il relativo init.

Guglielmo Grazie mille della prova :slight_smile: .
Intanto sto cercando una soluzione, se ho novità vi aggiorno!
Più che hardware credo sia proprio un problema di core.
Ma è mai possibile che questo problema è saltato fuori solo ora?!
Forse questo problema si presenta solo con gli ultimi aggiornamenti del core?! Devo provare ad utilizzare vecchie versioni.

In effetti cercando se esiste un problema legato al pin 13 sulla ZERO non si trova nulla, il che è abbastanza strano, però tenuto conto che il pin 13 è collegato al LED probabilmente mai nessuno ha provato ad usarlo come PWM.

Gius_8:
Ma è mai possibile che questo problema è saltato fuori solo ora?!
Forse questo problema si presenta solo con gli ultimi aggiornamenti del core?! Devo provare ad utilizzare vecchie versioni.

... su GitHub, tra le Issues non ce ne è traccia ::slight_smile:

Guglielmo

Trovata una possibile spiegazione, dalla errata sul data sheet del SAM D21

2 – TCC0/WO[6] on PA16 and TCC0/WO[7] on PA17 are not available.
Errata reference: 11622
Fix/Workaround:
None

TCC0 è uno dei timer usati per il PWM

Si, ma leggendo il commento dentro "variants.cpp" ...

*/
/*
 * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
 * + Pin number +  ZERO Board pin  |  PIN   | Label/Name      | Comments (* is for default peripheral in use)
 * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
 * |            | Digital Low      |        |                 |
 * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
 * | 0          | 0 -> RX          |  PA11  |                 | EIC/EXTINT[11] ADC/AIN[19]           PTC/X[3] *SERCOM0/PAD[3]  SERCOM2/PAD[3]  TCC0/WO[3]  TCC1/WO[1]
 * | 1          | 1 <- TX          |  PA10  |                 | EIC/EXTINT[10] ADC/AIN[18]           PTC/X[2] *SERCOM0/PAD[2]                  TCC0/WO[2]  TCC1/WO[0]
 * | 2          | 2                |  PA14  |                 | EIC/EXTINT[14]                                 SERCOM2/PAD[2]  SERCOM4/PAD[2]  TC3/WO[0]   TCC0/WO[4]
 * | 3          | ~3               |  PA09  |                 | EIC/EXTINT[9]  ADC/AIN[17]           PTC/X[1]  SERCOM0/PAD[1]  SERCOM2/PAD[1] *TCC0/WO[1]  TCC1/WO[3]
 * | 4          | ~4               |  PA08  |                 | EIC/NMI        ADC/AIN[16]           PTC/X[0]  SERCOM0/PAD[0]  SERCOM2/PAD[0] *TCC0/WO[0]  TCC1/WO[2]
 * | 5          | ~5               |  PA15  |                 | EIC/EXTINT[15]                                 SERCOM2/PAD[3]  SERCOM4/PAD[3] *TC3/WO[1]   TCC0/WO[5]
 * | 6          | ~6               |  PA20  |                 | EIC/EXTINT[4]                        PTC/X[8]  SERCOM5/PAD[2]  SERCOM3/PAD[2]             *TCC0/WO[6]
 * | 7          | 7                |  PA21  |                 | EIC/EXTINT[5]                        PTC/X[9]  SERCOM5/PAD[3]  SERCOM3/PAD[3]              TCC0/WO[7]
 * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
 * |            | Digital High     |        |                 |
 * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
 * | 8          | ~8               |  PA06  |                 | EIC/EXTINT[6]  ADC/AIN[6]  AC/AIN[2] PTC/Y[4]  SERCOM0/PAD[2]                 *TCC1/WO[0]
 * | 9          | ~9               |  PA07  |                 | EIC/EXTINT[7]  ADC/AIN[7]  AC/AIN[3] PTC/Y[5]  SERCOM0/PAD[3]                 *TCC1/WO[1]
 * | 10         | ~10              |  PA18  |                 | EIC/EXTINT[2]                        PTC/X[6] +SERCOM1/PAD[2]  SERCOM3/PAD[2] *TC3/WO[0]    TCC0/WO[2]
 * | 11         | ~11              |  PA16  |                 | EIC/EXTINT[0]                        PTC/X[4] +SERCOM1/PAD[0]  SERCOM3/PAD[0] *TCC2/WO[0]   TCC0/WO[6]
 * | 12         | ~12              |  PA19  |                 | EIC/EXTINT[3]                        PTC/X[7] +SERCOM1/PAD[3]  SERCOM3/PAD[3]  TC3/WO[1]   *TCC0/WO[3]
 * | 13         | ~13              |  PA17  | LED             | EIC/EXTINT[1]                        PTC/X[5] +SERCOM1/PAD[1]  SERCOM3/PAD[1] *TCC2/WO[1]   TCC0/WO[7]
 * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
 * |            | Analog Connector |        |                 |
 * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
 * | 14         | A0               |  PA02  | A0              | EIC/EXTINT[2] *ADC/AIN[0]  DAC/VOUT  PTC/Y[0]
 * | 15         | A1               |  PB08  | A1              | EIC/EXTINT[8] *ADC/AIN[2]            PTC/Y[14] SERCOM4/PAD[0]                  TC4/WO[0]
 * | 16         | A2               |  PB09  | A2              | EIC/EXTINT[9] *ADC/AIN[3]            PTC/Y[15] SERCOM4/PAD[1]                  TC4/WO[1]
 * | 17         | A3               |  PA04  | A3              | EIC/EXTINT[4] *ADC/AIN[4]  AC/AIN[0] PTC/Y[2]  SERCOM0/PAD[0]                  TCC0/WO[0]
 * | 18         | A4               |  PA05  | A4              | EIC/EXTINT[5] *ADC/AIN[5]  AC/AIN[1] PTC/Y[5]  SERCOM0/PAD[1]                  TCC0/WO[1]
 * | 19         | A5               |  PB02  | A5              | EIC/EXTINT[2] *ADC/AIN[10]           PTC/Y[8]  SERCOM5/PAD[0]
 * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------

...sembrerebbe che il "default" per il pin 13/PA17 sia TCC2/W0[1] (... è marcato con l'asterisco).

Quindi dovrebbe andare ... sempre che lo abbiano rispettato ... ::slight_smile:

Guglielmo

Tocca verificare se realmente viene usato TCC2 invece di TCC0.
Non ho la ZERO e non ho installato il relativo core, quindi non ho modo di verificarlo. :slight_smile:

Se è un problema hardware, la cosa va comunque segnalata in modo che sistemino la documentazione.

Ragazzi ho testato tutti i pin dichiarati come PWM ma gli unici pin funzionanti come PWM sono {3, 5, 6, 8, 9, 10, 11, 12}.