From 96b51a5ded447676d493be9721e4480065a5ae7e Mon Sep 17 00:00:00 2001 From: siddhu8990 Date: Fri, 11 Dec 2015 18:28:43 +0530 Subject: AVR ADC checked after some modifications --- src/c/hardware/avr/includes/AVRUtil.h | 6 +-- .../avr/interfaces/int_AVRPeripheralGPIO.h | 4 ++ src/c/hardware/avr/interfaces/int_AVRUtil.h | 2 +- src/c/hardware/avr/pwm/u8AVRADCSetups.c | 56 ++++++++++++++++++++++ src/c/hardware/avr/util/U16AVRSleeps.c | 14 ------ src/c/hardware/avr/util/u16AVRSleeps.c | 14 ++++++ 6 files changed, 78 insertions(+), 18 deletions(-) create mode 100644 src/c/hardware/avr/pwm/u8AVRADCSetups.c delete mode 100644 src/c/hardware/avr/util/U16AVRSleeps.c create mode 100644 src/c/hardware/avr/util/u16AVRSleeps.c (limited to 'src/c/hardware/avr') diff --git a/src/c/hardware/avr/includes/AVRUtil.h b/src/c/hardware/avr/includes/AVRUtil.h index 2e6d9ae4..0aa1923f 100644 --- a/src/c/hardware/avr/includes/AVRUtil.h +++ b/src/c/hardware/avr/includes/AVRUtil.h @@ -13,10 +13,10 @@ extern "C" { #endif -#include "Types.h" -#include "avr/util.h" +#include "types.h" +#include "util/delay.h" -uint8 U16AVRSleeps (uint16 delay); +uint8 u16AVRSleeps (uint16 delay); #ifdef __cplusplus } /* extern "C" */ diff --git a/src/c/hardware/avr/interfaces/int_AVRPeripheralGPIO.h b/src/c/hardware/avr/interfaces/int_AVRPeripheralGPIO.h index a4f9b91d..439532db 100644 --- a/src/c/hardware/avr/interfaces/int_AVRPeripheralGPIO.h +++ b/src/c/hardware/avr/interfaces/int_AVRPeripheralGPIO.h @@ -23,6 +23,10 @@ extern "C" { #define d0d0d0AVRDigitalOutu80(in1,in2,in3) u8AVRDigitalOuts((uint8) in1,\ (uint8) in2, (uint8) in3); +#define d0d0u80AVRDigitalOutu80(in1,in2,in3) u8AVRDigitalOuts((uint8) in1,\ + (uint8) in2, (uint8) in3); + + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/src/c/hardware/avr/interfaces/int_AVRUtil.h b/src/c/hardware/avr/interfaces/int_AVRUtil.h index ce96951b..2d6bbef7 100644 --- a/src/c/hardware/avr/interfaces/int_AVRUtil.h +++ b/src/c/hardware/avr/interfaces/int_AVRUtil.h @@ -14,7 +14,7 @@ extern "C" { #endif -#define d0sleepu80(in1) U16AVRSleeps ((uint16) in1); +#define d0sleepu80(in1) u16AVRSleeps ((uint16) in1); #ifdef __cplusplus } /* extern "C" */ diff --git a/src/c/hardware/avr/pwm/u8AVRADCSetups.c b/src/c/hardware/avr/pwm/u8AVRADCSetups.c new file mode 100644 index 00000000..cd1d12bb --- /dev/null +++ b/src/c/hardware/avr/pwm/u8AVRADCSetups.c @@ -0,0 +1,56 @@ +// Function to initialise PWM of AVR +// +// Calling Sequence +// u8AVRPWMSetups(uint8 timer, uint8 prescalar, uint8 waveform_mode, uint8 output_mode) +// +// Parameters +// timer: timer to be used for PWM generation (0,1,2) +// prescalar: prescalar to be used for generating PWM waveform (0-7) +// waveform_mode: decides type of waveform generation +// 0 -> Normal mode +// 1 -> Phase correct mode +// 2 -> CTC mode +// 3 -> Fase PWM mode +// output_mode: decides the compare output mode. (0-3) +// behaviour of the output is different for different inputs +// depending upon 'waveform_mode' chosen. +// ***Refer datasheet for more description about above modes +// +// Description +// This function initialises PWM of AVR with given parameters. 'timer' +// decides which of the three (0,1,2) timers available to be used. The +// 'prescalar' is needed for deciding PWM clock. Select appropriate prescalar +// depending on MCU clock. Choose required pwmmode using 'waveform_generation' +// and 'output_mode'. Please refer datasheet for more description of 'wafefom_mode' +// and 'output mode'. +// Examples +// AVRPWMSetup(0,1,2,2) +// +// Authors +// Siddhesh Wani +// + +#include "AVRPeripheralPWM.h" + + +uint8 u8AVRPWMSetups(uint8 timer, uint8 prescalar, uint8 waveform_mode, uint8 output_mode) +{ + switch(timer) + { + case 0: + TCCR0|= (prescalar & 0x07); //Select clock source + //Select waveform generation mode + TCCR0|= ((waveform_mode & 0x04) << 4); + //Select compare output mode + TCCR0 |= ((output_mode & 0x01) << 3); //WGM0 + TCCR0 |= ((output_mode & 0x02) << 6); //WGM1 + break; + case 1: + break; + case 2: + break; + } + + return 0; +} + diff --git a/src/c/hardware/avr/util/U16AVRSleeps.c b/src/c/hardware/avr/util/U16AVRSleeps.c deleted file mode 100644 index f2144717..00000000 --- a/src/c/hardware/avr/util/U16AVRSleeps.c +++ /dev/null @@ -1,14 +0,0 @@ -//Function to introduce specific delay in milliseconds -// -//Authors -// Siddhesh Wani -// - -#include "AVRUtil.h" - -uint8 U16AVRSleeps (uint16 delay) -{ - _delay_ms(delay); - - retrun 0; -} diff --git a/src/c/hardware/avr/util/u16AVRSleeps.c b/src/c/hardware/avr/util/u16AVRSleeps.c new file mode 100644 index 00000000..4d81c964 --- /dev/null +++ b/src/c/hardware/avr/util/u16AVRSleeps.c @@ -0,0 +1,14 @@ +//Function to introduce specific delay in milliseconds +// +//Authors +// Siddhesh Wani +// + +#include "AVRUtil.h" + +uint8 u16AVRSleeps (uint16 delay) +{ + _delay_ms(delay); + + return 0; +} -- cgit From 329613eb48542f24bb9014a0a617b05199726e99 Mon Sep 17 00:00:00 2001 From: siddhu8990 Date: Thu, 17 Dec 2015 14:48:36 +0530 Subject: Code generation for Arduino changed. DC motor added to Arduino. --- src/c/hardware/avr/includes/AVRPeripheralPWM.h | 27 ++++++++++ .../hardware/avr/interfaces/int_AVRPeripheralPWM.h | 26 +++++++++ src/c/hardware/avr/pwm/u8AVRADCSetups.c | 56 ------------------- src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c | 39 ++++++++++++++ src/c/hardware/avr/pwm/u8AVRPWMSetups.c | 62 ++++++++++++++++++++++ 5 files changed, 154 insertions(+), 56 deletions(-) create mode 100644 src/c/hardware/avr/includes/AVRPeripheralPWM.h create mode 100644 src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h delete mode 100644 src/c/hardware/avr/pwm/u8AVRADCSetups.c create mode 100644 src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c create mode 100644 src/c/hardware/avr/pwm/u8AVRPWMSetups.c (limited to 'src/c/hardware/avr') diff --git a/src/c/hardware/avr/includes/AVRPeripheralPWM.h b/src/c/hardware/avr/includes/AVRPeripheralPWM.h new file mode 100644 index 00000000..80b29f3a --- /dev/null +++ b/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 +#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/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h b/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h new file mode 100644 index 00000000..73686190 --- /dev/null +++ b/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 +#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/src/c/hardware/avr/pwm/u8AVRADCSetups.c b/src/c/hardware/avr/pwm/u8AVRADCSetups.c deleted file mode 100644 index cd1d12bb..00000000 --- a/src/c/hardware/avr/pwm/u8AVRADCSetups.c +++ /dev/null @@ -1,56 +0,0 @@ -// Function to initialise PWM of AVR -// -// Calling Sequence -// u8AVRPWMSetups(uint8 timer, uint8 prescalar, uint8 waveform_mode, uint8 output_mode) -// -// Parameters -// timer: timer to be used for PWM generation (0,1,2) -// prescalar: prescalar to be used for generating PWM waveform (0-7) -// waveform_mode: decides type of waveform generation -// 0 -> Normal mode -// 1 -> Phase correct mode -// 2 -> CTC mode -// 3 -> Fase PWM mode -// output_mode: decides the compare output mode. (0-3) -// behaviour of the output is different for different inputs -// depending upon 'waveform_mode' chosen. -// ***Refer datasheet for more description about above modes -// -// Description -// This function initialises PWM of AVR with given parameters. 'timer' -// decides which of the three (0,1,2) timers available to be used. The -// 'prescalar' is needed for deciding PWM clock. Select appropriate prescalar -// depending on MCU clock. Choose required pwmmode using 'waveform_generation' -// and 'output_mode'. Please refer datasheet for more description of 'wafefom_mode' -// and 'output mode'. -// Examples -// AVRPWMSetup(0,1,2,2) -// -// Authors -// Siddhesh Wani -// - -#include "AVRPeripheralPWM.h" - - -uint8 u8AVRPWMSetups(uint8 timer, uint8 prescalar, uint8 waveform_mode, uint8 output_mode) -{ - switch(timer) - { - case 0: - TCCR0|= (prescalar & 0x07); //Select clock source - //Select waveform generation mode - TCCR0|= ((waveform_mode & 0x04) << 4); - //Select compare output mode - TCCR0 |= ((output_mode & 0x01) << 3); //WGM0 - TCCR0 |= ((output_mode & 0x02) << 6); //WGM1 - break; - case 1: - break; - case 2: - break; - } - - return 0; -} - diff --git a/src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c b/src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c new file mode 100644 index 00000000..adb186a6 --- /dev/null +++ b/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/src/c/hardware/avr/pwm/u8AVRPWMSetups.c b/src/c/hardware/avr/pwm/u8AVRPWMSetups.c new file mode 100644 index 00000000..5110d812 --- /dev/null +++ b/src/c/hardware/avr/pwm/u8AVRPWMSetups.c @@ -0,0 +1,62 @@ +// Function to initialise PWM of AVR +// +// Calling Sequence +// u8AVRPWMSetups(uint8 timer, uint8 prescalar, uint8 waveform_mode, uint8 output_mode) +// +// Parameters +// timer: timer to be used for PWM generation (0,1,2) +// prescalar: prescalar to be used for generating PWM waveform (0-7) +// waveform_mode: decides type of waveform generation +// 0 -> Normal mode +// 1 -> Phase correct mode +// 2 -> CTC mode +// 3 -> Fase PWM mode +// output_mode: decides the compare output mode. (0-3) +// behaviour of the output is different for different inputs +// depending upon 'waveform_mode' chosen. +// ***Refer datasheet for more description about above modes +// +// Description +// This function initialises PWM of AVR with given parameters. 'timer' +// decides which of the three (0,1,2) timers available to be used. The +// 'prescalar' is needed for deciding PWM clock. Select appropriate prescalar +// depending on MCU clock. Choose required pwmmode using 'waveform_generation' +// and 'output_mode'. Please refer datasheet for more description of 'wafefom_mode' +// and 'output mode'. +// Examples +// AVRPWMSetup(0,1,2,2) +// +// Authors +// Siddhesh Wani +// + +#include "AVRPeripheralPWM.h" + + +uint8 u8AVRPWMSetups(uint8 timer, uint8 prescalar, uint8 waveform_mode, uint8 output_mode) +{ + switch(timer) + { + case 0: + TCCR0|= (prescalar & 0x07); //Select clock source + //Select waveform generation mode + TCCR0|= ((waveform_mode & 0x04) << 4); + //Select compare output mode + TCCR0 |= ((output_mode & 0x01) << 3); //WGM0 + TCCR0 |= ((output_mode & 0x02) << 6); //WGM1 + break; + 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; + } + + return 0; +} + -- cgit