Jump to content
ELFORUM - Forumul Electronistilor
Sign in to follow this  
Guest id_man

Pulsuri cu PIC16F84A

Recommended Posts

Guest id_man

Sulut, sunt un incepator in microcontrollere, dar ghinionul meu e ca trebuie sa fac un proiect cu PIC6F84A.Trebuie ca pe pinii Portului B sa scot niste pulsuri de diferite frecvente si diferiti factori de umplere. Una din frecvente este de 38Khz cu factor de unplere de 50%, iar cealalta frecventa este de 50-60Hz(cat vreau eu in acest interval) cu factor de umplere 10%.Totul pare simplu pana acum. Am facut ceva programele in asembler si reusesc cat de cat sa fac ce doresc. Problema e ca eu trebuie sa fac codul in C si nu stiu de ce mi se pare asa de greu. Poate ca in asembler imi vine mai usor ca stiu cat timp dureaza fiecare instructiune.Am gasit o functie de intarziere in C care spune ca e pentru 1ms.void delay(unsigned int n_Milliseconds){ #define CYCLES_PER_MS 260 unsigned long n_Cycles = n_Milliseconds * CYCLES_PER_MS; while(n_Cycles--);}In carte spune ca numarul 260 a fost ales prin incercari, dar nu spune frecventa de clock a microcontrollerului. Mie imi trebuie pentru 4MHz.Din pacate nu am unde testa aceasta functie.Poate cineva sa-mi spuna daca tot 1ms intarzie pt 4MHz?Daca are cine timp sa ma ajute eu ii multumesc. PS: Sau daca aveti o alta functie de intarziere in C, e OK...

Share this post


Link to post
Share on other sites

PIC16F84 nu este cel mai potrivit pentru astfel de aplicatii nevand PWM, trebuie facut totul prin software. Necazul cu limbajele de programare HLLeste ca nu ai controlul asupra numarului de instructiuni asa cum ai spus.La 4MHz frecventa de oscilatie, tactul intern va fi de 1Mhz, adica o instructiune dureaza 1uS.Ca sa-ti testezi intarzierea pune-o intr-o bucla in care faci toggle cu unul din pinii pic-ului pe care l-ai declarat intai iesire. Pune un osciloscop pe el si vezi exact ce intarziere reala iti produce acel delay de 1mS.In acest mod poti calcula factorul de corectie pentru generatorul IR sau pentru cei 50Hz.

Share this post


Link to post
Share on other sites

Poate ca in asembler imi vine mai usor ca stiu cat timp dureaza fiecare instructiune.

Daca folosesti compilatorul C, PICC-Lite, poti sa-l pornesti din MPLAB si selectand Debugger-ul "MPLAB SIM" , dupa ce ai setat frecventa la 4MH din "Settings...", poti sa folosesti StopWatch sa vezi cat dureaza executia unei portiuni de program pana la primul Breakpoint.

Share this post


Link to post
Share on other sites
Guest id_man

Multumesc!Inca o intrebare: Daca as inlocui PIC-ul cu unul care are PWM...imi recomandati ceva??? Nu trebuie sa fie cine stie ce...il folosesc doar pt programul asta.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • 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.