Go Down

Topic: AVR-CDC, ossia un convertitore USB/seriale software (Read 5476 times) previous topic - next topic

MauroTec

Quote
Forse sto per dire una vaccata, in teoria se alimento l'atmega che dovrà fare da bridge a 3.3V non avrei bisogno di livellare i segnali, potrei mettere giusto un partitore di tensione sul pin tx dell'altro atmega (arduino).
L'ho sparata grossa?


Non è una vaccata anzi è logico, solo che a questo punto meglio alimentare con 3.6V perchè che io mi ricordi questo è il segnale high considerato dalla usb. L'unico problema che potrebbe sorgere deriva da una diversa soglia di commutazione tra micro e usb, è più facile provare che controllare i datasheet.

Quote
potrei mettere giusto un partitore di tensione sul pin tx dell'altro atmega (arduino).


Si infatti sposti il problema sulla seriale e li potresti usare R+zener per limitare il TX a 3.6V o oppure partitore RR, il livello di RX a 3.6V non mi pare sia un problema per un micro alimentato a 5V.

In genere il partitore di tensione RR è da preferire allo shunt con zener, con la differenza che qui si deve imporre una corrente maggiore quindi valori di RR minori e impedenza più bassa, questo per limitare le induttanze parassite, ma se si usano R a strato non induttive il problema viene risolto a monte, il tutto per avere fronti di salita e discesa più ripidi e netti.

PS: tra l'altro il problema della induttanza parassita introdotta da R si presenta anche nel circuito shunt, quindi anche qui usare smd non induttive, che mi ricordi io tutte le smd sono antiinduttive per costruzione.

Ciao.
AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

leo72

Il progetto originale dell'Avr-cdc prevede un led sulla linea Vcc dell'USB per abbassare la tensione, così da non doversi poi preoccupare di abbassare i livelli dei segnali D-/D+.

Potresti poi alimentare il micro programmato a 5V prevedendo un buffer 3-state per separare i livelli del micro programmatore a 3V6 dal micro programmato a 5V.
Però complichi il circuito non poco aggiungendo diversi componenti.

Posso dirti, anche alla luce dell'altro mio progetto che ho fatto, che con gli zener e le R i disturbi sono comunque nella fascia di tolleranza.

BrainBooster

Secondo mè  è una cattiva idea usare un led per abbassare una tensione che deve essere abbastanza precisa, un led illuminato produce una differenza di potenziale.... (meglio gli zener).

leo72


Secondo mè  è una cattiva idea usare un led per abbassare una tensione che deve essere abbastanza precisa, un led illuminato produce una differenza di potenziale.... (meglio gli zener).


Difatti il led è la cosa che ho eliminato subito. Con gli zener va benissimo. Ho un prototipo su 1000fori di un'altra cosa che usa proprio loro per abbassare i livelli D-/D+ e va benissimo.

leo72

Stamani ho terminato di riportare su 1000fori il mio circuito.... e sto avendo gli stessi problemi che avevo su breadboard, ossia che il segnale di reset è gestito male, portando ad una impossibilità di programmare il micro.
Ho solo usato un risonatore da 12 MHz al posto del quarzo da 16 MHz che avevo su breadboard e non ha funzionato. Nel senso che il dispositivo, appena collegato, viene riconosciuto, ma quando vado a tentare di flashare uno sketch, mi dà errore di programmatore non pronto.

Ho sostituito allora il risonatore con un quarzo da 16 MHz + coppia di C, ho ricompilato il firmware, riflashato il micro ma nulla è cambiato.

Troppe variabili in gioco. L'Avr-cdc è carino ma son più le volte che non va che quelle che va per cui io dichiaro chiuso il discorso.

astrobeed


L'Avr-cdc è carino ma son più le volte che non va che quelle che va per cui io dichiaro chiuso il discorso.


:smiley-mr-green:

leo72



L'Avr-cdc è carino ma son più le volte che non va che quelle che va per cui io dichiaro chiuso il discorso.


:smiley-mr-green:

Voglio un sostituto dell'MCP2200 in formato DIP... so che non esiste, vero?  :smiley-roll-sweat:

astrobeed


Voglio un sostituto dell'MCP2200 in formato DIP... so che non esiste, vero?  :smiley-roll-sweat:


Certo che c'è, però 28 pin.


PaoloP




L'Avr-cdc è carino ma son più le volte che non va che quelle che va per cui io dichiaro chiuso il discorso.


:smiley-mr-green:

Voglio un sostituto dell'MCP2200 in formato DIP... so che non esiste, vero?  :smiley-roll-sweat:


Io l'unico MCP che conosco è questo...



leo72



Voglio un sostituto dell'MCP2200 in formato DIP... so che non esiste, vero?  :smiley-roll-sweat:


