Go Down

Topic: MCP2200[risolto] (Read 2260 times) previous topic - next topic

tonid

Dec 08, 2012, 08:52 am Last Edit: Dec 10, 2012, 10:46 am by tonid Reason: 1
Ciao a tutti,incuriosito dal problema avuto da un utente del forum con un convertitore USB-ttl ed avendo a disposizione alcuni MCP2200 ho deciso di provare a vedere come funzionava il tutto per fare esperienza ed imparare facendo una schedina con quello che serve al funzionamento del chip.
Dopo varie ricerche ho deciso di usare lo schema elettrico usato da Michele Menniti nella sua guida in quanto era già stato testato ed ovviamente risultava funzionante.
Fatta la scheda ho installato i driver e configurato il chip impostando il baud rate a 9600 ed abilitato i led con relativo lampeggio.
Collegata però la scheda ad arduino uno e facendo l'upload del blink, l'MCP fa i suoi 3 lampeggi al led tx ma l'operazione fallisce mostrando sull'ide (1.0.1) l'errore not in sync 0x00. ]:D
Il problema risiede nel segnale di reset che a quanto pare non arriva nella maniera corretta all'arduino in quanto non da segni di reset. Incuriosito collego la sonda dell'oscilloscopio tra il reset di arduino e gnd,catturo il segnale e vedo che non scende fino ad arrivare prossimo allo zero ma da solo un improvviso segno di decadimento fino a circa 2,5 volt per poi tornare gradualmente a vcc tutto questo in circa 2ms.
Qualche idea/suggerimento per risolvere la cosa?
Ciao.

 

Michele Menniti

#1
Dec 08, 2012, 09:10 am Last Edit: Dec 08, 2012, 09:13 am by Michele Menniti Reason: 1
Cosa stai cercando di programmare?
La prova che puoi fare è eliminare o aumentare il condensatore in serie al segnale RTS, nel mio schema è il C5.
Quello schema, leggermente variato (ma solo per prevedere la possibilità di farlo lavorare a 3,3V) è diventato un kit perfettamente funzionante, che sarà pubblicato su Elettronica In; nell'articolo saranno presentati due PCB: uno in doppia faccia, più piccolo, per la produzione (v. foto), ed uno a singola faccia, per permettere l'autorealizzazione.
Ti assicuro che funziona a meraviglia, ho fatto almeno 5-6 prototipi, sono quasi certo che il problema sia nella tolleranza del condensatore che hai usato, specialmente se stai lavorando in smd. Ho scoperto a mie spese come i C in smd possano avere tolleranze del ±80% ed è pure dichiarato!!!!, ho visto con i miei occhi il mio capacimetro mostrare 2,3µF misurando un C da 10µF 0805 :smiley-eek:
Infatti nella foto puoi vedere il C6 (che sarebbe il C5 dello schema che conosci) con in parallelo un jumper a saldare, per bypassarlo quando la sua presenza da' fastidio; però più che toglierlo (prova da fare immediatamente) puoi tentare di portarlo anche fino a 1µF, sempre non polarizzato.
Se hai bisogno chiedi, DEVE funzionare, lo stesso circuito è montato nel mio programmatore HV e non sbaglia un colpo!
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

tonid

Ciao Michele e grazie per la risposta. Sto programmando un arduino uno con chip originale.
Ora devo cortocircuitare il condensatore e mi porto i fili su bread board perchè in smd non ho molti valori e provo variando i valori del C in questione ,vediamo cosa succede...
Quote
Ho scoperto a mie spese come i C in smd possano avere tolleranze del ±80% ed è pure dichiarato!!!!

  :smiley-eek-blue: :smiley-eek-blue:Azzz....io li ho presi in negozio e non so che tolleranza abbiano.......poi per curiosità li misuro e ti dico.

Michele Menniti

forse capisco male, se vuoi portarti i fili sulla breadboard NON puoi cortocircuitare quello attuale, altrimenti anche sulla bread avrai un corto. Il corto fallo per provare SENZA C, poi quello lo devi proprio dissaldare ed allora sì che puoi provare altri C sulla bread.
Senza C dovrebbe comunque andare, ma è meglio se poi ne metti uno di valore adeguato.
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

tonid

Quote
forse capisco male, se vuoi portarti i fili sulla breadboard NON puoi cortocircuitare quello attuale, altrimenti anche sulla bread avrai un corto. Il corto fallo per provare SENZA C, poi quello lo devi proprio dissaldare ed allora sì che puoi provare altri C sulla bread.
Senza C dovrebbe comunque andare, ma è meglio se poi ne metti uno di valore adeguato.

No mi sono spiegato male io.  Sulla scheda che ho fatto io in smd ,il C è in serie al pin RTS come da schema...lo devo dissaldare e collegare i due pad con un pezzetto di filo e poi il reset in uscita dal connettore lo porto su bread board e lo collego al C e l'altro capo lo porto al reset arduino,in questo modo posso fare le prove del caso..

Michele Menniti

ok, fammi sapere
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

tonid

