Jump to content
ELFORUM - Forumul electronistilor

Comunicatie pe RS232


Guest ACATIS

Recommended Posts

Guest ACATIS

Pe acest subiect s-a mai scris dar la nivelul meu de cunostite nu este suficient.Pana acum am realizat o mica automatizare cu PIC16F628 in MPLAM ASM in care am definit 6 intrari si 6 iesiri digitale pentru inlocuirea unei placi electronice cu porti logice FZH111 la o masina de cusut automata. Masina prevazuta cu 2 pedale . (1 -coborare talpa ce prinde matierialul; 2-start motor ce antreneaza acul de cusut.) La sfarsitul cusaturi un carlig trage atata iar un cutit incandescent taie ata. Miscarile sunt comandate pneumatic.Problema intalnita pe parcurs consta in implementarea unor temporizari de ordinul a 50ms (Aveam temporizare pt carlig alta pentru detensionare ata alta pentru durata cat sta cutitul pe material ca sa arda ata.) In practica acesti timpi trebuiau corectati ajustati foarte des depindea de material de lungimea cutitului. Cutitul se schimba foarte des ca se ardea. Acul de asemenea se rupea. Si plus ca modificarea asta o mai introduc si pe alte masini de acelasi tip. Reglajul acestori temporizari vreu sa fie facute de cineva care nu stie programare. Sa trimita date prin Hyper Terminal. Vreau sa pot trimite din PC->PIC maxim 20 de caractere ASCII acesta sa le memoreze.Vreu sa pot sa si le citesc cei 20 bytes din EEPROM.Vreu sa implementez si doua caractere de comanda. De explu litere "S" de la SAVE dupa ce am trimis maxim 20 de caracter daca detecteaza aceasta litera "S" numai atunci sa salveze datele in EEPROM pana atunci daca masina nu este oprita sau resetata aceste valori sa fie in RAM si sa lucreze cu ele; acesta fiind un regim de reglaj al utilajului si daca merge corect atunci sa trimita comanda de salvare a datelor in EEPROM pentru ca la repornirea masinii sa citeasca aceste date din EEPROM.Daca eu vreu sa vad aceste date sa trimit comanda de exemplu "R" si datele citite din EEPROM doar 20bytes sa fie trasmise pe serial.Pana acum m-am jucat cu MPLAB SIM cu intrari si iesiri digitale dar cu portul serial nu pot. Acum trebuie sa lucrez pe intuneric. Fac o parte din program apoi o descarc in PIC si daca se blocheaza undeva programul ce fac?Dupa ce am dat cautare prim forum am observat ca implementarea unei comunicatii seriale impune cunoasterea unor noi functii. Intreruperile, scrierea in EEPROM, adresarea indirecta, controlul portului USART.Acuma am facut comanda de piese de la COMET printre care un MAX232 conectori seriali, condesatore etc.Am scris aici cu speranta sa ma ajutati sa invat ca eu sa fac programul , adica fiecare linie de program ce rol are. Nu vreu programul dea gata.Programul final de citire scriere date in EEPROM va fi util si pentru alte aplicatii. Cum ar fi controlul unei masini cu motor PAS cu PAS. De exemplu sa mearga singura in regim automat 20 de rotatii la dreapta apoi sa stea 2 secunde sa se roteasca in sens invers 10 rotatii cu alta viteza etc. Aceste date seriale pot fi trimise de un Automat programabil PLC catre un PIC care controleaza un motor PAS cu PAS.Acest program poate fi folosit pentru achizitie de date din proces.Vreu sa incep prin trimterea si receptionarea unui singur caracter.Ma intreb atunci cand trimit 20 de caractere unu dupa altul in timpul bitului de stop PIC-ul are timp sa faca incrementarea unei adrese de memorie din RAM sa si copieze byte-ul receptionat si sa nu-l piarda pe urmatorul. Sau trebuie sa foloses si semnale de control de flux ( Clear To Send ,Request To Send ) pentru a pune PC-ul in asteptare?Vreu ca atunci cand dau comanda de salvare in EEPROM sa primesc un feedback pe ecran ca scrierea in EEPROM sa facut cu succes printr-un caracter cunoscut de mine.

