summaryrefslogtreecommitdiff
path: root/src/c
diff options
context:
space:
mode:
Diffstat (limited to 'src/c')
-rw-r--r--src/c/hardware/avr/includes/AVRPeripheralPWM.h27
-rw-r--r--src/c/hardware/avr/includes/AVRUtil.h6
-rw-r--r--src/c/hardware/avr/interfaces/int_AVRPeripheralGPIO.h4
-rw-r--r--src/c/hardware/avr/interfaces/int_AVRPeripheralPWM.h26
-rw-r--r--src/c/hardware/avr/interfaces/int_AVRUtil.h2
-rw-r--r--src/c/hardware/avr/pwm/u8AVRPWMSetDutys.c39
-rw-r--r--src/c/hardware/avr/pwm/u8AVRPWMSetups.c62
-rw-r--r--src/c/hardware/avr/util/u16AVRSleeps.c (renamed from src/c/hardware/avr/util/U16AVRSleeps.c)4
-rw-r--r--src/c/scilab-arduino/cmd_dcmotor_run/u8cmd_dcmotor_runs.c59
-rw-r--r--src/c/scilab-arduino/cmd_dcmotor_setup/u8cmd_dcmotor_setups.c42
-rw-r--r--src/c/scilab-arduino/default_files/Makefile4
-rw-r--r--src/c/scilab-arduino/default_files/sci2c_arduino.ino4
-rw-r--r--src/c/scilab-arduino/default_files/setup_arduino.h64
-rw-r--r--src/c/scilab-arduino/includes/cmd_dcmotor_run.h32
-rw-r--r--src/c/scilab-arduino/includes/cmd_dcmotor_setup.h33
-rw-r--r--src/c/scilab-arduino/interfaces/int_cmd_dcmotor.h39
16 files changed, 438 insertions, 9 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/includes/AVRUtil.h b/src/c/hardware/avr/includes/AVRUtil.h
index 2e6d9ae..0aa1923 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 a4f9b91..439532d 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_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/interfaces/int_AVRUtil.h b/src/c/hardware/avr/interfaces/int_AVRUtil.h
index ce96951..2d6bbef 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/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/u8AVRPWMSetups.c b/src/c/hardware/avr/pwm/u8AVRPWMSetups.c
new file mode 100644
index 0000000..5110d81
--- /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;
+}
+
diff --git a/src/c/hardware/avr/util/U16AVRSleeps.c b/src/c/hardware/avr/util/u16AVRSleeps.c
index f214471..4d81c96 100644
--- a/src/c/hardware/avr/util/U16AVRSleeps.c
+++ b/src/c/hardware/avr/util/u16AVRSleeps.c
@@ -6,9 +6,9 @@
#include "AVRUtil.h"
-uint8 U16AVRSleeps (uint16 delay)
+uint8 u16AVRSleeps (uint16 delay)
{
_delay_ms(delay);
- retrun 0;
+ return 0;
}
diff --git a/src/c/scilab-arduino/cmd_dcmotor_run/u8cmd_dcmotor_runs.c b/src/c/scilab-arduino/cmd_dcmotor_run/u8cmd_dcmotor_runs.c
new file mode 100644
index 0000000..93905c9
--- /dev/null
+++ b/src/c/scilab-arduino/cmd_dcmotor_run/u8cmd_dcmotor_runs.c
@@ -0,0 +1,59 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "cmd_dcmotor_run.h"
+
+uint8 u8cmd_dcmotor_runs(uint8 board_no, uint8 motor_no, int16 duty)
+{
+ uint8 direction = 1;
+ if(duty >= 0)
+ {
+ direction = 1;
+ }
+ else
+ {
+ direction = 0;
+ duty = -duty;
+ }
+
+ if(duty > 255) duty = 255;
+
+ if (dcm_mode[motor_no] == 3) //L293
+ {
+ if(direction == 1)
+ {
+ analogWrite(dcm_pin_1[motor_no],duty);
+ analogWrite(dcm_pin_2[motor_no],0);
+ }
+ else
+ {
+ analogWrite(dcm_pin_2[motor_no],duty);
+ analogWrite(dcm_pin_1[motor_no],0);
+ }
+ }
+ else
+ {
+ if(direction == 1)
+ {
+ digitalWrite(dcm_pin_1[motor_no],HIGH);
+ digitalWrite(dcm_pin_2[motor_no],LOW);
+ }
+ else
+ {
+ digitalWrite(dcm_pin_2[motor_no],HIGH);
+ digitalWrite(dcm_pin_1[motor_no],LOW);
+ }
+ }
+
+ return 0;
+}
+
diff --git a/src/c/scilab-arduino/cmd_dcmotor_setup/u8cmd_dcmotor_setups.c b/src/c/scilab-arduino/cmd_dcmotor_setup/u8cmd_dcmotor_setups.c
new file mode 100644
index 0000000..30b4b9b
--- /dev/null
+++ b/src/c/scilab-arduino/cmd_dcmotor_setup/u8cmd_dcmotor_setups.c
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "cmd_dcmotor_setup.h"
+
+uint8 dcm_pin_1[4], dcm_pin_2[4], dcm_mode[4];
+
+uint8 u8cmd_dcmotor_setups(uint8 board_no, uint8 driver_type, uint8 motor_no,\
+ uint8 pin_1, uint8 pin_2)
+{
+ dcm_pin_1[motor_no] = pin_1;
+ dcm_pin_2[motor_no] = pin_2;
+ dcm_mode[motor_no] = driver_type;
+
+ //Initialise pins
+ pinMode(pin_1,OUTPUT);
+ pinMode(pin_2,OUTPUT);
+
+ //Set output to low.
+ if(driver_type == 3)
+ {
+ analogWrite(pin_1,0);
+ analogWrite(pin_2,0);
+ }
+ else
+ {
+ digitalWrite(pin_1,LOW);
+ digitalWrite(pin_2,LOW);
+ }
+
+ return 0;
+}
+
diff --git a/src/c/scilab-arduino/default_files/Makefile b/src/c/scilab-arduino/default_files/Makefile
index 2b888f0..5432fcf 100644
--- a/src/c/scilab-arduino/default_files/Makefile
+++ b/src/c/scilab-arduino/default_files/Makefile
@@ -4,7 +4,7 @@ ARDUINO_DIR = /usr/share/arduino
ARDMK_DIR = /usr/share/arduino
AVR_TOOLS_DIR = /usr
BOARD_TAG = uno
-USER_LIB_PATH = ../../
-ARDUINO_LIBS = src/c includes interfaces ../Temp
+USER_LIB_PATH = ../
+ARDUINO_LIBS = ../src/c ../includes ../interfaces ../
ARDUINO_PORT = /dev/ttyACM0
include /usr/share/arduino/Arduino.mk
diff --git a/src/c/scilab-arduino/default_files/sci2c_arduino.ino b/src/c/scilab-arduino/default_files/sci2c_arduino.ino
index 9e9d9b6..2b30456 100644
--- a/src/c/scilab-arduino/default_files/sci2c_arduino.ino
+++ b/src/c/scilab-arduino/default_files/sci2c_arduino.ino
@@ -1,11 +1,13 @@
#include "Arduino.h"
#include <loop_arduino.h>
+#include <setup_arduino.h>
void setup()
{
//Please write appropriate setup functions here.
+ setup_arduino();
}
-int i = 0;
+
void loop()
{
loop_arduino();
diff --git a/src/c/scilab-arduino/default_files/setup_arduino.h b/src/c/scilab-arduino/default_files/setup_arduino.h
new file mode 100644
index 0000000..9eb0ed4
--- /dev/null
+++ b/src/c/scilab-arduino/default_files/setup_arduino.h
@@ -0,0 +1,64 @@
+/*
+** ************************************************
+** This file has been generated using
+** Scilab2C (Version 2.3)
+**
+** Please visit following links for more informations:
+** Atoms Module: http://atoms.scilab.org/toolboxes/scilab2c
+** Scilab2C Forge: http://forge.scilab.org/index.php/p/scilab2c/
+** Scilab2C ML: http://forge.scilab.org/index.php/p/scilab2c/
+** ************************************************
+*/
+
+
+#ifndef setup_arduino_h
+#define setup_arduino_h
+/*
+** -------------------
+** ----- Target ------
+** -------------------
+*/
+# define Arduino1 1
+/*
+** -----------------------
+** --- SCI2C Includes. ---
+** -----------------------
+*/
+#include "sci2clib.h"
+/*
+** ---------------------------
+** --- End SCI2C Includes. ---
+** ---------------------------
+*/
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+** -------------------
+** --- Prototypes. ---
+** -------------------
+*/
+int setup_arduino();
+/*
+** -----------------------
+** --- End Prototypes. ---
+** -----------------------
+*/
+
+
+/*
+** ------------------------
+** --- USER2C Includes. ---
+** ------------------------
+*/
+/*
+** ----------------------------
+** --- End USER2C Includes. ---
+** ----------------------------
+*/
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+#endif
diff --git a/src/c/scilab-arduino/includes/cmd_dcmotor_run.h b/src/c/scilab-arduino/includes/cmd_dcmotor_run.h
new file mode 100644
index 0000000..7631761
--- /dev/null
+++ b/src/c/scilab-arduino/includes/cmd_dcmotor_run.h
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+
+#ifndef __CMD_DCMOTOR_RUN_H__
+#define __CMD_DCMOTOR_RUN_H__
+
+#include "types.h"
+#include "Arduino.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern uint8 dcm_pin_1[4], dcm_pin_2[4], dcm_mode[4];
+
+uint8 u8cmd_dc_motor_runs(uint8 board_no, uint8 motor_no, int16 duty);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DCMOTOR_SETUP_H__ */
diff --git a/src/c/scilab-arduino/includes/cmd_dcmotor_setup.h b/src/c/scilab-arduino/includes/cmd_dcmotor_setup.h
new file mode 100644
index 0000000..94f5a16
--- /dev/null
+++ b/src/c/scilab-arduino/includes/cmd_dcmotor_setup.h
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+
+#ifndef __CMD_DCMOTOR_SETUP_H__
+#define __CMD_DCMOTOR_SETUP_H__
+
+#include "types.h"
+#include "Arduino.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern uint8 dcm_pin_1[4], dcm_pin_2[4], dcm_mode[4];
+
+uint8 u8cmd_dc_motor_setups(uint8 board_no, uint8 driver_type, uint8 motor_no,\
+ uint8 pin_1, uint8 pin_2);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CMD_DCMOTOR_SETUP_H__ */
diff --git a/src/c/scilab-arduino/interfaces/int_cmd_dcmotor.h b/src/c/scilab-arduino/interfaces/int_cmd_dcmotor.h
new file mode 100644
index 0000000..b35583d
--- /dev/null
+++ b/src/c/scilab-arduino/interfaces/int_cmd_dcmotor.h
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+
+#ifndef __INT_CMD_DCMOTOR_H__
+#define __INT_CMD_DCMOTOR_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d0d0d0d0d0cmd_dcmotor_setupu80(in1,in2,in3,in4,in5)\
+ u8cmd_dcmotor_setups((uint8)in1,(uint8)in2,(uint8)in3,\
+ (uint8)in4,(uint8)in5)
+
+#define d0d0d0cmd_dcmotor_runu80(in1,in2,in3) u8cmd_dcmotor_runs((uint8)in1,\
+ (uint8)in2, (int16)in3);
+
+
+#define d0d0u160cmd_dcmotor_runu80(in1,in2,in3) u8cmd_dcmotor_runs((uint8)in1,\
+ (uint8)in2, (int16)in3);
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_CMD_DCMOTOR_H__ */