PWM non funzionante su pin 9 e 10

Buongiorno a tutti,

Tempo fà lavorando ad un progetto di un regolatore di velocità per motore in continua scoprii che la mia scheda arduino uno mantenendo tutte le impostazioni di default non pilotava correttamente i pin 9 e 10 in modalità pwm (analogwrite)
Avevo effettuato i test connettendo correttamente un led su tali pin.

Il comportamento era il seguente :

valori analogwrite da 0 a 254 led spento
valore analogwrite 255 led acceso

Ma di fading nessuna traccia.
Lo stesso codice sugli altri pin pwn invece risultava funzionare correttamente.
Ho trovato anche un video sulla rete di un altro utente brasiliano con lo stesso identico problema, ma non ho trovato indicata alcuna soluzione

I pin 9 e 10 per il pwm utilizzano se non sbaglio il timer 1 che ha come impostazione di prescaler di default lo stesso valore di timer 2 che controlla il pwm nei pin 11 e 3 che però risultano funzionare correttamente.

Qualcuno ha avuto lo stesso problema?

Saluti.

Hai provato con un altro micro ?
Premetto che non ho nessun UNO, ma non ho mai avuto ne sentito di problemi simili....

Non ho provato perchè ho scoperto che non avrei potuto riscrivere il bootloader sul nuovo chip senza fare collegamenti esterni.
Mi sto preparando proprio in questi giorni una shield per programmare chip vergini con la mia uno.
Abbiate pietà, vengo dal mondo Microchip, non ho molte materiale per gli avr.

Capisco.. ehm.. non saprei proprio come ovviare alla faccenda...

Il prescaler dei timer è un parametro che a te non interessa, dato che non stai gestendo direttamente i timer ma attraverso funzioni precostituite di Arduino. Detto questo, potresti provare questo codice con un LED ed una R (220/330 ohm)?

void setup() {
    pinMode(9, OUTPUT);
}

void loop() {
    for (byte i=0; i<256; i++) {
        analogWrite(9, i);
        delay(50);
    }
}

Il fading a me lo ha fatto correttamente, sia sul pin 9 che sul pin 10.

Grazie leo72, ma è proprio quello che ho fatto, soltanto che nei pin 9 e 10 il fading non lo fà, negli altri pin si.
A questo punto penso si possa trattare di un chip difettoso e del relativo venditore dello stesso DISONESTO.
Attendo i nuovi 328 per provare a sostituirlo e vedere come si comporta.

Tu mi parli di Arduino, vero?
Se la scheda è originale ed il chip incriminato è quello montato di fabbrica, allora io credo che potresti contattare direttamente il team perché secondo il mio modesto punto di vista hai diritto al controllo della scheda in garanzia.

Si parlo di un arduino uno che però ho comprato su ebay da un utente che l'ha spacciato per nuovo ma forse nuovo non era.
Comunque non credo che per 4/5 euro di chip non mi convenga anche tentare spedire la mia 'unica' scheda ed entrare nei meandri dell'assistenza.
Mi aveva incuriosito era l'aver trovato un altro utente con il mio identico problema (vedi filmato youtube sopra), tanto da farmi pensare che potesse esserci qualcosa di software da modificare.

niki77:
Mi aveva incuriosito era l'aver trovato un altro utente con il mio identico problema (vedi filmato youtube sopra), tanto da farmi pensare che potesse esserci qualcosa di software da modificare.

Verifica se i pin 9 e 10 cambiano di stato quando usi la digitalwrite, se lo fanno è quasi impossibile che l'ATmega sia difettoso, se non lo fanno controlla direttamente su i pin del micro, potrebbe essere un problema di pcb o di saldature.
Se i pin 9 e 10 non cambiano di stato in nessun modo allora sei più che sicuro che sono danneggiati, però potrebbero essere ancora funzionanti come ingressi.

Se l'hai comprato da un privato, ne dovrebbe rispondere lui ma, come hai detto tu, è inutile inca**arsi per 4 euro di chip.

astrobeed:
Verifica se i pin 9 e 10 cambiano di stato quando usi la digitalwrite, se lo fanno è quasi impossibile che l'ATmega sia difettoso, se non lo fanno controlla direttamente su i pin del micro, potrebbe essere un problema di pcb o di saldature.
Se i pin 9 e 10 non cambiano di stato in nessun modo allora sei più che sicuro che sono danneggiati, però potrebbero essere ancora funzionanti come ingressi.

I pin cambiano perfettamente stato con digitalwrite (altra cosa strana) e ancor più strano passano dallo stato logico 0 allo stato logico 1 anche con analogwrite(255).

Secondo me è proprio il timer dell' atmel che controlla il pwm su quei pin che è andato a farsi friggere, non vedo altre spiegazioni.

niki77:
Secondo me è proprio il timer dell' atmel che controlla il pwm su quei pin che è andato a farsi friggere, non vedo altre spiegazioni.

Direi che è altamente improbabile che sia partito il timer, è più facile che sia partito il mos che collega fisicamente il pin con l'out del timer.

Bhe direi che poco importa sapere dove stà esattamente il guasto quando tanto questo non è risolvibile.

Al limite se i nuovi chip che arrivano non manifestano il problema questo lo destinerò ad una scheda dedicata che non fà utilizzo di pwn su quei pin .

Se il chip è difettoso non puoi sapere a priori né se c'è altro di difettoso né se col tempo si presenteranno altri problemi. Mettilo sotto plexiglass e facci un bel portachiavi o fermacarte :wink:

leo72:
Se il chip è difettoso non puoi sapere a priori né se c'è altro di difettoso né se col tempo si presenteranno altri problemi ...

Con la stessa percentuale con la quale si potrebbero anche non presentare però...

Ho montato pic con uscite folgorate su prototipi che dopo anni ancora fanno il loro sporco mestiere.
Non si può fare una simile constatazione a priori.

Vero.