programmare il 644 ... ma come????

Dunque, stamani mi sono rimesso a fare alcuni test.

PREMESSE:

  1. ci sono in circolazione dei 1284P in formato DIP di una partita difettosa, che hanno un bug a livello hardware sulla linea RX della 1a seriale (e questo è assodato da conferme avute sul forum internazionale). Ripeto: solo il formato DIP è affetto da questo problema che riguarda solo alcune partite.
  2. questi 1284P con bug hanno bisogno di un filtro RC sull'ingresso di RX0 altrimenti la comunicazione seriale non funziona. Questo vale sia per la programmazione seriale tramite bootloader sia per la normale comunicazione.
  3. i 644P in formato DIP sembrano esenti da questo problema

OBIETTIVO:
trovare una soluzione che possa essere utilizzata sia per i 1284P che per i 644P, senza che l'utente debba cambiare nulla a livello di circuiteria.

SOLUZIONE:

  1. togliere la pull-up aggiuntiva da 10K sulla linea RX (che farebbe un partitore con la R da 1K presente sulla linea RX che arriva dall'Atmega8/16U2) che dà noia al 1284P mentre la sua presenza è indifferente per il 644P.
  2. la pull-up aggiuntiva da 10K sulla linea TX si può tenere, non disturba nessuno dei 2 chip
  3. usare un filtro RC sulla linea RX del microcontrollore composto da una R da 10K in serie fra il pin RX dell'Arduino ed il pin RX0 del 644P/1284P, ed un condensatore ceramico da 100 pF (100 picoFarad) in parallelo (fra RX0 e GND).

Ho provato questa configurazione con 1284P affetto da bug e 644P non affetto da bug ed entrambi sono stati programmati al primo colpo senza storie da parte di avrdude.