00001
00002
00003
00004 #include "pic_pwm.h"
00005 #include "config.h"
00006
00007 uns8 pwm_count;
00008 uns8 pwm_level[PWM_NUM_PINS];
00009
00010
00011 void pwm_set_level(uns8 pwm_item, uns8 level) {
00012
00013 pwm_level[pwm_item] = level;
00014 }
00015
00016 uns8 pwm_get_level(uns8 pwm_item) {
00017 return pwm_level[pwm_item];
00018 }
00019
00020 void pwm_set_transition(uns8 pwm_item, uns8 to_level, uns16 steps) {
00021 }
00022
00023
00024 void pwm_setup() {
00025
00026 make_output(PWM_PORT_0, PWM_PIN_0);
00027 #if PWM_NUM_PINS > 1
00028 make_output(PWM_PORT_1, PWM_PIN_1);
00029 #endif
00030 #if PWM_NUM_PINS > 2
00031 make_output(PWM_PORT_2, PWM_PIN_2);
00032 #endif
00033
00034 }
00035
00036 void pwm_handle() {
00037 uns8 count;
00038
00039 pwm_count++;
00040
00041 if (pwm_count == 0) {
00042 set_pin(PWM_PORT_0, PWM_PIN_0);
00043 #if PWM_NUM_PINS > 1
00044 set_pin(PWM_PORT_1, PWM_PIN_1);
00045 #endif
00046 #if PWM_NUM_PINS > 2
00047 set_pin(PWM_PORT_2, PWM_PIN_2);
00048 #endif
00049 }
00050 if (pwm_level[0] == pwm_count) {
00051 clear_pin(PWM_PORT_0, PWM_PIN_0);
00052 }
00053 #if PWM_NUM_PINS > 1
00054 if (pwm_level[1] == pwm_count) {
00055 clear_pin(PWM_PORT_1, PWM_PIN_1);
00056 }
00057 #endif
00058 #if PWM_NUM_PINS > 2
00059 if (pwm_level[2] == pwm_count) {
00060 clear_pin(PWM_PORT_2, PWM_PIN_2);
00061 }
00062 #endif
00063 }