![]() | ![]() | ![]() |
| | |||||||
| Robotics Chat Specific to discussions about robots and the making of. |
| | LinkBack | Thread Tools | Display Modes |
| | (permalink) |
| Sigh.. Can't seem to get my PWM working as i wanted. I've set all the registers correctly it worked with the example i got on the net. I am trying to practice on PWM generation. I was thinking of generating Musical Notes C D E F G A B. They have frequencies 523.3Hz, 587.3Hz, 659.3Hz ..... 987.8Hz. The sound is produced by a piezo buzzer. Can some one please help me see if i missed out anything Fosc = 4Mhz To calculate Period: ============= PR2 = [(Fosc / 4* TMR2 prescale value * Fpwm)] -1 eg. Note C 523.3Hz PR2 = [(4000000/4*16*523.3)]-1 = 118.4 Thus I loaded 0x76. To calculate duty cycle: =============== Resolution = [log(Fosc/Fpwm) / log(2)] eg. Note C 523.3Hz Resolution = [log (4000000/523.3) / log(2)] = 12.90 bits Here are some of my doubts: 1. How do we know what prescaler value to use? - My guess, its anything we want, its used for keeping value of PR2 to be <255. 2. Duty Cycle since PIC16F877 is a 10bit PWM. The max is 10bits? Thus the above i would round it off to 10bits? 3. Is there a maximum frequency that can be generated with this PIC16F877 with a crystal(Fosc) 4Mhz? - can generate 0.0000001 Hz? - can generate 999999999999 Hz? 4. If im running a motor how much should i set the Fpwm? Again is there a minimum or maximum? Heres my PWM configuration(in C): ccp1con = 0 t2con = 0 set_bit(t2con, X) //set timer2 prescaler pr2 = PWMPeriod calculated as above ccpr1L = 0xFF (Can some one tell me what value should i configure this to? what is it for?) ccp1con = XXXbits set_bit(pie1, 1) //timer2 interrupt enable set_bit(t2con, 2) //turn on timer2 Thank u for all ur sincere help
__________________ Computers can be a head-egg at some time | |
| |
| | (permalink) | ||||
| Quote:
Quote:
Quote:
PR2 period = (1+1)*1uSec*1(prescale)=2uSec or 500Khz. Quote:
Finally, a better way to generate a square wave is to use the compare mode instead of the PWM mode. This offers a wider and finer frequency range. Use interrupts to toggle between set and reset the output pin.
__________________ "Having to do with Motion Control" | |||||
| |