Go Down

Topic: ATmega328P-PU prog. via RXD e TXD (Read 785 times) previous topic - next topic

busco

Ho un convertitore USB/Seriale con chip CP2102.
Sono disponibili sul connettore (6 vie) queste funzioni:
5V, 3V3, GND, TXD, RXD, e RST.
Si possono ricavare anche le altre funzioni della RS232:
DTR, DSR, RTS, CTS ecc.
L'ho collegato in questo modo:
   RXD del convertitore con RXD dell'ATmega328 pin 2
   TXD                "               TXD               "              3
   RST                "         con il reset pin 1 dell'ATmega328 con  in serie
                                   un condensatore da 0,1 uF.
   Il reset del micro  collegato al +5V tramite 10k.

La comunicazione con il serial monitor funziona nei due sensi.

La programmazione non funziona.
errore rilevato: stk500_getsync(): non in sync: resp=0x00
Utilizzo la board "Arduino Uno" e come programmatore "AVRISP".

Al posto di RST ho provato anche RTS e DTR con lo stesso risultato.

Dalla guida Menniti mi pare che sia posibile questo tipo di programmazione,
serve er caso una board specifica?

Ciao.
 

leo72

Devi incrociare le linee RX/TX
RX conv. -> TX Arduino
TX conv. -> RX Arduino

Michele Menniti

Sul fatto di incrociare le linee non sono d'accordo in assoluto, proprio alcuni giorni fa ho appurato che a volte questi schedini riportino direttamente le serigrafie lato target, quindi il collegamento potrebbe essere giusto, ma ovviamente se non va la prima cosa da fare è invertire tra loro tx e rx.
Detto questo due domande:
il micro target è configurato con quarzo 16MHz, condensatori, R sul reset, in poche parole stand-alone?
Il micro target contiene il bootloader?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Brunello

Quote
Sono disponibili sul connettore (6 vie) queste funzioni:
5V, 3V3, GND, TXD, RXD, e RST.
Si possono ricavare anche le altre funzioni della RS232:
DTR, DSR, RTS, CTS ecc.
L'ho collegato in questo modo:
   RXD del convertitore con RXD dell'ATmega328 pin 2
   TXD                "               TXD               "              3
   RST                "         con il reset pin 1 dell'ATmega328 con  in serie
                                   un condensatore da 0,1 uF.
   Il reset del micro  collegato al +5V tramite 10k.



se e' la solita schedina cinese, in genere RX-Tx vanno incrociati

mentre l'RST non e' la linea di Reset, al contrario serve per resetatre il chip CP2102


leo72


mentre l'RST non e' la linea di Reset, al contrario serve per resetatre il chip CP2102



Difatti si chiama RTS (Request To Send), anch'io all'inizio sbagliavo invertendo la sigla e vedendo quel segnale come quello di reset.
L'IDE di Arduino usa poi il segnale DTR per resettare la scheda, se si vuole usare il convertitore con l'IDE va usato appunto il segnale DTR (chiedo conferma a Michele che ne sa più di me, visti i test che ha fatto per i suoi lavori passati).

busco

RISOLTO, ho ricaricato il bootloader con Arduino e poi via seriale ho caricato uno
sketch e ora funziona. L'altra volta avevo caricato il bootloader e uno sketch
con Arduino prima di collegarmi alla seriale.
Potrebbe essere questo il motivo? Appena posso farò una prova.

Grazie a tutti per i suggerimenti.

busco


RISOLTO, ho ricaricato il bootloader con Arduino e poi via seriale ho caricato uno
sketch e ora funziona. L'altra volta avevo caricato il bootloader e uno sketch
con Arduino prima di collegarmi alla seriale.
Potrebbe essere questo il motivo? Appena posso farò una prova.

Grazie a tutti per i suggerimenti.

Con RST sul reset non funziona, il programmatore non risponde.
Funziona sia con DTR che con RTS

Michele Menniti

mi avete evocato? :D
non mi riferisco a nessuno degli interventi, quindi conferme o contraddizioni ve le cercate da soli ;)

I convertitori seriali "nativi" (FT232RL, CP2102, PL2303) hanno in genere sia DTR che RTS, l'MCP2200 che è un PIC "travestito" da Convertitore ha il solo RTS; stranamente l'8u2 e il 16u2 che, per quanto ne so, sono sempre microcontrollori "prestati" alla conversione USB-seriale, usano il CTS, mentre l'RTS è libero; personalmente sono convinto che ci sia un'inversione di sigle nella pinatura, la cosa è uguale sia per l'uno che per l'altro micro ATMEL (rispettivamente UNO r1 e UNO r3)

IL DTR e l'RTS sono entrambi supportati dall'IDE, per cui la programmazione avviene regolarmente.
Il Serial Monitor invece supporta il solo DTR, quando lo aprite resetta il micro, mentre se usate l'RTS ciò non avviene; altri software di emulazione terminale (Windows HyperTerminal p.es.) supportano entrambi e, se usati al posto del Serial Monitor, resettano il micro.

RST è una sigla che indica il RESET, nello specifico di quella schedina è effettivamente collegato al RESET del CP2102, ma attenzione.... molte volte la stessa sigla viene usata per indicare il segnale DTR o RTS, semplicemente per indicare che va collegato ad un pin RESET del micro target.

Se avete dubbi.... come ha detto Leo ho studiato questo specifico argomento quando ho iniziato la sperimentazione dell'MCP2200.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

PaoloP


L'altra volta avevo caricato il bootloader e uno sketch
con Arduino prima di collegarmi alla seriale.
Potrebbe essere questo il motivo?


Se l'hai riprogrammato tramite ISP hai cancellato il Bootloader caricato precedentemente.
Se devi programmare il micro solo tramite ISP il Bootloader non serve.
Ricorda di collegare anche i GND della scheda con quello di Arduino.

Go Up