Allora ho provato con due C da 100nF (in parallelo) quindi 200nF ed ora il reset sembra funzionare.......
Lo vedo dai lampeggi del led sul pin 19 (13) del 328......quindi ho il reset ad inizio comunicazione ma arduino non risponde nulla e dopo un certo tempo mi arriva un altro reset coincidente con il messaggio not in sync 0x00  ]:)
Ho controllato anche il cavetto ma risulta tutto ok.........

Michele Menniti

Hai fatto prima di tutto la prova a toglierlo proprio il C? manda l'RTS direttamente a RESET e vedi cosa succede
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

tonid

Quote
Hai fatto prima di tutto la prova a toglierlo proprio il C? manda l'RTS direttamente a RESET e vedi cosa succede

Se collego direttamente il comportamento è uguale come la soluzione con C da 200nF.
Mentre con il C da 100nF non avviene il reset ed in entrambi i casi ovviamente ho il famoso errore  :smiley-roll-sweat:

Michele Menniti

E' molto strano, non ti pongo la fatidica domanda, anche se prima o poi ci arriveremo :smiley-sweat:, a questo punto prova con un C molto grande, sull'ordine del µF
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

tonid

Quote
E' molto strano, non ti pongo la fatidica domanda, anche se prima o poi ci arriveremo , a questo punto prova con un C molto grande, sull'ordine del µF

Provato,idem come con 200nF.......ho messo 1,2uF......bene per i reset ma solito errore 0x00.
Falla la domanda magari si nasconde lì dietro il problema..

tonid

Ho controllato se i dati arrivano sull'rx di arduino e ci sono ma in uscita dal tx no c'è nulla.......boh......

Michele Menniti

No, va bene, i soliti problemi a monte, ma tu sei uno preciso :)
Potresti postare la schermata che ti dà l'utility? A volte durante la fase di programmazione il baud rate se ne va per fatti suoi, quindi prova a ripetere l'operazione di programmazione del chip e vedi se combacia con la mia maschera, e poi ovviamente il ricontrollo schema/PCB, eventuali componenti errati di valore, la capacità del quarzo, le saldature ed eventuali corti causati dai pallini di stagno che si formano durante la saldatura. Ti racconto: l'ultimo prototipo che ho montato mi faceva il tuo stesso scherzo, e sono impazzito fino a quando non mi sono messo ad esplorare il PCB con una lente d'ingrandimento, alla seconda passata mi sono accorto che il famoso C5 era saldato solo da un lato, essendo i pad metallizzati sembravano un tutt'uno con quelli del C, invece non si tocavano affatto, una goccia di stagno e tutto perfetto! in un altro caso avevo in corto D+ e D-, quella saldatura sotto il connettore è davvero fastidiosa e basta un nlla.
Insomma non fidarti di te stesso e ricontrolla tutto, perché le prove che hai fatto indicano un problema che va oltre il C sull'RTS.
Ultimo, non è che hai invertito i collegamenti TX/RX tra Convertitore e Arduino? prova a cambiarli, tanto non può succedere nulla, al massimo persiste l'errore.
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

Michele Menniti

Per capirci: il TX del Converitore deve andare al pin 0 di Arduino e l'RX al pin 1
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

tonid

Quote
No, va bene, i soliti problemi a monte, ma tu sei uno preciso
Potresti postare la schermata che ti dà l'utility? A volte durante la fase di programmazione il baud rate se ne va per fatti suoi, quindi prova a ripetere l'operazione di programmazione del chip e vedi se combacia con la mia maschera, e poi ovviamente il ricontrollo schema/PCB, eventuali componenti errati di valore, la capacità del quarzo, le saldature ed eventuali corti causati dai pallini di stagno che si formano durante la saldatura. Ti racconto: l'ultimo prototipo che ho montato mi faceva il tuo stesso scherzo, e sono impazzito fino a quando non mi sono messo ad esplorare il PCB con una lente d'ingrandimento, alla seconda passata mi sono accorto che il famoso C5 era saldato solo da un lato, essendo i pad metallizzati sembravano un tutt'uno con quelli del C, invece non si tocavano affatto, una goccia di stagno e tutto perfetto! in un altro caso avevo in corto D+ e D-, quella saldatura sotto il connettore è davvero fastidiosa e basta un nlla.
Insomma non fidarti di te stesso e ricontrolla tutto, perché le prove che hai fatto indicano un problema che va oltre il C sull'RTS.
Ultimo, non è che hai invertito i collegamenti TX/RX tra Convertitore e Arduino? prova a cambiarli, tanto non può succedere nulla, al massimo persiste l'errore.


Eh...Lo so ,molte volte il problema si nasconde proprio dietro degli errori/sviste.
Mi ricontrollo tutto con calma e provo anche a sostituire i C del quarzo con altri di un'altra partita....Per la configurazione del MCP ho notato anche io che capita a volte che ti configura valori di baud a membro di segugio però ho controllato bene la schermata per controllare che tutto fosse giusto oltre ad aver provato più volte a riconfigurare...
Per il momento ti ringrazio per la collaborazione,abbasso la testa sulla schedina ed appena ho novità ti dico.

ps. Si ,per i collegamenti tx/rx sono giusti.

Go Up