Sari la conținut
ELFORUM - Forumul electronistilor

PWM & Push Buton


FPGA

Postări Recomandate

Salut,

Am incercat sa fac un program prin care la apasarea unui buton sa am unPWM(50%),iar la apasara altui buton sa am alt PWM(10%)....in cazul in care nu e apasat niciun buton sa am PWM 0....si nu stiu daca este chiar corect(nu merge simularea cu Proteus)!

Ma puteti ajuta ?...sa imi spuneti daca e corect?...sau mai trebuie ceva  modificat?

 

  Va multumesc!!!!

 

Codul:

 

void main()   {       CCP1CON = 0b00001100; // Enable PWM on CCP1   TRISC = 0b11111011; // Make pin 17 (RC1/CCP1) an output   T2CON = 0b00000100; // Enable TMR2 with prescaler = 1   PR2 = 249; // PWM period = (PR2+1) * prescaler * Tcy = 1ms        TRISB0 = 1;   // Makes RB0 a input pin   TRISB1 = 1;   // Makes RB0 a input pin       while(1)   {     if(RB0 == 0) //If Switch1 is presseed   CCPR1L = 0;   if(RB0 == 1) //If Switch1 is presseed   CCPR1L = 125;   if(RB1 == 0) //If Switch2 is not presseed   CCPR1L = 0;   if(RB1 == 1) //If Switch2 is presseed   CCPR1L = 25;           }}

 

 

 

P.S. - sa nu radeti daca am scris tampenii....sunt 0 la capitolul asta...dar mi-ar placea sa invat cate ceva!!!

Link spre comentariu
  • Răspunsuri 7
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • FPGA

    3

  • mars01

    2

  • Liviu M

    1

  • Mircea

    1

Top autori în acest subiect

Ca tot folosesti MikroC. Cauta in help si foloseste functia Button. Asa cum ai facut poate (fa-l practic si vei intelege de ce) va merge cu un switch basculant, nicidecum cu un push-button.LE: cred ca nu e totusi in MikroC, poate fi orice C.

Editat de thunderer
Link spre comentariu

Ce controller folosesti, ce frecventa a oscilatorului (1MHz?)...

Nu ai debounce la switch-uri ...

PIC 16F877A....1Mhz....debounce cum fac?....dupa fiecare apasare un delay si verific din nou daca e apasat butonul?...in rest ar trebui sa functioneze?...

Link spre comentariu

 

TRISC = 0b11111011;	 // Make pin 17 (RC1/CCP1) an output

 

Ca sa faci un pin output trebuie sa pui 0 in TRIS-ul corespunzator.RC1 e al doilea pin. La tine e 1 => input.
Link spre comentariu

Da, merge si asa sau cu timere.

Liviu ti-a rezolvat problema.

Pe viitor cand nu ai de modificat prea multi biti intr-un port, foloseste-te de alias-uri asa cum ai facut  cuTRISB0, TRISB1. E mai usor asa decat sa stai sa numeri biti ...

Link spre comentariu
  • 11 luni mai târziu...

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