Using Peripherals

http://w3.id.tue.nl/en/intranet/electronic_atelier/microcontroller/usb_microcontroller/example_code/

PWM PIC18F

Function Prototypes:
For a detailed description of these functions, please see:
Section 2.7 Pulse-Width Modulation Functions, in MPLAB C18 C Compiler Libraries manual.
The PIC18F4550 has 2 PWM channels available, so x is 1 or 2 in this case.
#include <pwm.h>
void OpenPWMx ( char PR2 ); // Configure PWM channel x.
void SetDCPWMx ( unsigned int dutycycle ); // Write a new duty cycle value to
PWM channel x.
void ClosePWMx ( void ); // Disable PWM channel x.
Notes:
1. PR2 can be any value from 0x00 to 0xff. This value determines the PWM frequency by
using the following formula:
PWM period =[(PR2) + 1] x 4 x TOSC x TMR2 prescaler
2. The value of dutycycle can be any 10-bit number. Only the lower 10-bits of dutycycle are
written into the duty cycle registers. The duty cycle determines the high time of the PWM
waveform.
3. PWM uses TIMER2 for time base. In addition to opening the PWM, TIMER2 must also be
opened with an OpenTimer2(...) statement before the PWM will operate. See the other
manual for the timer functions.
4. TIMER2 postscaler is not used in the determination of the PWM frequency. TIMER2
postscaler could be used to generate TMR2 interrupts at a different frequency than the PWM
output.
5. On the PIC18F4550, also an enhanced PWM can be used. The enhanced PWM can be
used for motor driving: half-bridge and full-bridge (forward and reverse). See the MPLAB C18
C Compiler Libraries manual for the functions.


SH1011A graphic controller: Ethernet Radio uses in parallel, PIC18F4XK20 Starter Kit   uses in SPI mode