salve a tutti,
sto studiando un po' in generale i micro ed in particolare quelli della famiglia avr...
ora sto cercando di capire bene come funziona la faccenda delle comunicazioni seriali...
ho visto come riuscire a far comunicare il micro col PC tramite protocollo RS232 utilizzando l'hyperterminal.. ma correggetemi se sbaglio.. in questo modo riesco solo a comunicare con la tastiera?
quello che mi chiedo é: se io volessi far comunicare il PC con il micro,in modo che riesca ad esempio a capire quando sto riproducendo un file audio e poi riuscire a lavorare su questo in modo da far fare qualcosa al micro, come devo comportarmi?
comunicazione tra PC e microcontrollori
Moderatore:
Paolino
31 messaggi
• Pagina 1 di 4 • 1, 2, 3, 4
0
voti
Penso che ul tuo problema sia una mancanza di rudimenti di programmazione.
HT non fa altro che impiegare la porta seriale indicatagli. Se lo fai fare ad altri programmi puoi mandare a dire cosa vuoi al PIC.
HT non fa altro che impiegare la porta seriale indicatagli. Se lo fai fare ad altri programmi puoi mandare a dire cosa vuoi al PIC.
-

Candy
32,5k 7 10 13 - CRU - Account cancellato su Richiesta utente
- Messaggi: 10123
- Iscritto il: 14 giu 2010, 22:54
1
voti
Come dice
Candy puoi fare un programma che usa una porta seriale.
HT è uno di questi programmi. Ogni carattere ricevuto dalla tastiera viene inviato sulla porta seriale ed ogni carattere ricevuto lo sbatte sullo schermo.
Ma si possono scrivere milioni di programmi che usano la seriale e che, magari, non usano tastiera o schermo.
Mettiamola così, vediamola dal lato micro.
La tua domanda diventerebbe: "Ho visto un progetto che usa un micro, che dispone di un' interfaccia VGA ed è collegato ad una tastiera. Il programma legge i caratteri dalla tastiera e li invia tramite l' UART ed i caratteri ricevuti li visualizza sulla VGA. Mi pare di capire che posso usare il micro solo in questo modo".
La risposta è: ovviamente no, dipende da cosa fa il programma.
Scrivendo un programma diverso farebbe una cosa diversa.
HT è uno di questi programmi. Ogni carattere ricevuto dalla tastiera viene inviato sulla porta seriale ed ogni carattere ricevuto lo sbatte sullo schermo.
Ma si possono scrivere milioni di programmi che usano la seriale e che, magari, non usano tastiera o schermo.
Mettiamola così, vediamola dal lato micro.
La tua domanda diventerebbe: "Ho visto un progetto che usa un micro, che dispone di un' interfaccia VGA ed è collegato ad una tastiera. Il programma legge i caratteri dalla tastiera e li invia tramite l' UART ed i caratteri ricevuti li visualizza sulla VGA. Mi pare di capire che posso usare il micro solo in questo modo".
La risposta è: ovviamente no, dipende da cosa fa il programma.
Scrivendo un programma diverso farebbe una cosa diversa.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
2
voti
Il programma lato PC devi vederla come un'applicazione che gira, appunto sul PC, e che comunicando tramite protocollo RS-232 invia e riceve dati da una porta seriale (che puo' essere nella fattispecie la USB), al posto di HT puoi usare anche, ad esempio, PuTTY.
Ti si aprira' una console testuale che attende delle stringhe da mandare via porta seriale al tuo microcontrollore, e che puo' anche ricevere delle stringhe dal microcontrollore e visualizzarle.
Queste stringhe dovranno essere riconosciute dal microcontrollore come istruzioni di dati o di controllo per fare qualcosa dal lato micro (accendere dei led, azionare motori, ecc...).
Anche il micro puo' comunicare verso il PC, per ritornare dei valori o delle risposte.
Tutto sta in piedi finché tu decidi "come" devono parlare per capirsi a vicenda, inventandoti una sorta di codice riconosciuto da entrambe (esempio se mando una certa stringa "LED_ON" o "LED_OFF" da PC a micro questo dovra' accendere o spegnere un led su una porta predefinita, questo codice lo chiamiamo payload.
Il protocollo di comunicazione invece è proprio l'RS-232, che realizzerai usando la USART del microcontrollore e "aprendo"una porta seriale via USB dal lato PC ad esempio con delle librerie chiamate "libusb".
Un altro modo sarebbe quello di usare le librerie gratuite V-USB, dove la comunicazione avviene via seriale con protocollo USB, sia lato PC (sempre con un driver libusb) sia lato microcontrollore con le librerie V-USB.
In questo secondo caso il tuo microcontrollore diventera' una vera e propria periferica USB con il suo VendorID e ProductID, e il programma lato PC dovra' inizializzare e comunicare tramite la USB con delle funzioni specifiche, definite appunto dentro le librerie libusb32 (se usi MS Win).
Questo secondo modo di comunicare è molto piu' complesso sia per l'inizializzazione che per la comunicazione, ma è di fatto molto piu' veloce della RS-232 (che nel caso USB sara' installata come una COM virtuale dal lato PC), essendo il protocollo USB usato proprio quello nativo e non una seriale "fittizia" installata via USB.
L'argomento è al contempo semplice nel caso RS-232 COM virtuale via USB, ma molto complesso nel caso nativo usando le VUSB, in entrambe i casi si richiede una certa padronanza della programmazione sia lato microcontrollore che lato PC.
Nel mio blog, in firma qua sotto, puoi vedere la complicanza di un driver USB per un HID (Human Interface Device) utilizzando un PIC18F2550, tutto quel bordello manda per ora solo un byte da PC a microcontrollore, ma il livello di complicazione è gia' non banale, paragonato a quello che realmente fa' (mandare uno schifosissimo byte), che in teoria dovrebbe essere una barzelletta.... ma tant'è, windows gestisce la USB e le periferiche HID in modo molto macchinoso, e ho imparato ad odiare il protocollo USB, tanto semplice e carino finché non ci metti mano
Ti si aprira' una console testuale che attende delle stringhe da mandare via porta seriale al tuo microcontrollore, e che puo' anche ricevere delle stringhe dal microcontrollore e visualizzarle.
Queste stringhe dovranno essere riconosciute dal microcontrollore come istruzioni di dati o di controllo per fare qualcosa dal lato micro (accendere dei led, azionare motori, ecc...).
Anche il micro puo' comunicare verso il PC, per ritornare dei valori o delle risposte.
Tutto sta in piedi finché tu decidi "come" devono parlare per capirsi a vicenda, inventandoti una sorta di codice riconosciuto da entrambe (esempio se mando una certa stringa "LED_ON" o "LED_OFF" da PC a micro questo dovra' accendere o spegnere un led su una porta predefinita, questo codice lo chiamiamo payload.
Il protocollo di comunicazione invece è proprio l'RS-232, che realizzerai usando la USART del microcontrollore e "aprendo"una porta seriale via USB dal lato PC ad esempio con delle librerie chiamate "libusb".
Un altro modo sarebbe quello di usare le librerie gratuite V-USB, dove la comunicazione avviene via seriale con protocollo USB, sia lato PC (sempre con un driver libusb) sia lato microcontrollore con le librerie V-USB.
In questo secondo caso il tuo microcontrollore diventera' una vera e propria periferica USB con il suo VendorID e ProductID, e il programma lato PC dovra' inizializzare e comunicare tramite la USB con delle funzioni specifiche, definite appunto dentro le librerie libusb32 (se usi MS Win).
Questo secondo modo di comunicare è molto piu' complesso sia per l'inizializzazione che per la comunicazione, ma è di fatto molto piu' veloce della RS-232 (che nel caso USB sara' installata come una COM virtuale dal lato PC), essendo il protocollo USB usato proprio quello nativo e non una seriale "fittizia" installata via USB.
L'argomento è al contempo semplice nel caso RS-232 COM virtuale via USB, ma molto complesso nel caso nativo usando le VUSB, in entrambe i casi si richiede una certa padronanza della programmazione sia lato microcontrollore che lato PC.
Nel mio blog, in firma qua sotto, puoi vedere la complicanza di un driver USB per un HID (Human Interface Device) utilizzando un PIC18F2550, tutto quel bordello manda per ora solo un byte da PC a microcontrollore, ma il livello di complicazione è gia' non banale, paragonato a quello che realmente fa' (mandare uno schifosissimo byte), che in teoria dovrebbe essere una barzelletta.... ma tant'è, windows gestisce la USB e le periferiche HID in modo molto macchinoso, e ho imparato ad odiare il protocollo USB, tanto semplice e carino finché non ci metti mano
-

rusty
4.075 2 9 11 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 1578
- Iscritto il: 25 gen 2009, 13:10
0
voti
leggendo le vostre risposte credo di aver chiesto qualcosa al di la delle mie capacità e conoscenze attuali...... molto probabilmente devo partire da zero. Il problema è che è molto difficile riuscire a capire da dove devo iniziare... potreste darmi una mano in questo?
0
voti
sto studiando sul libro di John Morton (AVR an introductory course)
e sono a buon punto..
mi manca di capire bene come funzionano l'ADC,la EEPROM,PWM e UART ma a grandi linee già qualcosina l'avevo vista in precedenza
e sono a buon punto..
mi manca di capire bene come funzionano l'ADC,la EEPROM,PWM e UART ma a grandi linee già qualcosina l'avevo vista in precedenza
0
voti
Hai già scritto programmi per PC?
Se si, quali linguaggi hai utilizzato?
Se si, quali linguaggi hai utilizzato?
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
31 messaggi
• Pagina 1 di 4 • 1, 2, 3, 4
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 7 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