Certo che c'è, però 28 pin.


E qual è?

@paolo:
che roba è?  :smiley-sweat:

astrobeed


E qual è?


18F2550, però devo verificare se hanno immesso sul mercato le nuove versioni con meno pin in case dip, sapevo che doveva arrivare dei modelli in case 18/20 pin, ovviamente parliamo di MCU con usb hardware nativa.



Michele Menniti

La rivincita dello sfigato, così dovrei intitolare questo mio post, ovvio da una parte mi spiace perché mi pareva un problema risolto, ma dall'altra ho conferma che buttando tutto quel tempo inutilmente non l'ho fatto perché non c'ho capito una mazza; alla fine ti trovi nella stessa situazione in cui mi sono trovato io col 2313, COM riconosciuta ma errori nell'invio.
Ora però, ci vorrebbero anche un paio di "mea culpa" da parte di coloro si sono messi subito sul carro del vincitore, senza aver mai dedicato un minuto a fare sperimentazione; naturalmente sempre senza toni polemici, giusto per bilanciare il topic.

@ Leo: il mio DIP per le prove al volo su bread l'ho realizzato montando un MCP2200 su un adattatore SOIC->DIP della Sparkfun, facile e funzionale, l'ho usato per le prime prove sull'HV. Per le versioni su PCB ti posso assicurare che con un minimo di attenzione la saldatura si fa senza problemi, e occupi lo spazio di un tiny85  :)
Però se Astro tira fuori un coniglio a pochi pin-DIP un paio di chip li compro.
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

leo72


La rivincita dello sfigato, così dovrei intitolare questo mio post, ovvio da una parte mi spiace perché mi pareva un problema risolto, ma dall'altra ho conferma che buttando tutto quel tempo inutilmente non l'ho fatto perché non c'ho capito una mazza; alla fine ti trovi nella stessa situazione in cui mi sono trovato io col 2313, COM riconosciuta ma errori nell'invio.
Ora però, ci vorrebbero anche un paio di "mea culpa" da parte di coloro si sono messi subito sul carro del vincitore, senza aver mai dedicato un minuto a fare sperimentazione; naturalmente sempre senza toni polemici, giusto per bilanciare il topic.

Eh, sì.
Anche su breadboard prima di farlo funzionare, era tutto uno sfila/infila di condensatori e resistenze per far contatto una volta così e una volta cosà.
E' un metodo non affidabile, non c'è che dire. Inoltre è un metodo anche inutile: "inutile" perché mi ero accorto l'altro giorno, prima di pianificare il circuito su 1000fori, mentre stavo facendo altre prove su breadboard, che quel "convertitore" (adesso uso le virgolette) funzionava solo sotto l'IDE di Arduino mentre da terminale direttamente con avrdude non riuscivo proprio a comunicarci.

Quote

@ Leo: il mio DIP per le prove al volo su bread l'ho realizzato montando un MCP2200 su un adattatore SOIC->DIP della Sparkfun, facile e funzionale, l'ho usato per le prime prove sull'HV. Per le versioni su PCB ti posso assicurare che con un minimo di attenzione la saldatura si fa senza problemi, e occupi lo spazio di un tiny85  :)
Però se Astro tira fuori un coniglio a pochi pin-DIP un paio di chip li compro.

Per usare l'MCP2200 devo comunque passare da un PCB perché un circuito su 1000fori richiede sempre un adattatore, ecco perché chiedevo se per caso c'era un chip già in formato DIP.

Comunque, ho un'altra prova da fare, l'ultima a mia disposizione. Vi terrò informati....  ]:)

Michele Menniti

No Leo, come detto esistono dei micro-pcb adattatori sui quali saldi il componente SOIC e poi ai lati ci infili due strip ed eccolo trasformato in un DIP breadboard compatibile; ovvio che se fai un PCB definitivo poi lo saldi direttamente ma per le prove sperimentali uno in casa basta e avanza.
Per le tue ulteriori prove spero sinceramente che ti possano andar bene, io una cosa che farei è mettere il clock a 12MHz; se TUTTI i sistemi di conversione funzionano a questa velocità il fatto che tu abbia ricompilato correttamente a 16MHz non significa nulla, a mio modesto parere.
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

leo72

Le prove con clock a 12 MHz le ho già fatte, e non sono andate a buon fine. Stessi errori che a 16 MHz.
E non è neanche colpa del risonatore perché ho un'altra cosa con lo stesso risonatore e strutturata in modo simile per comunicare via USB che funziona perfettamente.

Specifico che le prove che volevo fare non erano su questo "accrocchio" (ormai lo chiamo così) ma su un'altra cosina per cui sarei ancora in tempo a salvare parte della schedina che ho fatto.... vi terrò aggiornati.  :D

Go Up