Sari la conținut
ELFORUM - Forumul electronistilor

Pulsuri cu PIC16F84A


Vizitator id_man

Postări Recomandate

Vizitator 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 spre comentariu
  • Răspunsuri 4
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • laStudiu

    2

  • vsurducan

    1

Top autori în acest subiect

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 spre comentariu

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 spre comentariu
Vizitator 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 spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări