Go Down

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

tonid

Ho l'abitudine di mettere sempre il condensatore solito da 100nF sempre vicinissimo all'alimentazione dei chip per evitare oscillazioni o strani comportamenti.Ho seguito gli sviluppi che avete fatto con astrobeed e se non erro anche con Leo e ricordo che era,dopo alcune modifiche, perfettamente funzionante.
Comunque domani ti faccio una foto al pcb e faccio le prove dette e ci aggiorniamo.

Michele Menniti

ok, grazie mille, alla fine il tuo aiuto potrebbe anche risultare prezioso, se hai scovato un problema "nuovo" ma, ripeto, sarebbe stranissimo che non mi sia mai capitato in tanti diversi circuiti e sia a 5V che a 3,3V. A domani
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

Ok,buona serata.

astrobeed


una pull-up sull'RX per sopperire ad aventuali "carenze del segnale" proveniente dal micro target,


La pullup serve per evitare di ricevere caratteri casuali se Rx è flottante, ovvero il convertitore non è collegato a nulla, se l'MCP2200 è sempre collegato ad un micro la pullup è inutile.
Anche le resistenze da 1k in serie su Tx e Rx sono inutili se l'MCP2200 è sempre collegato fisicamente ad un micro, p.e. montato sullo stesso pcb, servono solo come protezione nel caso colleghi il convertitore ad una scheda dove ti sei scordato di scollegare preventivamente eventuali device collegati alla seriale.
Non serve assolutamente nessuna pull down, la situazione descritta da Tonid è semplicemente assurda e può essere dovuta solo a problemi hardware sulle sue schede.

tonid

Ciao astrobeed e grazie per il tuo intervento.
Quote
Non serve assolutamente nessuna pull down, la situazione descritta da Tonid è semplicemente assurda e può essere dovuta solo a problemi hardware sulle sue schede.

Vedo anche io molto strana la situazione,il fatto che io abbia inserito una pull-down non significa,non intendevo, che mancava e tantomeno che sia stata una vostra svista e nemmeno che fosse la soluzione. Provando solo la scheda convertitore,senza l'arduino uno connesso, in uscita dal pin TX ho un segnale identico a quello che uno si aspetta ovvero il pin TX si trova ,in assenza di comunicazione, a 5 volt ed appena la comunicazione ha inizio si vedono chiaramente i bit trasmessi ed il loro zero logico equivale a circa zero volt.
Il problema salta fuori quando collego l'arduino uno al convertitore,in questo caso in assenza di comunicazione ho lo stato del pin TX (MCP) a 5volt ma quando arrivano i bit il loro zero logico si trova a circa 2,5 volt ed ovviamente non vengono interpretati dall'ATmega328 in maniera corretta dandomi l'errore not in sync.  In ogni caso questa mattina è completamente dedicata a questo problemino appena risolvo vi dico.

astrobeed


Il problema salta fuori quando collego l'arduino uno al convertitore,in questo caso in assenza di comunicazione ho lo stato del pin TX (MCP) a 5volt ma quando arrivano i bit il loro zero logico si trova a circa 2,5 volt ed ovviamente non vengono interpretati dall'ATmega328 in maniera corretta dandomi l'errore not in sync.  In ogni caso questa mattina è completamente dedicata a questo problemino appena risolvo vi dico.


Fammi capire una cosa, tu colleghi l'MCP2200, con le resistenze da 1k in serie a Tx e Rx, direttamente ai pin 1 e 0 di un Arduino ?
Se è così è normale che non riesci a programmarlo, vai in conflitto con il convertitore usb onboard, non importa se FTDI o 8u2, che a sua volta ha le resistenze in serie e crei un partitore 1/2 che ti da origine sul Rx di Arduino ai famigerati 2.5V per lo 0 perché arrivano 5V dal convertitore di Arduino.
In pratica hai una situazione del tipo, Tx del MCP2000<-->R1k<-->pin Rx Arduino<-->R1k<-->Tx FTDI/8u2, quando l'MCP2200 è in idle in out ci sono 5V e sul Rx di Arduino ci sono 5V, quando il Tx del 2200 va a 0V sul pin Rx di Arduino ci sono 2.5V perché si trova in mezzo ad un partitore 1k+1k sul cui lato opposto ci sono 5V.
Elimina le resistenze da 1k sul MCP2200 e vedrai che tutto funziona come deve.


