Go Down

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

BrainBooster

ma una cosa così?
http://www.futureelectronics.com/en/technologies/semiconductors/microcontrollers/8-bit/Pages/9232828-PIC18LF14K50-I-P.aspx?IM=0

pelletta

Io ho ordinato gli zener stamattina presto, poi è arrivata la mattonata di Leo dicendo che sono sorti dei problemi e mi ha smontato  :)
Comunque no problem, appena arrivano faccio un pò di prove con gli atmega8.
Mi serve solo un consiglio: che software posso usare per ricompilare i sorgenti per mettere il quarzo da 16Mhz? Uso kubuntu.
Ciao

astrobeed


Le prove con clock a 12 MHz le ho già fatte, e non sono andate a buon fine. Stessi errori che a 16 MHz.


Ho verificato adesso, sono disponibili i 18F14K50 in case PDIP 20, quindi abbastanza compatti, in pratica è la stessa MCU utilizzata per l'MCP2200, basta caricarci sopra lo stack usb di Microchip per avere varie tipologie di device USB altamente performanti, Vcom inclusa, costo circa 2 Euro (ivato) per un pezzo singolo.


BrainBooster

astro ma non sono gli stessi che avevo linkato sopra?

astrobeed


astro ma non sono gli stessi che avevo linkato sopra?


Si hai ragione, ho scritto il post senza aver letto il tuo.

BrainBooster

#50
Feb 29, 2012, 04:19 pm Last Edit: Feb 29, 2012, 04:24 pm by BrainBooster Reason: 1
:) non volevo ragione, pensavo che fosseri differenti, visto che la sigla è diversa.
Edit:
Letto velocemente il datasheet, sono praticamente la stessa cosa :)

leo72


Io ho ordinato gli zener stamattina presto, poi è arrivata la mattonata di Leo dicendo che sono sorti dei problemi e mi ha smontato  :)
Comunque no problem, appena arrivano faccio un pò di prove con gli atmega8.
Mi serve solo un consiglio: che software posso usare per ricompilare i sorgenti per mettere il quarzo da 16Mhz? Uso kubuntu.
Ciao

Non devi far altro che aprire il file Makefile presente in /mega48/default, cambiare i commenti per attivare il clock che vuoi e per il micro per cui compili.
Poi apri un terminale e dai un make.

Ah, se riproduci il mio schema, ho fatto un errore di trascrizione: la R8 è da 10Kohm, è la pull-up per il reset del micro da programmare.

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.


Ho verificato adesso, sono disponibili i 18F14K50 in case PDIP 20, quindi abbastanza compatti, in pratica è la stessa MCU utilizzata per l'MCP2200, basta caricarci sopra lo stack usb di Microchip per avere varie tipologie di device USB altamente performanti, Vcom inclusa, costo circa 2 Euro (ivato) per un pezzo singolo.



E come si carica sopra lo stack che serve? Serve immagino un programmatore tipo il Pickit e l'IDE.
Quindi bisognerebbe in pratica passare al "lato oscuro"?  ]:D

Michele Menniti



Le prove con clock a 12 MHz le ho già fatte, e non sono andate a buon fine. Stessi errori che a 16 MHz.


Ho verificato adesso, sono disponibili i 18F14K50 in case PDIP 20, quindi abbastanza compatti, in pratica è la stessa MCU utilizzata per l'MCP2200, basta caricarci sopra lo stack usb di Microchip per avere varie tipologie di device USB altamente performanti, Vcom inclusa, costo circa 2 Euro (ivato) per un pezzo singolo.



Quindi va programmato, ma ci vuole un programmatore, non si fa certo con Arduino  :smiley-mr-green: Allora per me non avrebbe senso, visto che con i PIC, almeno per ora, non abbiamo punti di contatto.
No, sono felice col mio MCP2200+adattatore Sparkfun  XD
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

astrobeed

