diff options
author | siddhu8990 | 2015-12-17 14:48:36 +0530 |
---|---|---|
committer | siddhu8990 | 2015-12-17 14:48:36 +0530 |
commit | 4e3eef82b0aa598761e087925fabe835496ab3bc (patch) | |
tree | 5b046acee2453c83fc1d776221373c3992147e7a /src/c/hardware/avr | |
parent | 96b51a5ded447676d493be9721e4480065a5ae7e (diff) | |
download | Scilab2C_fossee_old-4e3eef82b0aa598761e087925fabe835496ab3bc.tar.gz Scilab2C_fossee_old-4e3eef82b0aa598761e087925fabe835496ab3bc.tar.bz2 Scilab2C_fossee_old-4e3eef82b0aa598761e087925fabe835496ab3bc.zip |
Code generation for Arduino changed. DC motor added to Arduino
Diffstat (limited to 'src/c/hardware/avr')
-rw-r--r-- | src/c/hardware/avr/includes/AVRPeripheralPWM.h | 27 | ||||
-rw-r--r-- | src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h | 26 | ||||
-rw-r--r-- | src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c | 39 | ||||
-rw-r--r-- | src/c/hardware/avr/pwm/u8AVRPWMSetups.c (renamed from src/c/hardware/avr/pwm/u8AVRADCSetups.c) | 6 |
4 files changed, 98 insertions, 0 deletions
diff --git a/src/c/hardware/avr/includes/AVRPeripheralPWM.h b/src/c/hardware/avr/includes/AVRPeripheralPWM.h new file mode 100644 index 0000000..80b29f3 --- /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 <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/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h b/src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h new file mode 100644 index 0000000..7368619 --- /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 <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/src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c b/src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c new file mode 100644 index 0000000..adb186a --- /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/u8AVRADCSetups.c b/src/c/hardware/avr/pwm/u8AVRPWMSetups.c index cd1d12b..5110d81 100644 --- a/src/c/hardware/avr/pwm/u8AVRADCSetups.c +++ b/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; } |