Link to comment
Share on other sites

  • Replies 7
  • Created
  • Last Reply

prima data trebuie sa stabilesti viteza cu care se trimit de la PC datele(bytes)sa zicem ca folosesti 9600baudptr a receptiona un byte timpul necesar este 1/9600*10(1bit start+8bit+1bit stop)=1042uS

Link to comment
Share on other sites

Dupa parerea mea, ar trebui intai sa citesti Data Sheet-ul PIC-ului tau (partea cu USART si, se pare, cu intreruperi) si dupa aia sa vii cu intrebari concrete. Pentru ca unele intrebari (de exemplu aia cu "am timp sa salvez...") or sa-si primeasca raspunsul din data sheet (ai sa vezi ca exista un buffer de 2 bytes la receptie care-ti dau timp sa salvezi datele).

Dupa ce o sa ai idee cum functioneaza USART-ul (implementarea din PIC-uri) si intreruperile, comunicatia (dintre tine si ceilalti membrii ai forumului) va semana mai mult a dialog decat in momentul asta.

Link to comment
Share on other sites

Guest ACATIS

In primul rând mul?umesc ca mi-a?i r?spuns.Vreu s? men?ionez c? dispun de documenta?ie. M? deranjeaz? faptul c? nu pot simula aceast? diagram? în MPLAB SIM.In orice carte de exemplu cea scrisa de VASILE SURDUCAN capitolul comunicatie seriala incepe cu descrierea teoretica a lui.Eu sunt la nivelul acesta ?i anume s? în?eleg cum func?ioneaz? acest modul.Am deschis un proiect nou în MPLAB IDEAm setat oscilator intern 4Mhz.Acum in zona de declarare de variabile vreau sa declar o variabila DATA_USART de lungime de 20 bytes. Dar in specifica?ile microntrolerului spune c? are doar 16byte de RAM comun. Vede?i in fotografia atasat?. Cred c? se refera la UDATA_SHR ce se vede în ori ce bank ai fi. Vreu s? men?ionez c? în timpul program?rii m? deranjeaz? faptul c? tot trebuie s? selectez bankul aferent unui registru în care vreau s? operez. Dar asta este.Prefer s? declar o variabil? în aceast? zon? de share ?i m? mul?umesc cu 10bytes pt proiectul meu.Dar surpriz? a apurt eroare la compilare (vede?i imaginea)

Link to comment
Share on other sites

Guest ACATIS

M-am uitat in help si se pare c? se poate simula dar nu am în?eles cum.Am atasat capturi din help MPLAB SIM.

Link to comment
Share on other sites

M-am uitat in help si se pare c? se poate simula dar nu am în?eles cum.

Cred ca ai dreptate. Se poate simula USARTul in versiunea 8. Eu am folosit mult versiunea 7 de MPLAB, care nu stia sa simuleze seriala.
Link to comment
Share on other sites

Guest ACATIS

M-am uitat in help si se pare c? se poate simula dar nu am în?eles cum.

Cred ca ai dreptate. Se poate simula USARTul in versiunea 8. Eu am folosit mult versiunea 7 de MPLAB, care nu stia sa simuleze seriala.
Este un inceput promi??tor dar dac? m-ai putea sa m? aju?i s? în?eleg limba p?s?reasc? din help a?i fi foarte încântat. Doar c? am dedus c? trebuie folosi?i stimuli; dar în afar? de a pune RA0, RA1.... în high apoi în low în tabelul Asynch celelalte tabeluri mi se par foarte greu de utilizat. O s? sap în continuare ?i dac? o s? descop?r cum se folose?te o s? trasmit ?i pe forum.MUL?UMESC DE R?SPUNS!
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.




×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines