summaryrefslogtreecommitdiff
path: root/2.3-1/src/c/hardware
diff options
context:
space:
mode:
Diffstat (limited to '2.3-1/src/c/hardware')
-rw-r--r--2.3-1/src/c/hardware/avr/includes/AVRPeripheralPWM.h27
-rw-r--r--2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h26
-rw-r--r--2.3-1/src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c39
-rw-r--r--2.3-1/src/c/hardware/avr/pwm/u8AVRPWMSetups.c (renamed from 2.3-1/src/c/hardware/avr/pwm/u8AVRADCSetups.c)6
4 files changed, 98 insertions, 0 deletions
diff --git a/2.3-1/src/c/hardware/avr/includes/AVRPeripheralPWM.h b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralPWM.h
new file mode 100644
index 00000000..80b29f3a
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/includes/AVRPeripheralPWM.h
@@ -0,0 +1,27 @@
+//This file defines functions prototypes related to PWM.
+//
+// Authors
+// Siddhesh Wani
+//
+
+#ifndef __AVRPERIPHERALPWM_H__
+#define __AVRPERIPHERALPWM_H__
+
+#include <avr/io.h>
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//Function prototypes
+uint8 u8AVRPWMSetups(uint8 timer, uint8 prescalar, uint8 waveform_mode, uint8 output_mode);
+
+uint8 u8AVRPWMSetDuty(uint8 timer, uint8 duty);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALPWM_H__ */
diff --git a/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h
new file mode 100644
index 00000000..73686190
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h
@@ -0,0 +1,26 @@
+//This file defines constants corresponding to gpios.
+//
+// Authors
+// Siddhesh Wani
+//
+
+#ifndef __INT_AVRPERIPHERALPWM_H__
+#define __INT_AVRPERIPHERALPWM_H__
+
+#include <avr/io.h>
+#include "AVRPeripheralPWM.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0d0d0AVRPWMSetupu80(in1,in2) u8AVRPWMSetups((uint8) in1,\
+ (uint8) in2, (uint8) in3, (uint8) in4);
+
+#define d0d0AVRPWMSetDuty(in1,in2) u8AVRPWMSetDutys((uint8) in1, (uint8) in2);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !__AVRPERIPHERALADC_H__ */
diff --git a/2.3-1/src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c
new file mode 100644
index 00000000..adb186a6
--- /dev/null
+++ b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c
@@ -0,0 +1,39 @@
+// Function to set duty for PWM of AVR
+//
+// Calling Sequence
+// u8AVRPWMSetDutys(uint8 timer, uint8 duty)
+//
+// Parameters
+// timer: timer to be used for PWM generation (0,1,2)
+// duty: duty for PWM waveform (0-100)
+//
+// Description
+// This function sets duty for PWM waveform according to given parameters.
+//
+// Examples
+// u8AVRPWMSetDutys(0,10) //Sets 10% duty for timer 0 output.
+//
+// Authors
+// Siddhesh Wani
+//
+
+#include "AVRPeripheralPWM.h"
+
+uint8 u8AVRPWMSetDutys(uint8 timer, uint8 duty)
+{
+ uint8 duty_value=0;
+
+ switch(timer)
+ {
+ case 0:
+ duty_value = (uint8)(((uint16)(duty * 0xff))/100);
+ OCR0 = duty_value;
+ break;
+ case 2:
+ duty_value = (uint8)(((uint16)(duty * 0xff))/100);
+ OCR2 = duty_value;
+ break;
+ }
+
+
+}
diff --git a/2.3-1/src/c/hardware/avr/pwm/u8AVRADCSetups.c b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWMSetups.c
index cd1d12bb..5110d812 100644
--- a/2.3-1/src/c/hardware/avr/pwm/u8AVRADCSetups.c
+++ b/2.3-1/src/c/hardware/avr/pwm/u8AVRPWMSetups.c
@@ -48,6 +48,12 @@ uint8 u8AVRPWMSetups(uint8 timer, uint8 prescalar, uint8 waveform_mode, uint8 ou
case 1:
break;
case 2:
+ TCCR2|= (prescalar & 0x07); //Select clock source
+ //Select waveform generation mode
+ TCCR2|= ((waveform_mode & 0x04) << 4);
+ //Select compare output mode
+ TCCR2 |= ((output_mode & 0x01) << 3); //WGM0
+ TCCR2 |= ((output_mode & 0x02) << 6); //WGM1
break;
}