Progetto con Atmega168/328 TQFP: aiuto su configurazione e bootloader

Ciao a tutti :slight_smile:
Sto realizzando un progetto con Arduino per il quale, a causa di problemi di spazio, andrò credo ad usare un Atmega 168 o 328 (non so ancora) in versione TQFP (questa per capirci)
Prima di procedere con schema e pcb finali, volevo chiedervi un po di informazioni per evitare di sprecare tempo e buttare poi via il circuito stampato:

  1. La configurazione minima per garantire il funzionamento standalone è composta da:
  • alimentazione (+5v stabilizzati) e GND
  • quarzo 16MHz e 2 condensatori da 22pF
    Corretto?
  1. Per la programmazione della scheda avevo pensato di inserire una strip da 5 pin collegati a:
    +5v, GND, RX, TX, RESET
    in modo simile ad uno di questi 2 (devo decidere se programmarlo usando la mia board o comprare l'adattatore):

    Vi sono altri modi per farlo?
    Perchè nel caso dell'adattatore c'è quel condensatore sul RESET?
    Se lo metto e poi programmo con la scheda anzichè con l'adattatore non funziona?

Una R da 10kohm tra pin reset e 5V è indispensabile. L'alternativa consiste nel programmare il micro via ISP, in questo modo non ti serve bootloader, non ti serve la seriale e per riprogrammare il micro non devi ogni volta togliere quello di Arduino, indomma è tutto più semplice. Unica accortezza è che i pin ISP siano possibilmente liberi da "impegni" circuitali oppure che si crei un sistema di jumper per poterli scollegare dal circuito in fase di programmazione. Naturalmente dovrai prevedere un connettore ISP 3x2 esattamete uguale a quello presente su Arduino.

Avevo pensato all'ISP, però come dici tu non sarebbe presente il bootloader. In questo caso il codice scritto con l'IDE di arduino può essere direttamente caricato sul micro o devo passare per altri programmi?

Per la resistenza da 10K tra RESET e GND: come mai nello schema li viene indicata tra VCC e RESET?

Unica accortezza è che i pin ISP siano possibilmente liberi da "impegni" circuitali oppure che si crei un sistema di jumper per poterli scollegare dal circuito in fase di programmazione.

Si possono far danni in caso contrario?
Chiedo perché di solito programmo gli attiny85 con questa tecnica e pur non scollegando il circuito di contorno, la cosa funziona.

Dani88:
Avevo pensato all'ISP, però come dici tu non sarebbe presente il bootloader. In questo caso il codice scritto con l'IDE di arduino può essere direttamente caricato sul micro o devo passare per altri programmi?

Con il bootloader lo sketch viene caricato via seriale; senza bootloader devi usare l'arduino come programmatore ISP.
In firma al profilo di Michele Menniti trovi la sua guida che toglie ogni dubbio sulle procedure e del funzionamento dei due metodi.

Per la resistenza da 10K tra RESET e GND: come mai nello schema li viene indicata tra VCC e RESET?

La resistenza va collegata su Vcc, non a massa... finalmente il Prof ha dato la prova che è un essere umano :wink:
E' stato sicuramente un errore di distrazione

kernak:

Unica accortezza è che i pin ISP siano possibilmente liberi da "impegni" circuitali oppure che si crei un sistema di jumper per poterli scollegare dal circuito in fase di programmazione.

Si possono far danni in caso contrario?
Chiedo perché di solito programmo gli attiny85 con questa tecnica e pur non scollegando il circuito di contorno, la cosa funziona.

Non esplode nulla, al massimo non va a buon fine il caricamento dello sketch

pelletta:

Per la resistenza da 10K tra RESET e GND: come mai nello schema li viene indicata tra VCC e RESET?

La resistenza va collegata su Vcc, non a massa... finalmente il Prof ha dato la prova che è un essere umano :wink:
E' stato sicuramente un errore di distrazione

XD vero è stato un errore di distrazione (non che sono un essere umano, ne ho perso le sembianze 30kg fa :sweat_smile:) chiedo scusa, correggo il post.

kernak:

Unica accortezza è che i pin ISP siano possibilmente liberi da "impegni" circuitali oppure che si crei un sistema di jumper per poterli scollegare dal circuito in fase di programmazione.

Si possono far danni in caso contrario?
Chiedo perché di solito programmo gli attiny85 con questa tecnica e pur non scollegando il circuito di contorno, la cosa funziona.

Non esplode nulla, al massimo non va a buon fine il caricamento dello sketch

vero anche questo, in genere puoi caricare via ISP anche con componenti collegati, purché non ci siano riferimenti a massa (tipo pull-down), poiché però non sempre i comportamenti sono prevedibili, preferisco consigliare la soluzione prima, una volta fatto il PCB diventa problematico poi adottarla.
BUD, benvenuto tra i Marziani, ormai non ne sbagli una XD XD XD

Dani88:

  1. La configurazione minima per garantire il funzionamento standalone è composta da:
    ...
  • quarzo 16MHz e 2 condensatori da 22pF

Dipende.
Se vuoi replicare un "Arduino", ossia impostare il chip a 16 MHz, allora sì: hai bisogno del quarzo e dei suoi condensatori.
Se vuoi usare un Atmega ad un clock inferiore (1 o 8 MHz) i componenti su citati non sono necessari.

Devi sapere in principio che non tutto il software gira correttamente a frequenze diverse dai 16 MHz perché alcune librerie o sketch non si adattano automaticamente ad un clock differente ma in linea di principio di casi problematici non ce ne sono molti.