gsabac Postat Aprilie 24, 2017 Partajează Postat Aprilie 24, 2017 (editat) Comunicatia intre un aparat construit cu PIC si un PC, se face comod prin porturile calculatorului de tipul COM, LPT sau USB. Comunicatia COM este extrem de facila si codurile scrise in VB6, VS2010 C# sau VS2010 Basic sunt simple si functioneaza pe toate sistemele de operare 98, XP, W7, W8. Deasemenea si codurile MikroC sau mikroBasic raspund la comunicarea cu PC-ul, atit fizic cit si virtual prin IDE-ul Proteus. Nu este nevoie de nici un driver auxiliar si am reusit cu usurinta acest tip de comunicatie bilateral PIC-PS. Comunicatia cu portul LPT, daca PC-ul are acest tip de port, se face prin intermediul unor driveri specializati. Acestia sunt specializati pe sisteme de operare si necesita licentiere. Sunt si nenumarate drivere demo, utile pentru studiu, care au limitari de viteza si dupa citeva minute scot o pagina in care te invita sa il cumperi. Comunicatia USB se face prin intermediul unor driveri de tipul HID (Human Interface Device). Recunoasterea aparatului cu PIC este automata si se evidentiaza prin sunetele caracteristice de conectare si deconectare. Programele scrise in limbaj C# sau Basic cu Microsoft Visual Studio, au o mare popularitate si utilitate pentru comunicatia cu PC-ul, prin simplitatea codurilor, autocorectia editarii si indicatii interactive in timpul excutiei, facilitati care rezolva cele mai complicate si diverse situatii. Am studiat sute de exemple cu nenumarati driveri HID cu XP sau W7 si am obtinut rezultate doar in W7 cu un driver "demo" numit "EasyUSBHidNetClass.dll" free. Programul "demo" pentru PIC si pentru Visual Studio le-am luat de pe situl Mikroe si au aparut in ultimii ani. Bazat pe ele si pe Visual Studio am realizat un mod de comunicare USB dintre PIC18F2550, PIC18F4550 sau PIC18F87J50 si un program de comanda din PC. Scopul este realizarea de aparate mai complexe, de tipul osciloscop, generator de audio su RF, sweeper, etc. Topicul este destinat comunicatiilor PIC-PC si este de dorit prin intermediul aplicatiilor verificate, functionale care sa fie intradevar de folos tuturor userilor interesati. Deasemenea datele postate ar fi corect sa fie "free", "open source" cu toate detaliile necesare. In poza este aplicatia pentru un generator comandat prin PC. Codurile sunt "free", dar modul de folosire al lor se poate face treptat prin expuneri detaliate, care sa duca la succes. Apreciez ca este nevoie de un nivel mediu de cunostinte necesar programarii pentru PIC si PC. @gsabac Editat Aprilie 24, 2017 de gsabac Link spre comentariu
Liviu M Postat Aprilie 24, 2017 Partajează Postat Aprilie 24, 2017 Poti sa te uiti si la microchip pe site, la microchip library for applications. Au biblioteci pentru multe periferice printre care si USB si, din cate stiu eu, au si aplicatii windows "demonstrative". 1 Link spre comentariu
mars01 Postat Aprilie 24, 2017 Partajează Postat Aprilie 24, 2017 Multumesc Liviu, nu stiu de ce ramasesem cu idea gresita ca MLA-urile sunt obsolete (nu se mai ofera suport pt ele). Link spre comentariu
Liviu M Postat Aprilie 24, 2017 Partajează Postat Aprilie 24, 2017 Pai s-ar putea sa fie, ca eu le-am folosit acum cativa ani, nu stiu cum mai stau cu suportul. Da' ca material de studiu si pentru controllere mai vechi (asa cum sunt cele din postul initial), ar trebui sa fie OK. Link spre comentariu
gsabac Postat Aprilie 29, 2017 Autor Partajează Postat Aprilie 29, 2017 (editat) Comunicatii virtuale COM si USB Pentru comunicatia virtuala cu simulatorul se pot folosi programe de firma iar rezultatele sunt afisate direct pe aplicatia de comunicatie Cu acest mod de comunicare se pot testa scheme electronice mai simple sau chiar complexe prin transmiterea de date la microcontroller si verificarea raspunsului prin intermediul programului de comunicare virtuala. Pentru comunicarea virtuala seriala COM, RS232 se poate folosi programul VSPE (Virtual Serial Port Emulator) iar pentru legatura fizica directa, un cablu de interconectare. Programul se poate descarca de aici: http://eterlogic.com Se alege Virtual Serial Port Emulator->Download si se ruleaza setup-ul pe PS. Cu ajutorul sau se poate face legatura intre un program personal de comunicatie de pe PC si schema din Proteus, care la rindul sau foloseste fisierul “hex” creat in diverse programe cu diverse limbaje de programare. Dupa cum se vede, programul arata ca a initializat comunicatia virtuala prin intermediul portului de comunicatie COM4, de exemplu. Desigur aceasta este intre un program din PC si o schema simulata in Proteus. Programul din PC se poate realiza in C, C#, Pascal, Delphi sa Basic si el transmite si receptioneaza datele de la PIC. Datele ajunse virtual la PIC se pot vizualiza cu ajutorul terminalului virtual serial din Proteus, ca in poza Pentru realizarea legaturii PC-PIC mai intii se realizeaza comunicatia virtuala, apoi simularea Proteus si in final comunicatia cu PC-ul. Pentru comunicarea virtuala USB-HID cu PIC-ul se poate folosi programul “ HID Terminal” din mikroC, mikroPascal sau mikroBasic sau programul “HID Port Communication”. Acesta este gratuit (free) si se poate descarca de aici: https://sourceforge.net/projects/usbhidcommunica Programul HID Terminal evidentiaza dispozitivele USB conectate, dar orice manipulare gen Send, Clear sau de scriere si citire pe alt dispozitiv setat in afara de PIC, blocheaza calculatorul. De exemplu, este ca si cum ai transmite mouse-lui comenzi de PIC. Terminalul ”Embedded Lab!” este permisiv si realizeaza numai comunicatia cu PIC-ul, se pot scrie orice fel de date si nu blocheaza sistemul sau programul. Aceasta este comunicatia directa virtuala cu schema cu PIC din Proteus, dar pentru ralizarea comunicatiei virtuale bilaterale intre PIC si PC se foloseste, de exemplu, un driver virtual numit “EasyUSBHidNetClass.dll”, de la Mikroelectronica (libstock.mikroe.com). Am mentionat special acest driver, aparut in ultimii ani,deoarece are si o varianta demo, functionala in C# sau Basic din Visual Studio 2010 sau mai nou. Se poate cumpara si cu 45$ 1 aplicatie sau 65$ 10 aplicatii. Nu am reusit comunicatia virtuala functionala cu nici un alt driver. Pentru comunicatia fizica se utilizeaza driverul “mcHID.dll” ce se poate obtine de pe siteul Mikroe sau internet iar codul de comunicatie Basic sau C# este acelasi ca la comunicatia virtuala. Un exemplu functional este in poza din postarea #1,cu microBasic, Proteus, Visual Studio 10 Basic. In general pentru o comunicatie virtuala se foloseste urmatoarea combinatie: Realizarea unei simulari este un proces complex si trebuiesc cunoscute programele si codurile din fiecare bloc functional. Se poate realiza destul de usor si este de mare ajutor la crearea de aparatura, fara folosirea dispozitivelor sau circuitelor fizice. @gsabac Editat Aprilie 29, 2017 de gsabac Link spre comentariu
Vizitator mihail.stoica Postat Mai 16, 2017 Partajează Postat Mai 16, 2017 Un site foarte bun este http://www.waitingforfriday.com/?p=415 , gasiti foarte bine explicat Link spre comentariu
gsabac Postat Mai 16, 2017 Autor Partajează Postat Mai 16, 2017 Setul de postari din link si derivatii sunt foarte interesante, am si eu citeva zeci, dar le voi prezenta ulterior. Pentru inceput voi prezenta un mod complet si simplu de comunicare tip COM si ulterior USB-HID. O proiectare eficienta, de succces, a unui sistem de aparate cu PIC si PC, se poate realiza, prin intermediul portului serial COM, cu portul virtual VSPE, asa cum am aratat intr-o postare anterioara. Nu este nevoie sa se scrie programul HEX in PIC, iar rezultatele apar direct in terminalul virtual Proteus si programul din Visual Studio 6. Dupa finalizarea proiectului in VS6, mikroC sau mikroBasic si Proteus se poate trece la realizarea fizica a circuitelor. Asa arata circuitul cu PIC18F877 in Proteus, programul este in atasament si este in acelas director cu programul mikroBasic pentru comunicatia seriala cu PIC18F877. Programul din VS6 pentru un generator DDS, este in atasament si arata ca in poza. Tot in atasament se afla si un fisier comprimat, numit bb1.vspe, care se incarca in programul VSPE, pentru activarea portului serial COM4, prin care se va face comunicatia Emisie-Receptie. In poza este aratat programul VSPE in actiune pentru COM4. Ordinea de operare este impusa si consta in activarea portului serial cu bb1.vspe, apoi rularea programului Proteus in care s-a setat fisierul HEX realizat de mikroBasic sau mikroC apoi rularea programului DDS din VS6. Se transmit datele despre frecventa cu litera “F” in fata si litera “A” pentru atenuare. In final pentru comanda unui aparat cu PIC se poate folosi un cod complex, in felul urmator de exemplu: “F123456789 A32.7 S42 C12, etc” Pentru rularea programelor am folosit Windows7 32 bit. Sunt ceva probleme pina la punerea la punct a sistemului de proiectare, dar dupa aceia rezultatele si progresul se poate vedea imediat, ca si inlaturarea erorilor de programare la PIC sau VB6. @gsabac mikroBasic si Proteus si Terminal Virtual VSPE cu RS232 si PIC16F877.rar DDS bebe VB6 RS232.rar bb1.rar Link spre comentariu
Liviu M Postat Mai 16, 2017 Partajează Postat Mai 16, 2017 Un site foarte bun este Din pacate a ramas in 2011. Compilerul folosit e, incet, incet, scos din uz de microchip. Link spre comentariu
gsabac Postat Mai 16, 2017 Autor Partajează Postat Mai 16, 2017 (editat) Asa este, dar idea din postare este excelenta, mai ales ca se foloseste un DLL generic USB-HID la liber, care se poate aplica si actual in Visual Studio 2010, 2013, 2015 sau chiar in specialul 2017. Trebuie mentionat ca functioneaza numai cu circuite fizice. @gsabac Editat Mai 16, 2017 de gsabac Link spre comentariu
gsabac Postat Mai 21, 2017 Autor Partajează Postat Mai 21, 2017 (editat) Cea mai simpla comunicatie USB_HID dintre un PC si microcontrollerul PIC18F4550 se realizeaza prin intermediul programului Visual Studio 6. In aceasta aplicatie conteaza doar personalizarea codurilor de identificare a comunicatiei prin marimile VendorID si ProductID. Aceste coduri sunt imprimate in descrierea modulului de comunicatie USBdsc.mbas si se pot schimba pentru personalizare. Schema pentru PIC18F4550 este in poza. Click pentru marire Visual Basic 6 dispune de seturi puternice de prelucrare a stringurilor si numerelor si astfel faciliteaza realizarea unui cod din citeva linii pentru emisie receptie. Bineinteles o mare parte din cod este destinata activarii liniei de comunicatie USB-HID prin intermediul unui DLL la liber usbHID.dll. Acesta are predefinite numeroase functii, care sunt definite in VB6 intr-un modul de cod. DLL-ul are propriile coduri de identificare, dar nu sunt importante in aceasta aplicatie. Aplicatia in actiune este in poza. Se pot transmite si receptiona 2 numere predefinite in doua etichete. Practic se citeste stringul, se elimina punctele, apoi se formeaza un cuvint de cod 0F123456789. Intotdeauna prima cifra trebuie sa fie zero, fapt impus de diferenta dintre definirea indicilor unui buffer in C++ si VB. Litera F este codul de recunoastere a transmisiei si la identificarea receptiei, PIC-ul retransmite datele primite pentru confirmare. Acelas procedeu este utilizat la receptia datelor in VB6. Pentru citirea datelor de comunicatie este prevazut un buton de verificare a conexiunii. In atasament sunt programele functionale si merg in Windows 7 32 bit. Desigur pentru actualizare se poate folosi VS2010 cu C# sau Visual Basic. @gsabac Pic18F4550 mikroBasic-Proteus USB-HID.zip Scriere-Citire PIC cu USB-HID si VB6.zip Editat Mai 21, 2017 de gsabac Link spre comentariu
gsabac Postat Mai 23, 2017 Autor Partajează Postat Mai 23, 2017 (editat) Voi relua transmisia comenzilor la PIC, prin porturile seriale COM si Visual Studio 2010. Programul este compatibil si cu VS2013 sau 2015 si este scris in limbajul Visual Basic, si se remarca schimbarea codului si aspectul vizual deosebit al aplicatiei. Programul si hex-ul pentru PIC este acelasi ca in in postarea anterioara cu VB6 si este scris si compilat cu mikroBasic. Avantajul folosirii acestuia consta in utilizarea unui limbaj de nivel inalt, eficient si deosebit de accesibil. Schema din Proteus. Click pentru marire. In VS2010 codurile pentru transmisia COM au fost schimbata in metoda mai evoluata tip NET, de exemplu la transmisie. Private Sub btnSend_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click On Error GoTo rex SerialPort1.Write("F" & Text1.Text) Me.lblResult.Text = "" : Me.Label12.Text = "" : rec = "" Me.Timer1.Interval = 100 Me.Timer1.Start() Exit Sub rex: MsgBox("Portul este neconectat, comadati Conect") End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick If Len(rec) = 12 Or Len(rec) = 5 Then Timer1.Stop() afiseaza() End If End Sub Private Sub afiseaza() If Strings.Left(rec, 1) = "F" Then lblResult.Text = rec Exit Sub ElseIf Strings.Left(rec, 1) = "A" Then Label10.Text = rec Exit Sub Else 'ok End If End Sub Acesta este tot codul pentru transmisie si tot programul functional este in atasament. O poza cu aplicatia. Modul de lucru este identic cu cel din postarea #5, cu transmisie seriala cu PIC si VB6. Se comanda VSPE si se incarca bb1.vspe, se comanda rularea din Proteus apoi in aplicatie se alege portul COM4, 9600 si Conect. In continuare se pot transmite si receptiona date si se poate modifica frecventa din butoanele cu sageti. @gsabac Transmisie Receptie VB2010 RS232.zip mikroBasic si Proteus cu RS232 si PIC16F877.zip Editat Mai 23, 2017 de gsabac Link spre comentariu
mars01 Postat Mai 23, 2017 Partajează Postat Mai 23, 2017 (editat) Buna ziua, Un lucru interesant pe care il puteti face este sa realizati o functie de autoconectare. Practic aplicatia PC va scana porturile seriale deschise pe PC, operatie efectuata cu ajutorul unui Timer pentru a nu ingreuna activitatea PC-ului. In momentul in care gaseste un port COM, interogheaza acel port dupa un string anume definit (ceva gen o parola, un string unic). In tot acest timp, se poate ca toata interfata sa fie in mod "disabled". Cand se efectueaza conectarea, se face "enable" la controale si tot restul. Evident, in firmware-ul PIC trebuie implementat acest "handshake", eventual tot cu un Timer (de data aceasta hardware) se poate testa starea conexiunii, si daca se realizeaza ca numai avem conexiune cu PC-ul, se pot salva datele curente in EEPROM si se poate incerca un restart software al PIC-ului cu incarcarea ulterioara a parametrilor salvati in EEPROM. Sau treaba aceasta se poate face la nivel de aplicatie PC, din moment ce PIC-ul este in regim SLAVE iar aplicatia PC este in regim MASTER (adica este cea care trimite datele catre PIC). In acest fel se poate trata cazul deconectarii accidentale. Editat Mai 23, 2017 de mars01 Link spre comentariu
gsabac Postat Mai 24, 2017 Autor Partajează Postat Mai 24, 2017 (editat) Interesante optimizari si aplicabile cu putin efort de programare. In aplicatiile pe care le voi prezenta PC-ul este master si PIC-ul are rolul de interconectare intre aparatul periferic si PC. Complexul poate monitoriza sau vizualiza in timp real sau intirziat, dupa cum datele esantionate sunt lente (voltmetre, procese, generatoare) sau la viteze mari de esantionare (osciloscoape, frecventmetre). De fapt in acest topic voi balea toate posibilitatile de interconectare pe care le cunosc, cu transmisii seriale intre PC prin COM sau USB-HID si microcontrollerele PIC. Toate exemplele sunt functionale si pe baza lor se pot dezvolta nenumarate aplicatii complexe. Am depasit faza driverului “EasyUSBHidNetClass.dll”, pentru care se cere 65$ si am selectat de pe internet un driver "USBLibrary.dll" care are proiect in CSharp (VS2010) si care poate fi compilat si particularizat. Se poate folosi in aplicatii C# (CSharp) sau Visual Basic 2010, pentru transmisii USB si nu numai. @gsabac Editat Mai 24, 2017 de gsabac Link spre comentariu
gsabac Postat Iunie 13, 2017 Autor Partajează Postat Iunie 13, 2017 Proiect de osciloscop 0-30KHz, o aplicatie cu PIC18F2550 si transmisie USB spre PC are schema in atasament. - 5mV-10V/div - protectie la intrare, comutatie cu relee - 1MOhm/47pF - 50uS/div la 1sec/div cu rata de esantionare adaptata. Se foloseste ADC-ul si memoria interna iar datele se transmit cu 15 pachete de 64 biti. La receptia din PC, programul realizat cu VB6 preia salvele si le reconstitute in esantioane numerice pe 10 biti, dupa care le afiseaza pe ecran. Ideea cu 10 biti foloseste la realizarea sectiunilor de atenuator soft de la 1 la 10 fix sau variabil. Aplicatia cu PIC are schema si simularea in Proteus iar programul pe PC in Visual Studio 6. @gsabac osciloscop.PDF 1 Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum