summaryrefslogtreecommitdiff
path: root/pcr-controller/pwm.c
diff options
context:
space:
mode:
Diffstat (limited to 'pcr-controller/pwm.c')
-rw-r--r--pcr-controller/pwm.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/pcr-controller/pwm.c b/pcr-controller/pwm.c
new file mode 100644
index 0000000..918d37b
--- /dev/null
+++ b/pcr-controller/pwm.c
@@ -0,0 +1,48 @@
+
+#include "pwm.h"
+
+
+#define PWM_VAL OCR1AL
+//OC1A
+
+void pwm_init(void)
+{
+ DDRB |= (1<<PB5);
+ TCCR1A = 0;
+ TCNT1 = 0;
+ OCR1A = 0;
+ TCCR1A = (1<<COM1A1) | (1<<WGM10);
+ TCCR1B = (1<<WGM12);
+}
+
+inline void pwm_on(void)
+{
+ TCCR1B = (TCCR1A & 0xF8) | (1<<CS10);
+}
+
+inline void pwm_off(void)
+{
+ TCCR1B = (TCCR1A & 0xF8);
+ TCNT1 = 0;
+}
+
+void pwm_set(uint8_t val)
+{
+ if (val > 0)
+ pwm_on();
+ else
+ pwm_off();
+ PWM_VAL = val;
+}
+
+inline void pwm_inc(void)
+{
+ if(PWM_VAL < 255)
+ PWM_VAL++;
+}
+
+inline void pwm_dec(void)
+{
+ if(PWM_VAL > 0)
+ PWM_VAL--;
+}