Giusto per espandere il discorso USB dei PIC, rimanendo sulle MCU a 8 bit il massimo delle prestazioni, intese come complessità del device, si ottiene con i 18F2550 (28 pin) dove è possibile implementare device combo molto complessi, p.e. due device CDC, due device HID dati, una emulazione mouse e tastiera HID tutti attivi simultaneamente, è un caso limite, ma reale perché l'ho implementato su un mio lavoro.
Come clock, vale per tutte le MCU con USB, si può usare un quarzo con valore compreso tra 4 MHz e 20MHz in step di 4MHz, quindi 4-8-12-16-20 MHz, non ci sono componenti critici, unica accortezza tenere le connessioni tra la mcu e il connettore USB le più corte possibili.
Il SIE (l'engine SUB) supporta le specifiche 2.0 con la velocità massima limitata a full speed (12 Mbps), è possibile utilizzarlo tramite polling o interrupt driven, lo stack USB di Microchip permette tutte e due le modalità.

astrobeed


E come si carica sopra lo stack che serve?


Lo stack USB altro non è che il software per far funzionare l'USB, quello Microchip è molto ben fatto e complesso, copre tutti i possibili modelli di mcu e molti device diversi, per contro è molto ingombrante e molto sprecone di risorse per via della sua multifunzionalità, però va benissimo per creare un device USB come una Vcom senza perdere tempo.
In pratica con lo stack USB Microchip è tutto pronto devi solo settare alcune define, compilare  caricare il programma sul micro, in pochi minuti sei pronto per "giocare" con il tuo device USB.
Per caricare il programma vale lo stesso discorso degli ATmega vergini, la prima volta ci metti sopra un bootloader, e serve un programmatore specifico per farlo, poi li programmi direttamente tramite USB e apposito software per PC.
Purtroppo non mi risulta sia possibile programmare un PIC tramite Arduino, però non ho mai fatto una ricerca seria se esiste uno sketch per farlo visto che possiedo i programmatori ufficiali di Microchip.

Quote

Quindi bisognerebbe in pratica passare al "lato oscuro"?  ]:D


Io non sono un signore dei Sith, sono un maestro Jedi e appartengo al lato luminoso della forza :smiley-mr-green:

leo72

Ma il software è sempre MPLAB oppure qualcos'altro?
Se è MPLAB l'ultima versione gira anche su Linux, altrimenti no.
Cmq un MCP2200 mi sembra più facile per chi si deve acquistare/procurare tutti gli strumenti (programmatore, software, chip)  ;)

Ho un dubbio, Mike ha detto che il 2200 non supporta la linea DTR ma l'IDE di Arduino resetta i micro con quel segnale. Come si ovvia a ciò? Come hai risolto Mike? Usando il segnale RTS?

Michele Menniti

Sì, ho semplicemente replicato lo schema originale Microchip, aggiunto un C da 0,1µF in serie all'RTS e l'ho collegato al RESET del 328P.
Come detto c'è una sola differenza: aprendo il serial monitor il micro non viene resettato, quindi devi farlo manualmente.
Nel mio caso ho risolto rapidamente con il programma Terminal in dotazione a Windows che, evidentemente, supporta l'RTS e l'impulso lo manda. All'epoca con Astro abbiamo provato diversi software in cui si poteva programmare il comportamento dell'RTS ma non abbiamo risolto, nemmeno con il sw di configurazione in dotazione, niente da fare, se lo usi con l'IDE e ti serve il serial monitor ti devi rassegnare a premere il tastino di reset..... per il resto lavora che è uno spettacolo, costa un paio d'euro (costa MOLTO più l'adattatore Sparkfun $)), ed è saldabile, non come l'FT232RL o, peggio, l'ATmega8U2 :)
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

Del monitor seriale poco me ne importa. Ma dall'IDE, se premi su Upload, devi resettare a mano per far partire la programmazione del micro oppure no?
Come viene riconosciuto? Cioè, se devi creare una scheda con l'MCP2200 come interfaccia, in una ipotetica board virtuale come lo indicheresti?

Michele Menniti


Del monitor seriale poco me ne importa. Ma dall'IDE, se premi su Upload, devi resettare a mano per far partire la programmazione del micro oppure no?
Come viene riconosciuto? Cioè, se devi creare una scheda con l'MCP2200 come interfaccia, in una ipotetica board virtuale come lo indicheresti?

Assolutamente no! A parte il serial monitor (che dopo il reset manuale funziona senza problemi) va tutto a meraviglia, il reset lo fornisce da solo al momento opportuno, l'MCP viene visto (in Windows) come una qualsiasi porta COM; io nel mio schema ho implementato e attivato perfino i led tx/rx. Non capisco la domanda della board virtuale, mica in boards.txt risulta la porta o il dispositivo di connessione; per capirci immagina di ritagliare da Arduino l'ATmega8u2 ed incastrare nel foro l'MCP 2200, fatta l'operazione per te sarà tutto trasparente.
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

Go Up