tonid

Quote
In pratica hai una situazione del tipo, Tx del MCP2000<-->R1k<-->pin Rx Arduino<-->R1k<-->Tx FTDI/8u2, quando l'MCP2200 è in idle in out ci sono 5V e sul Rx di Arduino ci sono 5V, quando il Tx del 2200 va a 0V sul pin Rx di Arduino ci sono 2.5V perché si trova in mezzo ad un partitore 1k+1k sul cui lato opposto ci sono 5V.
Elimina le resistenze da 1k sul MCP2200 e vedrai che tutto funziona come deve.

Provo subito a cortocircuitarle sulla mia pcb e ti dico subito.

tonid

E pensare che rileggendo il post che ti ho inviato poco fa e guardando gli schemi di arduino ed MCP2200 la soluzione era davanti agli occhi.......Beh ,io dico sempre che sbagliando s'impara.
Grazie astro !
Ora rifaccio il pcb creando il definitivo ed inserisco dei jumper per inserire/disinserire le resistenze in modo da poterlo usare sia per la programmazione in stand alone che direttamente su board arduino e poi vi faccio vedere un paio di foto.
Grazie di nuovo  ;)

astrobeed


E pensare che rileggendo il post che ti ho inviato poco fa e guardando gli schemi di arduino ed MCP2200 la soluzione era davanti agli occhi.......Beh ,io dico sempre che sbagliando s'impara.


L'importante è aver risolto il problema :)

tonid

@Michele
Ciao,come avrai visto il problema è stato risolto.
Forse ti ho creato inutili allarmismi ma siamo comunque arrivati ad una soluzione che,come ho detto ad astro,era proprio li sotto gli occhi . Un grazie per la collaborazione ovviamente c'è anche per te  ;)
Buon lavoro

ps.  Mi sono scampato il "quizzettone" ?!  :smiley-mr-green:

Michele Menniti

Beh, effettivamente io ho sempre provato a programmare gli stand-alone, non aveva alcun senso per me programmare un Arduino, altrimenti il problema lo avrei avuto anch'io.
Ieri sera ragionavo sul fatto che la R da 1K e quella da 3,3k già di loro facevano unpartitore e non riuscivo proprio a darmi una spiegazione, minimamente non pensavo alle due R di Arduino
Nel mio schema definitivo lascio sia la pull-up che le due R di"protezione" in quanto la scheda è prevista per usi generali e disparati, quindi non si sa mai cosa si incontra.
A questo punto mi sorge comunque un dubbio, legato ad un uso realistico del convertitore: le schede Arduino "mini" non hanno un Convertitore on-board e per la loro programmazione ne è appunto previsto uno esterno; immagino e spero che il problema delle R da 1K in serie in questo caso NON si ponga.
Un grazie ad Astro per la sua solita disponibilità a risolvere e soprattutto a spiegare le soluzioni che trova ai problemi, ed un grazie anche a Tonid per la disponibilità a fare prove anche dopo aver "apparentemente" risolto il suo personale problema.
Tonid, puoi aggiungere [RISOLTO] al titolo del Topic. :)
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
Ieri sera ragionavo sul fatto che la R da 1K e quella da 3,3k già di loro facevano unpartitore e non riuscivo proprio a darmi una spiegazione, minimamente non pensavo alle due R di Arduino

Ciao Michele,infatti quello che avevo ottenuto ieri sera non era la funzionalità dello schema,anche se caricava, ma a cosa era legato l'errore not in sync ovvero a quello "zero logico" che di fatto me lo trovavo a 1/2 vcc.
Quote
A questo punto mi sorge comunque un dubbio, legato ad un uso realistico del convertitore: le schede Arduino "mini" non hanno un Convertitore on-board e per la loro programmazione ne è appunto previsto uno esterno; immagino e spero che il problema delle R da 1K in serie in questo caso NON si ponga.

Non conosco nel dettaglio la scheda ma se non c'è convertitore on-board non si può creare quella situazione di partitore con le R da 1K in quanto il collegamento andrebbe solo ai pin tx/rx del chip di arduino mini e non ,come nel mio caso,anche all'8u2.
Comunque abbiamo risolto :)
Quote
Tonid, puoi aggiungere [RISOLTO] al titolo del Topic.

ooooooo yes  ;)

Go Up