Jump to content
ELFORUM - Forumul electronistilor

Pulsuri cu PIC16F84A


Guest id_man

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

Link to comment
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.

Link to comment
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.
Link to comment
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.

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