+++ /dev/null
-mainmenu_name "Aversive project configuration"
-
-#############################################################################
-
-mainmenu_option next_comment
-comment 'Hardware'
-# name must be CONFIG_MCU_##mcu name##
-
-choice 'Avr type' "\
- AT90s2313 CONFIG_MCU_AT90S2313 \
- AT90s2323 CONFIG_MCU_AT90S2323 \
- AT90s2333 CONFIG_MCU_AT90S3333 \
- AT90s2343 CONFIG_MCU_AT90S2343 \
- ATtiny22 CONFIG_MCU_ATTINY22 \
- ATtiny26 CONFIG_MCU_ATTINY26 \
- AT90s4414 CONFIG_MCU_AT90S4414 \
- AT90s4433 CONFIG_MCU_AT90S4433 \
- AT90s4434 CONFIG_MCU_AT90S4434 \
- AT90s8515 CONFIG_MCU_AT90S8515 \
- AT90c8534 CONFIG_MCU_AT90S8534 \
- AT90s8535 CONFIG_MCU_AT90S8535 \
- AT86rf401 CONFIG_MCU_AT86RF401 \
- ATmega103 CONFIG_MCU_ATMEGA103 \
- ATmega603 CONFIG_MCU_ATMEGA603 \
- AT43usb320 CONFIG_MCU_AT43USB320 \
- AT43usb355 CONFIG_MCU_AT43USB355 \
- AT76c711 CONFIG_MCU_AT76C711 \
- ATmega8 CONFIG_MCU_ATMEGA8 \
- ATmega48 CONFIG_MCU_ATMEGA48 \
- ATmega88 CONFIG_MCU_ATMEGA88 \
- ATmega8515 CONFIG_MCU_ATMEGA8515 \
- ATmega8535 CONFIG_MCU_ATMEGA8535 \
- ATtiny13 CONFIG_MCU_ATTINY13 \
- ATtiny2313 CONFIG_MCU_ATTINY2313 \
- ATmega16 CONFIG_MCU_ATMEGA16 \
- ATmega161 CONFIG_MCU_ATMEGA161 \
- ATmega162 CONFIG_MCU_ATMEGA162 \
- ATmega163 CONFIG_MCU_ATMEGA163 \
- ATmega165 CONFIG_MCU_ATMEGA165 \
- ATmega168 CONFIG_MCU_ATMEGA168 \
- ATmega169 CONFIG_MCU_ATMEGA169 \
- ATmega32 CONFIG_MCU_ATMEGA32 \
- ATmega323 CONFIG_MCU_ATMEGA323 \
- ATmega325 CONFIG_MCU_ATMEGA325 \
- ATmega3250 CONFIG_MCU_ATMEGA3250 \
- ATmega64 CONFIG_MCU_ATMEGA64 \
- ATmega645 CONFIG_MCU_ATMEGA645 \
- ATmega6450 CONFIG_MCU_ATMEGA6450 \
- ATmega128 CONFIG_MCU_ATMEGA128 \
- ATmega1281 CONFIG_MCU_ATMEGA1281 \
- AT90can128 CONFIG_MCU_AT90CAN128 \
- AT94k CONFIG_MCU_AT94K \
- AT90s1200 CONFIG_MCU_AT90S1200 \
- ATmega2560 CONFIG_MCU_ATMEGA2560 \
- ATmega256 CONFIG_MCU_ATMEGA256 \
-" ATmega128
-
-int 'Quartz Frequency (Hz)' CONFIG_QUARTZ '12000000'
-
-endmenu
-
-#############################################################################
-
-mainmenu_option next_comment
-comment 'Generation options'
-
-
-choice 'Optimization level' "\
- -O0 CONFIG_OPTM_0 \
- -O1 CONFIG_OPTM_1 \
- -O2 CONFIG_OPTM_2 \
- -O3 CONFIG_OPTM_3 \
- -Os CONFIG_OPTM_S \
-" -Os
-
-bool 'Include Math lib' CONFIG_MATH_LIB
-
-bool 'fdevopen compatibility' CONFIG_FDEVOPEN_COMPAT
-
-# printf version, advanced depends on math lib
-if [ "$CONFIG_MATH_LIB" = "y" ]; then
-
-choice 'Printf capabilities' "\
- none CONFIG_NO_PRINTF \
- minimal CONFIG_MINIMAL_PRINTF \
- standard CONFIG_STANDARD_PRINTF \
- advanced CONFIG_ADVANCED_PRINTF \
-" standard
-
-else
-
-choice 'Printf capabilities' "\
- none CONFIG_NO_PRINTF \
- minimal CONFIG_MINIMAL_PRINTF \
- standard CONFIG_STANDARD_PRINTF \
-" standard
-
-fi
-
-choice 'Default output format' "\
- ihex CONFIG_FORMAT_IHEX \
- srec CONFIG_FORMAT_SREC \
- binary CONFIG_FORMAT_BINARY \
-" ihex
-
-endmenu
-
-#############################################################################
-
-mainmenu_option next_comment
-comment 'Base modules'
-
-comment 'Enable math library in generation options to see all modules'
-
-#### CIRCULAR BUFFER
-bool 'Circular buffer' CONFIG_MODULE_CIRBUF
-dep_bool ' |-- Allow buffer larger than 127' CONFIG_MODULE_CIRBUF_LARGE \
- $CONFIG_MODULE_CIRBUF
-
-
-#### FIXED_POINT
-dep_bool 'Fixed_Point lib' CONFIG_MODULE_FIXED_POINT \
- $CONFIG_MATH_LIB
-
-
-#### VECT2
-dep_bool 'Vect2 lib' CONFIG_MODULE_VECT2 \
- $CONFIG_MATH_LIB
-
-#### GEOMETRY
-dep_bool 'Geometry lib' CONFIG_MODULE_GEOMETRY \
- $CONFIG_MATH_LIB
-
-#### SCHEDULER
-bool 'Scheduler' CONFIG_MODULE_SCHEDULER
-
-dep_bool ' |-- enable debug statistics' CONFIG_MODULE_SCHEDULER_STATS \
- $CONFIG_MODULE_SCHEDULER
-
-dep_bool ' |-- Create Default scheduler config' CONFIG_MODULE_SCHEDULER_CREATE_CONFIG \
- $CONFIG_MODULE_SCHEDULER
-
-if [ "$CONFIG_MODULE_TIMER" = "y" ]; then
-
-choice 'Scheduler config' "use_timer_module CONFIG_MODULE_SCHEDULER_USE_TIMERS\
- use_timer0 CONFIG_MODULE_SCHEDULER_TIMER0\
- manual CONFIG_MODULE_SCHEDULER_MANUAL" use_timer_module
-
-else
-
-choice 'Scheduler config' "use_timer_module CONFIG_MODULE_SCHEDULER_USE_TIMERS\
- use_timer0 CONFIG_MODULE_SCHEDULER_TIMER0\
- manual CONFIG_MODULE_SCHEDULER_MANUAL" use_timer0
-
-fi
-
-#### TIME
-dep_bool 'Time' CONFIG_MODULE_TIME \
- $CONFIG_MODULE_SCHEDULER
-
-dep_bool ' |-- Create Default time config' CONFIG_MODULE_TIME_CREATE_CONFIG \
- $CONFIG_MODULE_TIME
-
-#### TIME_EXT
-bool 'Time - reloaded' CONFIG_MODULE_TIME_EXT
-
-dep_bool ' |-- Create Default time_ext config' CONFIG_MODULE_TIME_EXT_CREATE_CONFIG \
- $CONFIG_MODULE_TIME_EXT
-
-
-
-endmenu
-
-#############################################################################
-
-mainmenu_option next_comment
-comment 'Communication modules'
-
-comment 'uart needs circular buffer, mf2 client may need scheduler'
-
-#### UART
-dep_bool 'Uart' CONFIG_MODULE_UART \
- $CONFIG_MODULE_CIRBUF
-
-dep_bool ' |-- Allow 9 bits operations' CONFIG_MODULE_UART_9BITS \
- $CONFIG_MODULE_UART
-
-dep_bool ' |-- Create Default uart config' CONFIG_MODULE_UART_CREATE_CONFIG \
- $CONFIG_MODULE_UART
-
-#### SPI
-bool 'spi (very EXPERIMENTAL)' CONFIG_MODULE_SPI
-
-dep_bool ' |-- Create Default spi config' CONFIG_MODULE_SPI_CREATE_CONFIG \
- $CONFIG_MODULE_SPI
-
-#### I2C
-bool 'i2c' CONFIG_MODULE_I2C
-
-dep_bool ' |-- Allow master mode' CONFIG_MODULE_I2C_MASTER \
- $CONFIG_MODULE_I2C
-
-dep_bool ' |-- Allow multimaster mode' CONFIG_MODULE_I2C_MULTIMASTER \
- $CONFIG_MODULE_I2C_MASTER
-
-dep_bool ' |-- Create Default i2c config' CONFIG_MODULE_I2C_CREATE_CONFIG \
- $CONFIG_MODULE_I2C
-
-
-#### MF2_CLIENT
-bool 'mf2_client (very EXPERIMENTAL)' CONFIG_MODULE_MF2_CLIENT
-
-dep_bool ' |-- Use scheduler (watchdog + no active loops)' CONFIG_MODULE_MF2_CLIENT_USE_SCHEDULER \
- $CONFIG_MODULE_MF2_CLIENT \
- $CONFIG_MODULE_SCHEDULER
-
-dep_bool ' |-- Create Default mf2_client config' CONFIG_MODULE_MF2_CLIENT_CREATE_CONFIG \
- $CONFIG_MODULE_MF2_CLIENT
-
-#### MF2_SERVER
-bool 'mf2_server (very EXPERIMENTAL)' CONFIG_MODULE_MF2_SERVER
-
-dep_bool ' |-- Create Default mf2_server config' CONFIG_MODULE_MF2_SERVER_CREATE_CONFIG \
- $CONFIG_MODULE_MF2_SERVER
-
-endmenu
-
-#############################################################################
-
-mainmenu_option next_comment
-comment 'Hardware modules'
-
-#### TIMER
-bool 'Timer' CONFIG_MODULE_TIMER
-
-dep_bool ' |-- Create Default timer config' CONFIG_MODULE_TIMER_CREATE_CONFIG \
- $CONFIG_MODULE_TIMER
-
-dep_bool ' |-- Allow dynamic modification of prescaler' CONFIG_MODULE_TIMER_DYNAMIC \
- $CONFIG_MODULE_TIMER
-
-
-#### PWM
-bool 'PWM' CONFIG_MODULE_PWM
-
-dep_bool ' |-- Create Default pwm config' CONFIG_MODULE_PWM_CREATE_CONFIG \
- $CONFIG_MODULE_PWM
-
-
-#### PWM_NG
-bool 'PWM_ng' CONFIG_MODULE_PWM_NG
-
-#### ADC
-bool 'ADC' CONFIG_MODULE_ADC
-
-dep_bool ' |-- Create Default adc config' CONFIG_MODULE_ADC_CREATE_CONFIG \
- $CONFIG_MODULE_ADC
-
-endmenu
-
-#############################################################################
-
-mainmenu_option next_comment
-comment 'IHM modules'
-
-#### menu
-bool 'Menu' CONFIG_MODULE_MENU
-
-#### vt100
-bool 'Vt100' CONFIG_MODULE_VT100
-
-#### rdline
-dep_bool 'Rdline' CONFIG_MODULE_RDLINE \
- $CONFIG_MODULE_VT100 \
- $CONFIG_MODULE_CIRBUF
-
-dep_bool ' |-- Create Default rdline config' CONFIG_MODULE_RDLINE_CREATE_CONFIG \
- $CONFIG_MODULE_RDLINE
-
-dep_bool ' |-- Enable cut/paste' CONFIG_MODULE_RDLINE_KILL_BUF \
- $CONFIG_MODULE_RDLINE
-
-dep_bool ' |-- Enable history' CONFIG_MODULE_RDLINE_HISTORY \
- $CONFIG_MODULE_RDLINE
-
-#### parse
-
-bool 'Parse' CONFIG_MODULE_PARSE
-dep_bool ' |-- Do not parse float' CONFIG_MODULE_PARSE_NO_FLOAT \
- $CONFIG_MODULE_PARSE
-
-endmenu
-
-#############################################################################
-
-mainmenu_option next_comment
-comment 'External devices modules'
-
-#### LCD
-bool 'LCD' CONFIG_MODULE_LCD
-
-dep_bool ' |-- Create Default lcd config' CONFIG_MODULE_LCD_CREATE_CONFIG \
- $CONFIG_MODULE_LCD
-
-#### SERVO
-bool 'Multiservo' CONFIG_MODULE_MULTISERVO
-
-dep_bool ' |-- Create Default servo config' CONFIG_MODULE_MULTISERVO_CREATE_CONFIG \
- $CONFIG_MODULE_MULTISERVO
-
-bool 'AX-12' CONFIG_MODULE_AX12
-
-dep_bool ' |-- Create Default AX-12 config' CONFIG_MODULE_AX12_CREATE_CONFIG\
- $CONFIG_MODULE_AX12
-
-mainmenu_option next_comment
-comment 'Brushless motor drivers (you should enable pwm modules to see all)'
-
-#### CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL
-dep_bool '3 phase motor with digital hall sensors' CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL \
- $CONFIG_MODULE_PWM
-
-dep_bool ' |-- Create Default brushless_3phase_digital_hall config' CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL_CREATE_CONFIG \
- $CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL
-
-#### CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL_DOUBLE
-dep_bool 'two 3 phase motor with digital hall sensors' CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL_DOUBLE \
- $CONFIG_MODULE_PWM
-
-dep_bool ' Create Default brushless_3phase_digital_hall_double config' CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL_DOUBLE_CREATE_CONFIG \
- $CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL_DOUBLE
-
-endmenu # (brushless)
-
-mainmenu_option next_comment
-comment 'Encoders (you need comm/spi for encoders_spi)'
-
-#### ENCODERS
-bool 'Encoders (microb)' CONFIG_MODULE_ENCODERS_MICROB
-
-dep_bool ' |-- Create Default encoders_microb config' CONFIG_MODULE_ENCODERS_MICROB_CREATE_CONFIG \
- $CONFIG_MODULE_ENCODERS_MICROB
-
-#### ENCODERS
-bool 'Encoders (eirbot)' CONFIG_MODULE_ENCODERS_EIRBOT
-
-dep_bool ' |-- Create Default encoders_eirbot config' CONFIG_MODULE_ENCODERS_EIRBOT_CREATE_CONFIG \
- $CONFIG_MODULE_ENCODERS_EIRBOT
-
-#### ENCODERS
-dep_bool 'Encoders_spi (microb)' CONFIG_MODULE_ENCODERS_SPI \
- $CONFIG_MODULE_SPI
-
-dep_bool ' |-- Create Default encoders_spi config' CONFIG_MODULE_ENCODERS_SPI_CREATE_CONFIG \
- $CONFIG_MODULE_ENCODERS_SPI
-
-endmenu # (encoders)
-
-mainmenu_option next_comment
-comment 'Robot specific modules'
-
-#### ROBOT_SYSTEM
-dep_bool 'Robot System' CONFIG_MODULE_ROBOT_SYSTEM \
- $CONFIG_MODULE_FIXED_POINT
-
-dep_bool ' |-- Allow motor and external encoders' CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT \
- $CONFIG_MODULE_ROBOT_SYSTEM
-
-#### POSITION_MANAGER
-dep_bool 'Position manager' CONFIG_MODULE_POSITION_MANAGER \
- $CONFIG_MODULE_ROBOT_SYSTEM
-
-dep_bool ' |-- Compensate centrifugal force' CONFIG_MODULE_COMPENSATE_CENTRIFUGAL_FORCE \
- $CONFIG_MODULE_POSITION_MANAGER
-
-#### TRAJECTORY MANAGER
-dep_bool 'Trajectory manager' CONFIG_MODULE_TRAJECTORY_MANAGER \
- $CONFIG_MODULE_POSITION_MANAGER \
- $CONFIG_MODULE_SCHEDULER \
- $CONFIG_MODULE_VECT2 \
- $CONFIG_MODULE_FIXED_POINT
-
-#### BLOCKING DETECTION MANAGER
-bool 'Blocking detection manager' CONFIG_MODULE_BLOCKING_DETECTION_MANAGER
-
-#### OBSTACLE AVOIDANCE
-dep_bool 'Obstacle Avoidance' CONFIG_MODULE_OBSTACLE_AVOIDANCE\
- $CONFIG_MODULE_GEOMETRY
-
-dep_bool ' |-- Create Default Obstacle Avoidance config' CONFIG_MODULE_OBSTACLE_AVOIDANCE_CREATE_CONFIG \
- $CONFIG_MODULE_OBSTACLE_AVOIDANCE
-
-endmenu # (robot)
-
-mainmenu_option next_comment
-comment 'Control system modules'
-
-#### CONTROL SYSTEM MANAGER
-bool 'Control System Manager' CONFIG_MODULE_CONTROL_SYSTEM_MANAGER
-
-comment 'Filters'
-
-bool 'PID' CONFIG_MODULE_PID
-
-dep_bool ' |-- Create Default PID config' CONFIG_MODULE_PID_CREATE_CONFIG \
- $CONFIG_MODULE_PID
-
-bool 'ramp' CONFIG_MODULE_RAMP
-
-bool 'Quadramp' CONFIG_MODULE_QUADRAMP
-
-bool 'Quadramp derivate' CONFIG_MODULE_QUADRAMP_DERIVATE
-
-bool 'Biquad' CONFIG_MODULE_BIQUAD
-
-endmenu # (control system)
-
-
-mainmenu_option next_comment
-comment 'Radio devices'
-comment 'Some radio devices require SPI to be activated'
-#### RADIO DEVICES
-dep_bool 'CC2420 Radio Device (IEEE 802.15.4) (VERY EXPERIMENTAL)' CONFIG_MODULE_CC2420 \
- $CONFIG_MODULE_SPI
-
-dep_bool ' |-- Create Default CC2420 config' CONFIG_MODULE_CC2420_CREATE_CONFIG \
- $CONFIG_MODULE_CC2420
-
-endmenu # radio
-
-
-endmenu # (devices)
-
-#############################################################################
-
-
-mainmenu_option next_comment
-comment 'Crypto modules'
-
-comment 'Crypto modules depend on utils module'
-
-#### AES
-bool 'aes' CONFIG_MODULE_AES
-
-dep_bool 'aes counter mode' CONFIG_MODULE_AES_CTR \
- $CONFIG_MODULE_AES
-
-#### MD5
-bool 'md5' CONFIG_MODULE_MD5
-
-dep_bool 'md5 hmac' CONFIG_MODULE_MD5_HMAC \
- $CONFIG_MODULE_MD5
-
-#### RC4
-bool 'rc4' CONFIG_MODULE_RC4
-
-endmenu # (crypto)
-
-#############################################################################
-
-
-mainmenu_option next_comment
-comment 'Encodings modules'
-
-comment 'Encoding modules depend on utils module'
-
-#### BASE 64
-bool 'Base64 encoding (PEM)' CONFIG_MODULE_BASE64
-
-#### HAMMING
-bool 'Hamming' CONFIG_MODULE_HAMMING
-
-endmenu # (encodings)
-
-
-#############################################################################
-
-
-mainmenu_option next_comment
-comment 'Debug modules'
-
-comment 'Debug modules depend on utils module'
-
-#### DIAGNOSTIC
-bool 'diagnostic' CONFIG_MODULE_DIAGNOSTIC
-
-dep_bool ' |-- Create Default diagnostic config' CONFIG_MODULE_DIAGNOSTIC_CREATE_CONFIG \
- $CONFIG_MODULE_DIAGNOSTIC
-
-#### ERROR
-bool 'error' CONFIG_MODULE_ERROR
-
-dep_bool ' |-- Create Default error config' CONFIG_MODULE_ERROR_CREATE_CONFIG \
- $CONFIG_MODULE_ERROR
-
-endmenu
-
-#############################################################################
-
-mainmenu_option next_comment
-comment 'Programmer options'
-
-choice 'Programmer' "avrdude CONFIG_AVRDUDE\
- avarice CONFIG_AVARICE
-" avrdude
-
-mainmenu_option next_comment
-comment 'Avrdude'
-
-choice 'Programmer type' "futurlec CONFIG_AVRDUDE_PROG_FUTURELEC\
- abcmini CONFIG_AVRDUDE_PROG_ABCMINI\
- picoweb CONFIG_AVRDUDE_PROG_PICOWEB\
- sp12 CONFIG_AVRDUDE_PROG_SP12\
- alf CONFIG_AVRDUDE_PROG_ALF\
- bascom CONFIG_AVRDUDE_PROG_BASCOM\
- dt006 CONFIG_AVRDUDE_PROG_DT006\
- pony-stk200 CONFIG_AVRDUDE_PROG_PONY_STK200\
- stk200 CONFIG_AVRDUDE_PROG_STK200\
- pavr CONFIG_AVRDUDE_PROG_PAVR\
- butterfly CONFIG_AVRDUDE_PROG_BUTTERFLY\
- avr910 CONFIG_AVRDUDE_PROG_AVR910\
- stk500 CONFIG_AVRDUDE_PROG_STK500\
- avrisp CONFIG_AVRDUDE_PROG_AVRISP\
- bsd CONFIG_AVRDUDE_PROG_BSD\
- dapa CONFIG_AVRDUDE_PROG_DAPA\
- jtag1 CONFIG_AVRDUDE_PROG_JTAG1\
- avr109 CONFIG_AVRDUDE_PROG_AVR109\
-" stk200
-
-string 'Port device' CONFIG_AVRDUDE_PORT '/dev/parport0'
-
-int 'Programmer baudrate' CONFIG_AVRDUDE_BAUDRATE '19200'
-
-endmenu
-
-mainmenu_option next_comment
-comment 'Avarice'
-
-string 'Port device' CONFIG_AVARICE_PORT '/dev/ttyS0'
-
-int 'Debug TCP Port' CONFIG_AVARICE_DEBUG_PORT '1234'
-
-choice 'Programmer type' "mkI CONFIG_AVARICE_PROG_MKI\
- mkII CONFIG_AVARICE_PROG_MKII
-" mkI
-
-endmenu
-
-bool 'Check device signature' CONFIG_AVRDUDE_CHECK_SIGNATURE
-
-endmenu
-
-#############################################################################
+++ /dev/null
-/*
- * Copyright Droids Corporation, Microb Technology, Eirbot (2005)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Revision : $Id: robot_system.c,v 1.6.4.7 2009-03-29 18:48:23 zer0 Exp $
- *
- */
-
-/**
- * The goal of this module is to provide an interface to motor and
- * encoders of the robot. This module provide a function that returns
- * the value of virtual encoders containing distance and angle. It
- * also allow the user to command virtual angle and distance PWMs.
- */
-
-#include <string.h>
-#include <stdio.h>
-
-#include <aversive/error.h>
-
-#include <aversive.h>
-#include <f64.h>
-
-#include "angle_distance.h"
-#include "robot_system.h"
-
-
-/** Call a pwm() pointer :
- * - lock the interrupts
- * - read the pointer to the pwm function
- * - unlock the interrupts
- * - if pointer is null, don't do anything
- * - else call the pwm with the parameters
- */
-static inline void
-safe_setpwm(void (*f)(void *, int32_t), void * param, int32_t value)
-{
- void (*f_tmp)(void *, int32_t);
- void * param_tmp;
- uint8_t flags;
- IRQ_LOCK(flags);
- f_tmp = f;
- param_tmp = param;
- IRQ_UNLOCK(flags);
- if (f_tmp) {
- f_tmp(param_tmp, value);
- }
-}
-
-/** Call a encoder() pointer :
- * - lock the interrupts
- * - read the pointer to the encoder function
- * - unlock the interrupts
- * - if pointer is null, return 0
- * - else return the value processed by the function
- */
-static inline uint32_t
-safe_getencoder(int32_t (*f)(void *), void * param)
-{
- int32_t (*f_tmp)(void *);
- void * param_tmp;
- uint8_t flags;
- IRQ_LOCK(flags);
- f_tmp = f;
- param_tmp = param;
- IRQ_UNLOCK(flags);
- if (f_tmp) {
- return f_tmp(param_tmp);
- }
- return 0;
-}
-
-/** Set the structure to 0 */
-void rs_init( struct robot_system * rs)
-{
- uint8_t flags;
-
- IRQ_LOCK(flags);
- memset(rs, 0, sizeof(struct robot_system));
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
- rs_set_ratio(rs, 1.0);
-#endif
- IRQ_UNLOCK(flags);
-}
-
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
-/** define ratio between mot and ext track. (track_mot / track_ext) */
-void rs_set_ratio(struct robot_system * rs, double ratio)
-{
- uint8_t flags;
-
- IRQ_LOCK(flags);
- rs->ratio_mot_ext = f64_from_double(ratio);
- IRQ_UNLOCK(flags);
-}
-#endif
-
-/** define left PWM function and param */
-void rs_set_left_pwm(struct robot_system * rs, void (*left_pwm)(void *, int32_t), void *left_pwm_param)
-{
- uint8_t flags;
-
- IRQ_LOCK(flags);
- rs->left_pwm = left_pwm;
- rs->left_pwm_param = left_pwm_param;
- IRQ_UNLOCK(flags);
-}
-
-/** define right PWM function and param */
-void rs_set_right_pwm(struct robot_system * rs, void (*right_pwm)(void *, int32_t), void *right_pwm_param)
-{
- uint8_t flags;
-
- IRQ_LOCK(flags);
- rs->right_pwm = right_pwm;
- rs->right_pwm_param = right_pwm_param;
- IRQ_UNLOCK(flags);
-}
-
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
-/** define left motor encoder function and param */
-void rs_set_left_mot_encoder(struct robot_system * rs, int32_t (*left_mot_encoder)(void *),
- void *left_mot_encoder_param, double gain)
-{
- uint8_t flags;
-
- IRQ_LOCK(flags);
- rs->left_mot_encoder = left_mot_encoder;
- rs->left_mot_encoder_param = left_mot_encoder_param;
- rs->left_mot_gain = f64_from_double(gain);
- IRQ_UNLOCK(flags);
-}
-
-/** define right motor encoder function and param */
-void rs_set_right_mot_encoder(struct robot_system * rs, int32_t (*right_mot_encoder)(void *),
- void *right_mot_encoder_param, double gain)
-{
- uint8_t flags;
-
- IRQ_LOCK(flags);
- rs->right_mot_encoder = right_mot_encoder;
- rs->right_mot_encoder_param = right_mot_encoder_param;
- rs->right_mot_gain = f64_from_double(gain);
- IRQ_UNLOCK(flags);
-}
-#endif
-
-/** define left external encoder function and param */
-void rs_set_left_ext_encoder(struct robot_system * rs, int32_t (*left_ext_encoder)(void *),
- void *left_ext_encoder_param, double gain)
-{
- uint8_t flags;
-
- IRQ_LOCK(flags);
- rs->left_ext_encoder = left_ext_encoder;
- rs->left_ext_encoder_param = left_ext_encoder_param;
- rs->left_ext_gain = f64_from_double(gain);
- IRQ_UNLOCK(flags);
-}
-
-/** define right external encoder function and param */
-void rs_set_right_ext_encoder(struct robot_system * rs, int32_t (*right_ext_encoder)(void *),
- void *right_ext_encoder_param, double gain)
-{
- uint8_t flags;
-
- IRQ_LOCK(flags);
- rs->right_ext_encoder = right_ext_encoder;
- rs->right_ext_encoder_param = right_ext_encoder_param;
- rs->right_ext_gain = f64_from_double(gain);
- IRQ_UNLOCK(flags);
-}
-
-/**** Virtual encoders and PWM */
-
-/**
- * set the real pwms according to the specified angle (it also
- * depends on the last distance command sent)
- */
-void rs_set_angle(void * data, int32_t angle)
-{
- struct rs_polar p;
- struct rs_wheels w;
- struct robot_system * rs = data;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- p.distance = rs->virtual_pwm.distance ;
- rs->virtual_pwm.angle = angle;
- IRQ_UNLOCK(flags);
-
- p.angle = angle;
- rs_get_wheels_from_polar(&w, &p);
-
- safe_setpwm(rs->left_pwm, rs->left_pwm_param, w.left);
- safe_setpwm(rs->right_pwm, rs->right_pwm_param, w.right);
-}
-
-/**
- * set the real pwms according to the specified distance (it also
- * depends on the last angle command sent)
- */
-void rs_set_distance(void * data, int32_t distance)
-{
- struct robot_system * rs = data;
- struct rs_polar p;
- struct rs_wheels w;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- p.angle = rs->virtual_pwm.angle ;
- rs->virtual_pwm.distance = distance;
- IRQ_UNLOCK(flags);
-
- p.distance = distance;
- rs_get_wheels_from_polar(&w, &p);
-
- safe_setpwm(rs->left_pwm, rs->left_pwm_param, w.left);
- safe_setpwm(rs->right_pwm, rs->right_pwm_param, w.right);
-}
-
-/**
- * get the virtual angle according to real encoders value.
- */
-int32_t rs_get_angle(void * data)
-{
- struct robot_system * rs = data;
- int32_t angle;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- angle = rs->virtual_encoders.angle ;
- IRQ_UNLOCK(flags);
- return angle;
-}
-
-/**
- * get the virtual distance according to real encoders value.
- */
-int32_t rs_get_distance(void * data)
-{
- struct robot_system * rs = data;
- int32_t distance;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- distance = rs->virtual_encoders.distance ;
- IRQ_UNLOCK(flags);
- return distance;
-}
-
-int32_t rs_get_ext_angle(void * data)
-{
- struct robot_system * rs = data;
- int32_t angle;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- angle = rs->pext_prev.angle ;
- IRQ_UNLOCK(flags);
- return angle;
-}
-
-int32_t rs_get_ext_distance(void * data)
-{
- struct robot_system * rs = data;
- int32_t distance;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- distance = rs->pext_prev.distance ;
- IRQ_UNLOCK(flags);
- return distance;
-}
-
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
-int32_t rs_get_mot_angle(void * data)
-{
- struct robot_system * rs = data;
- int32_t angle;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- angle = rs->pmot_prev.angle ;
- IRQ_UNLOCK(flags);
- return angle;
-}
-
-int32_t rs_get_mot_distance(void * data)
-{
- struct robot_system * rs = data;
- int32_t distance;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- distance = rs->pmot_prev.distance ;
- IRQ_UNLOCK(flags);
- return distance;
-}
-#endif
-
-int32_t rs_get_ext_left(void * data)
-{
- struct robot_system * rs = data;
- int32_t left;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- left = rs->wext_prev.left ;
- IRQ_UNLOCK(flags);
- return left;
-}
-
-int32_t rs_get_ext_right(void * data)
-{
- struct robot_system * rs = data;
- int32_t right;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- right = rs->wext_prev.right ;
- IRQ_UNLOCK(flags);
- return right;
-}
-
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
-int32_t rs_get_mot_left(void * data)
-{
- struct robot_system * rs = data;
- int32_t left;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- left = rs->wmot_prev.left ;
- IRQ_UNLOCK(flags);
- return left;
-}
-
-int32_t rs_get_mot_right(void * data)
-{
- struct robot_system * rs = data;
- int32_t right;
- uint8_t flags;
-
- IRQ_LOCK(flags);
- right = rs->wmot_prev.right ;
- IRQ_UNLOCK(flags);
- return right;
-}
-#endif
-
-void rs_set_flags(struct robot_system * rs, uint8_t flags)
-{
- uint8_t i_flags;
-
- IRQ_LOCK(i_flags);
- rs->flags = flags;
- IRQ_UNLOCK(i_flags);
-}
-
-/**
- * Read the encoders, and update internal virtual counters. Call this
- * function is needed before reading the virtual encoders.The program
- * will decide if it the external encoders or the motor encoders are
- * taken in account (depending on flags, but not yet)
- */
-void rs_update(void * data)
-{
- struct robot_system * rs = data;
- struct rs_wheels wext;
- struct rs_polar pext;
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
- struct rs_wheels wmot;
- struct rs_polar pmot;
-#endif
- int32_t delta_angle, delta_distance;
- uint8_t flags;
-
- /* read encoders */
- wext.left = safe_getencoder(rs->left_ext_encoder, rs->left_ext_encoder_param);
- wext.right = safe_getencoder(rs->right_ext_encoder, rs->right_ext_encoder_param);
-
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
- wmot.left = safe_getencoder(rs->left_mot_encoder, rs->left_mot_encoder_param);
- wmot.right = safe_getencoder(rs->right_mot_encoder, rs->right_mot_encoder_param);
-#endif
-
- /* apply gains to each wheel */
- if (! (rs->flags & RS_IGNORE_EXT_GAIN )) {
- wext.left = f64_msb_mul(f64_from_lsb(wext.left), rs->left_ext_gain);
- wext.right = f64_msb_mul(f64_from_lsb(wext.right), rs->right_ext_gain);
- }
-
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
- if (! (rs->flags & RS_IGNORE_MOT_GAIN )) {
- wmot.left = f64_msb_mul(f64_from_lsb(wmot.left), rs->left_mot_gain);
- wmot.right = f64_msb_mul(f64_from_lsb(wmot.right), rs->right_mot_gain);
- }
-#endif
-
- rs_get_polar_from_wheels(&pext, &wext);
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
- rs_get_polar_from_wheels(&pmot, &wmot);
-
- /* apply ratio to polar and reupdate wheels for ext coders */
- pext.angle = f64_msb_mul(f64_from_lsb(pext.angle), rs->ratio_mot_ext);
- rs_get_wheels_from_polar(&wext, &pext);
-#endif
-
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
- /* update from external encoders */
- if (rs->flags & RS_USE_EXT) {
- delta_angle = pext.angle - rs->pext_prev.angle;
- delta_distance = pext.distance - rs->pext_prev.distance;
- }
-
- /* update from motor encoders */
- else {
- delta_angle = pmot.angle - rs->pmot_prev.angle;
- delta_distance = pmot.distance - rs->pmot_prev.distance;
- }
-#else
- delta_angle = pext.angle - rs->pext_prev.angle;
- delta_distance = pext.distance - rs->pext_prev.distance;
-#endif
-
- IRQ_LOCK(flags);
- rs->virtual_encoders.angle += delta_angle;
- rs->virtual_encoders.distance += delta_distance;
- IRQ_UNLOCK(flags);
-
- /* don't lock too much time */
-
- IRQ_LOCK(flags);
- rs->pext_prev = pext;
- rs->wext_prev = wext;
- IRQ_UNLOCK(flags);
-
-#ifdef CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT
- IRQ_LOCK(flags);
- rs->pmot_prev = pmot;
- rs->wmot_prev = wmot;
- IRQ_UNLOCK(flags);
-#endif
-}
+++ /dev/null
-/*
- * Copyright Droids Corporation (2007)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Revision : $Id: i2c_commands.h,v 1.9 2009-05-27 20:04:06 zer0 Exp $
- *
- */
-
-#ifndef _I2C_COMMANDS_H_
-#define _I2C_COMMANDS_H_
-
-#define I2C_MAINBOARD_ADDR 1
-#define I2C_MECHBOARD_ADDR 2
-#define I2C_SENSORBOARD_ADDR 3
-
-#define I2C_LEFT_SIDE 0
-#define I2C_RIGHT_SIDE 1
-#define I2C_AUTO_SIDE 2 /* for prepare_pickup */
-#define I2C_CENTER_SIDE 3 /* for prepare_pickup */
-
-#define I2C_COLOR_RED 0
-#define I2C_COLOR_GREEN 1
-
-#define I2C_AUTOBUILD_DEFAULT_DIST 210
-
-struct i2c_cmd_hdr {
- uint8_t cmd;
-};
-
-/****/
-/* commands that do not need and answer */
-/****/
-
-#define I2C_CMD_GENERIC_LED_CONTROL 0x00
-
-struct i2c_cmd_led_control {
- struct i2c_cmd_hdr hdr;
- uint8_t led_num:7;
- uint8_t state:1;
-};
-
-/****/
-
-#define I2C_CMD_GENERIC_SET_COLOR 0x01
-
-struct i2c_cmd_generic_color {
- struct i2c_cmd_hdr hdr;
- uint8_t color;
-};
-
-/****/
-
-#define I2C_CMD_MECHBOARD_SET_MODE 0x02
-
-struct i2c_cmd_mechboard_set_mode {
- struct i2c_cmd_hdr hdr;
-#define I2C_MECHBOARD_MODE_MANUAL 0x00
-#define I2C_MECHBOARD_MODE_HARVEST 0x01
-#define I2C_MECHBOARD_MODE_PREPARE_PICKUP 0x02
-#define I2C_MECHBOARD_MODE_PICKUP 0x03
-#define I2C_MECHBOARD_MODE_PREPARE_BUILD 0x04
-#define I2C_MECHBOARD_MODE_AUTOBUILD 0x05
-#define I2C_MECHBOARD_MODE_WAIT 0x06
-#define I2C_MECHBOARD_MODE_INIT 0x07
-#define I2C_MECHBOARD_MODE_PREPARE_GET_LINTEL 0x08
-#define I2C_MECHBOARD_MODE_GET_LINTEL 0x09
-#define I2C_MECHBOARD_MODE_PUT_LINTEL 0x0A
-#define I2C_MECHBOARD_MODE_PREPARE_EJECT 0x0B
-#define I2C_MECHBOARD_MODE_EJECT 0x0C
-#define I2C_MECHBOARD_MODE_CLEAR 0x0D
-#define I2C_MECHBOARD_MODE_LAZY_HARVEST 0x0E
-#define I2C_MECHBOARD_MODE_LOADED 0x0F
-#define I2C_MECHBOARD_MODE_PREPARE_INSIDE 0x10
-#define I2C_MECHBOARD_MODE_STORE 0x11
-#define I2C_MECHBOARD_MODE_LAZY_PICKUP 0x12
-#define I2C_MECHBOARD_MODE_MANIVELLE 0x13
-#define I2C_MECHBOARD_MODE_PUSH_TEMPLE 0x14
-#define I2C_MECHBOARD_MODE_PUSH_TEMPLE_DISC 0x15
-#define I2C_MECHBOARD_MODE_EXIT 0xFF
- uint8_t mode;
- union {
- struct {
-
- } manual;
-
- struct {
- uint8_t side;
- uint8_t next_mode;
- } prep_pickup;
-
- struct {
- uint8_t level_l;
- uint8_t level_r;
- } prep_build;
-
- struct {
- uint8_t side;
- } push_temple_disc;
-
- struct {
- uint8_t level_left;
- uint8_t level_right;
- uint8_t count_left;
- uint8_t count_right;
- uint8_t distance_left;
- uint8_t distance_right;
- uint8_t do_lintel;
- } autobuild;
-
- struct {
- uint8_t level_l;
- uint8_t level_r;
- } prep_inside;
- };
-};
-
-/****/
-
-/* only valid in manual mode */
-#define I2C_CMD_MECHBOARD_ARM_GOTO 0x03
-
-struct i2c_cmd_mechboard_arm_goto {
- struct i2c_cmd_hdr hdr;
-#define I2C_MECHBOARD_ARM_LEFT 0
-#define I2C_MECHBOARD_ARM_RIGHT 1
-#define I2C_MECHBOARD_ARM_BOTH 2
- uint8_t which;
-
- uint8_t height; /* in cm */
- uint8_t distance; /* in cm */
-};
-
-/****/
-
-#define I2C_CMD_SENSORBOARD_SET_BEACON 0x04
-
-struct i2c_cmd_sensorboard_start_beacon {
- struct i2c_cmd_hdr hdr;
- uint8_t enable;
-};
-
-
-/****/
-
-#define I2C_CMD_SENSORBOARD_SET_SCANNER 0x05
-
-struct i2c_cmd_sensorboard_scanner {
- struct i2c_cmd_hdr hdr;
-
-#define I2C_SENSORBOARD_SCANNER_STOP 0x00
-#define I2C_SENSORBOARD_SCANNER_PREPARE 0x01
-#define I2C_SENSORBOARD_SCANNER_START 0x02
- uint8_t mode;
-};
-
-/*****/
-
-#define I2C_CMD_SENSORBOARD_CALIB_SCANNER 0x06
-struct i2c_cmd_sensorboard_calib_scanner {
- struct i2c_cmd_hdr hdr;
-};
-
-/*****/
-
-#define I2C_CMD_SENSORBOARD_SCANNER_ALGO 0x07
-struct i2c_cmd_sensorboard_scanner_algo {
- struct i2c_cmd_hdr hdr;
-
-#define I2C_SCANNER_ALGO_COLUMN_DROPZONE 1
-#define I2C_SCANNER_ALGO_CHECK_TEMPLE 2
-#define I2C_SCANNER_ALGO_TEMPLE_DROPZONE 3
- uint8_t algo;
-
- union {
- struct {
-#define I2C_SCANNER_ZONE_0 0
-#define I2C_SCANNER_ZONE_1 1
-#define I2C_SCANNER_ZONE_DISC 2
- uint8_t working_zone;
- int16_t center_x;
- int16_t center_y;
- } drop_zone;
-
- struct {
- uint8_t level;
- int16_t temple_x;
- int16_t temple_y;
- } check_temple;
- };
-};
-
-/****/
-/* requests and their answers */
-/****/
-
-
-#define I2C_REQ_MECHBOARD_STATUS 0x80
-
-struct i2c_req_mechboard_status {
- struct i2c_cmd_hdr hdr;
-
- int16_t pump_left1_current;
- int16_t pump_left2_current;
-};
-
-#define I2C_ANS_MECHBOARD_STATUS 0x81
-
-struct i2c_ans_mechboard_status {
- struct i2c_cmd_hdr hdr;
- /* mode type are defined above: I2C_MECHBOARD_MODE_xxx */
- uint8_t mode;
-
-#define I2C_MECHBOARD_STATUS_F_READY 0x00
-#define I2C_MECHBOARD_STATUS_F_BUSY 0x01
-#define I2C_MECHBOARD_STATUS_F_EXCPT 0x02
- uint8_t status;
-
- uint8_t lintel_count;
-
- /* flag is there if column was taken by this pump. Note that
- * we should also check ADC (current) to see if the column is
- * still there. */
-#define I2C_MECHBOARD_COLUMN_L1 0x01
-#define I2C_MECHBOARD_COLUMN_L2 0x02
-#define I2C_MECHBOARD_COLUMN_R1 0x04
-#define I2C_MECHBOARD_COLUMN_R2 0x08
- uint8_t column_flags;
-
- int16_t pump_left1;
- int16_t pump_right1;
- int16_t pump_left2;
- int16_t pump_right2;
-
-#define I2C_MECHBOARD_CURRENT_COLUMN 85
- int16_t pump_right1_current;
- int16_t pump_right2_current;
-
- uint16_t servo_lintel_left;
- uint16_t servo_lintel_right;
-};
-
-#define I2C_REQ_SENSORBOARD_STATUS 0x82
-
-struct i2c_req_sensorboard_status {
- struct i2c_cmd_hdr hdr;
-
- /* position sent by mainboard */
- int16_t x;
- int16_t y;
- int16_t a;
-
- /* PWM for pickup */
- uint8_t enable_pickup_wheels;
-};
-
-#define I2C_ANS_SENSORBOARD_STATUS 0x83
-
-struct i2c_ans_sensorboard_status {
- struct i2c_cmd_hdr hdr;
-
- uint8_t status;
-#define I2C_OPPONENT_NOT_THERE -1000
- int16_t opponent_x;
- int16_t opponent_y;
- int16_t opponent_a;
- int16_t opponent_d;
-
-#define I2C_SCAN_DONE 1
-#define I2C_SCAN_MAX_COLUMN 2
- uint8_t scan_status;
-
-#define I2C_COLUMN_NO_DROPZONE -1
- int8_t dropzone_h;
- int16_t dropzone_x;
- int16_t dropzone_y;
-};
-
-#endif /* _I2C_PROTOCOL_H_ */
+++ /dev/null
-#
-# Automatically generated by make menuconfig: don't edit
-#
-
-#
-# Hardware
-#
-# CONFIG_MCU_AT90S2313 is not set
-# CONFIG_MCU_AT90S2323 is not set
-# CONFIG_MCU_AT90S3333 is not set
-# CONFIG_MCU_AT90S2343 is not set
-# CONFIG_MCU_ATTINY22 is not set
-# CONFIG_MCU_ATTINY26 is not set
-# CONFIG_MCU_AT90S4414 is not set
-# CONFIG_MCU_AT90S4433 is not set
-# CONFIG_MCU_AT90S4434 is not set
-# CONFIG_MCU_AT90S8515 is not set
-# CONFIG_MCU_AT90S8534 is not set
-# CONFIG_MCU_AT90S8535 is not set
-# CONFIG_MCU_AT86RF401 is not set
-# CONFIG_MCU_ATMEGA103 is not set
-# CONFIG_MCU_ATMEGA603 is not set
-# CONFIG_MCU_AT43USB320 is not set
-# CONFIG_MCU_AT43USB355 is not set
-# CONFIG_MCU_AT76C711 is not set
-# CONFIG_MCU_ATMEGA8 is not set
-# CONFIG_MCU_ATMEGA48 is not set
-# CONFIG_MCU_ATMEGA88 is not set
-# CONFIG_MCU_ATMEGA8515 is not set
-# CONFIG_MCU_ATMEGA8535 is not set
-# CONFIG_MCU_ATTINY13 is not set
-# CONFIG_MCU_ATTINY2313 is not set
-# CONFIG_MCU_ATMEGA16 is not set
-# CONFIG_MCU_ATMEGA161 is not set
-# CONFIG_MCU_ATMEGA162 is not set
-# CONFIG_MCU_ATMEGA163 is not set
-# CONFIG_MCU_ATMEGA165 is not set
-# CONFIG_MCU_ATMEGA168 is not set
-# CONFIG_MCU_ATMEGA169 is not set
-# CONFIG_MCU_ATMEGA32 is not set
-# CONFIG_MCU_ATMEGA323 is not set
-# CONFIG_MCU_ATMEGA325 is not set
-# CONFIG_MCU_ATMEGA3250 is not set
-# CONFIG_MCU_ATMEGA64 is not set
-# CONFIG_MCU_ATMEGA645 is not set
-# CONFIG_MCU_ATMEGA6450 is not set
-# CONFIG_MCU_ATMEGA128 is not set
-# CONFIG_MCU_ATMEGA1281 is not set
-# CONFIG_MCU_AT90CAN128 is not set
-# CONFIG_MCU_AT94K is not set
-# CONFIG_MCU_AT90S1200 is not set
-CONFIG_MCU_ATMEGA2560=y
-# CONFIG_MCU_ATMEGA256 is not set
-CONFIG_QUARTZ=16000000
-
-#
-# Generation options
-#
-# CONFIG_OPTM_0 is not set
-# CONFIG_OPTM_1 is not set
-# CONFIG_OPTM_2 is not set
-# CONFIG_OPTM_3 is not set
-CONFIG_OPTM_S=y
-CONFIG_MATH_LIB=y
-# CONFIG_FDEVOPEN_COMPAT is not set
-# CONFIG_NO_PRINTF is not set
-# CONFIG_MINIMAL_PRINTF is not set
-# CONFIG_STANDARD_PRINTF is not set
-CONFIG_ADVANCED_PRINTF=y
-# CONFIG_FORMAT_IHEX is not set
-# CONFIG_FORMAT_SREC is not set
-CONFIG_FORMAT_BINARY=y
-
-#
-# Base modules
-#
-CONFIG_MODULE_CIRBUF=y
-# CONFIG_MODULE_CIRBUF_LARGE is not set
-CONFIG_MODULE_FIXED_POINT=y
-CONFIG_MODULE_VECT2=y
-CONFIG_MODULE_GEOMETRY=y
-CONFIG_MODULE_SCHEDULER=y
-# CONFIG_MODULE_SCHEDULER_CREATE_CONFIG is not set
-# CONFIG_MODULE_SCHEDULER_USE_TIMERS is not set
-# CONFIG_MODULE_SCHEDULER_TIMER0 is not set
-CONFIG_MODULE_SCHEDULER_MANUAL=y
-CONFIG_MODULE_TIME=y
-# CONFIG_MODULE_TIME_CREATE_CONFIG is not set
-# CONFIG_MODULE_TIME_EXT is not set
-# CONFIG_MODULE_TIME_EXT_CREATE_CONFIG is not set
-
-#
-# Communication modules
-#
-CONFIG_MODULE_UART=y
-# CONFIG_MODULE_UART_9BITS is not set
-CONFIG_MODULE_UART_CREATE_CONFIG=y
-CONFIG_MODULE_SPI=y
-CONFIG_MODULE_SPI_CREATE_CONFIG=y
-CONFIG_MODULE_I2C=y
-CONFIG_MODULE_I2C_MASTER=y
-# CONFIG_MODULE_I2C_MULTIMASTER is not set
-CONFIG_MODULE_I2C_CREATE_CONFIG=y
-# CONFIG_MODULE_MF2_CLIENT is not set
-# CONFIG_MODULE_MF2_CLIENT_USE_SCHEDULER is not set
-# CONFIG_MODULE_MF2_CLIENT_CREATE_CONFIG is not set
-# CONFIG_MODULE_MF2_SERVER is not set
-# CONFIG_MODULE_MF2_SERVER_CREATE_CONFIG is not set
-
-#
-# Hardware modules
-#
-CONFIG_MODULE_TIMER=y
-# CONFIG_MODULE_TIMER_CREATE_CONFIG is not set
-# CONFIG_MODULE_TIMER_DYNAMIC is not set
-# CONFIG_MODULE_PWM is not set
-# CONFIG_MODULE_PWM_CREATE_CONFIG is not set
-CONFIG_MODULE_PWM_NG=y
-CONFIG_MODULE_ADC=y
-CONFIG_MODULE_ADC_CREATE_CONFIG=y
-
-#
-# IHM modules
-#
-# CONFIG_MODULE_MENU is not set
-CONFIG_MODULE_VT100=y
-CONFIG_MODULE_RDLINE=y
-CONFIG_MODULE_RDLINE_CREATE_CONFIG=y
-CONFIG_MODULE_RDLINE_KILL_BUF=y
-CONFIG_MODULE_RDLINE_HISTORY=y
-CONFIG_MODULE_PARSE=y
-# CONFIG_MODULE_PARSE_NO_FLOAT is not set
-
-#
-# External devices modules
-#
-# CONFIG_MODULE_LCD is not set
-# CONFIG_MODULE_LCD_CREATE_CONFIG is not set
-# CONFIG_MODULE_MULTISERVO is not set
-# CONFIG_MODULE_MULTISERVO_CREATE_CONFIG is not set
-CONFIG_MODULE_AX12=y
-# CONFIG_MODULE_AX12_CREATE_CONFIG is not set
-
-#
-# Brushless motor drivers (you should enable pwm modules to see all)
-#
-# CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL is not set
-# CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL_CREATE_CONFIG is not set
-# CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL_DOUBLE is not set
-# CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL_DOUBLE_CREATE_CONFIG is not set
-
-#
-# Encoders (you need comm/spi for encoders_spi)
-#
-# CONFIG_MODULE_ENCODERS_MICROB is not set
-# CONFIG_MODULE_ENCODERS_MICROB_CREATE_CONFIG is not set
-# CONFIG_MODULE_ENCODERS_EIRBOT is not set
-# CONFIG_MODULE_ENCODERS_EIRBOT_CREATE_CONFIG is not set
-CONFIG_MODULE_ENCODERS_SPI=y
-CONFIG_MODULE_ENCODERS_SPI_CREATE_CONFIG=y
-
-#
-# Robot specific modules
-#
-CONFIG_MODULE_ROBOT_SYSTEM=y
-# CONFIG_MODULE_ROBOT_SYSTEM_MOT_AND_EXT is not set
-CONFIG_MODULE_POSITION_MANAGER=y
-CONFIG_MODULE_COMPENSATE_CENTRIFUGAL_FORCE=y
-CONFIG_MODULE_TRAJECTORY_MANAGER=y
-CONFIG_MODULE_BLOCKING_DETECTION_MANAGER=y
-CONFIG_MODULE_OBSTACLE_AVOIDANCE=y
-CONFIG_MODULE_OBSTACLE_AVOIDANCE_CREATE_CONFIG=y
-
-#
-# Control system modules
-#
-CONFIG_MODULE_CONTROL_SYSTEM_MANAGER=y
-CONFIG_MODULE_PID=y
-# CONFIG_MODULE_PID_CREATE_CONFIG is not set
-# CONFIG_MODULE_RAMP is not set
-CONFIG_MODULE_QUADRAMP=y
-# CONFIG_MODULE_QUADRAMP_DERIVATE is not set
-# CONFIG_MODULE_BIQUAD is not set
-
-#
-# Radio devices
-#
-# CONFIG_MODULE_CC2420 is not set
-# CONFIG_MODULE_CC2420_CREATE_CONFIG is not set
-
-#
-# Crypto modules
-#
-# CONFIG_MODULE_AES is not set
-# CONFIG_MODULE_AES_CTR is not set
-# CONFIG_MODULE_MD5 is not set
-# CONFIG_MODULE_MD5_HMAC is not set
-# CONFIG_MODULE_RC4 is not set
-
-#
-# Encodings modules
-#
-# CONFIG_MODULE_BASE64 is not set
-# CONFIG_MODULE_HAMMING is not set
-
-#
-# Debug modules
-#
-CONFIG_MODULE_DIAGNOSTIC=y
-CONFIG_MODULE_DIAGNOSTIC_CREATE_CONFIG=y
-CONFIG_MODULE_ERROR=y
-CONFIG_MODULE_ERROR_CREATE_CONFIG=y
-
-#
-# Programmer options
-#
-CONFIG_AVRDUDE=y
-# CONFIG_AVARICE is not set
-
-#
-# Avrdude
-#
-# CONFIG_AVRDUDE_PROG_FUTURELEC is not set
-# CONFIG_AVRDUDE_PROG_ABCMINI is not set
-# CONFIG_AVRDUDE_PROG_PICOWEB is not set
-# CONFIG_AVRDUDE_PROG_SP12 is not set
-# CONFIG_AVRDUDE_PROG_ALF is not set
-# CONFIG_AVRDUDE_PROG_BASCOM is not set
-# CONFIG_AVRDUDE_PROG_DT006 is not set
-# CONFIG_AVRDUDE_PROG_PONY_STK200 is not set
-CONFIG_AVRDUDE_PROG_STK200=y
-# CONFIG_AVRDUDE_PROG_PAVR is not set
-# CONFIG_AVRDUDE_PROG_BUTTERFLY is not set
-# CONFIG_AVRDUDE_PROG_AVR910 is not set
-# CONFIG_AVRDUDE_PROG_STK500 is not set
-# CONFIG_AVRDUDE_PROG_AVRISP is not set
-# CONFIG_AVRDUDE_PROG_BSD is not set
-# CONFIG_AVRDUDE_PROG_DAPA is not set
-# CONFIG_AVRDUDE_PROG_JTAG1 is not set
-# CONFIG_AVRDUDE_PROG_AVR109 is not set
-CONFIG_AVRDUDE_PORT="/dev/parport0"
-CONFIG_AVRDUDE_BAUDRATE=19200
-
-#
-# Avarice
-#
-CONFIG_AVARICE_PORT="/dev/ttyS0"
-CONFIG_AVARICE_DEBUG_PORT=1234
-CONFIG_AVARICE_PROG_MKI=y
-# CONFIG_AVARICE_PROG_MKII is not set
-# CONFIG_AVRDUDE_CHECK_SIGNATURE is not set
+++ /dev/null
-TARGET = main
-
-# repertoire des modules
-AVERSIVE_DIR = ../../..
-
-SRC = $(TARGET).c cmdline.c commands_ax12.c commands_gen.c
-SRC += commands_cs.c commands_mainboard.c commands_traj.c commands.c
-SRC += i2c_protocol.c sensor.c actuator.c cs.c ax12_user.c
-SRC += strat_utils.c strat_base.c strat_avoid.c strat.c
-SRC += strat_static_columns.c strat_lintel.c
-SRC += strat_column_disp.c strat_building.c strat_scan.c
-
-ASRC =
-
-CFLAGS += -Wall -Werror
-#CFLAGS += -DHOMOLOGATION
-LDFLAGS = -T ../common/avr6.x
-
-########################################
-
--include .aversive_conf
-include $(AVERSIVE_DIR)/mk/aversive_project.mk
-
-AVRDUDE_DELAY=50
-
-program_noerase: $(TARGET).$(FORMAT_EXTENSION) $(TARGET).eep
- echo $(AVRDUDE) -D -V $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) ;\
- $(AVRDUDE) -D -V $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) ;\
-