Commit from zer0 on branch b_zer0 (2007-06-17 21:28 CEST) ---------------------------------
add a comment for scheduler config aversive modules/base/scheduler/test/scheduler_config.h 1.4.10.6 aversive modules/base/scheduler/config/scheduler_config.h 1.1.10.7 ------------------------------------------------------- aversive/modules/base/scheduler/test/scheduler_config.h (1.4.10.5 -> 1.4.10.6) ------------------------------------------------------- *************** *** 15,21 **** * 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: scheduler_config.h,v 1.4.10.5 2007-06-14 16:29:51 zer0 Exp $ * */ --- 15,21 ---- * 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: scheduler_config.h,v 1.4.10.6 2007-06-17 19:28:03 zer0 Exp $ * */ *************** *** 41,48 **** values of SCHEDULER_CK and SCHEDULER_CLOCK_PRESCALER must also be coherent (TIMER0_PRESCALER_DIV_VALUE and VALUE) */ #else /* CONFIG_MODULE_SCHEDULER_USE_TIMERS */ #define SCHEDULER_CK TIMER0_PRESCALER_DIV_8 ! #define SCHEDULER_CLOCK_PRESCALER 8 /* must coherent with value above */ #endif /* CONFIG_MODULE_SCHEDULER_USE_TIMERS */ --- 41,52 ---- values of SCHEDULER_CK and SCHEDULER_CLOCK_PRESCALER must also be coherent (TIMER0_PRESCALER_DIV_VALUE and VALUE) */ #else /* CONFIG_MODULE_SCHEDULER_USE_TIMERS */ + + /* The 2 values below MUST be coherent: + * if SCHEDULER_CK = TIMER0_PRESCALER_DIV_x, then + * you must have SCHEDULER_CLOCK_PRESCALER = x too !!! */ #define SCHEDULER_CK TIMER0_PRESCALER_DIV_8 ! #define SCHEDULER_CLOCK_PRESCALER 8 #endif /* CONFIG_MODULE_SCHEDULER_USE_TIMERS */ --------------------------------------------------------- aversive/modules/base/scheduler/config/scheduler_config.h (1.1.10.6 -> 1.1.10.7) --------------------------------------------------------- *************** *** 15,21 **** * 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: scheduler_config.h,v 1.1.10.6 2007-06-14 16:29:51 zer0 Exp $ * */ --- 15,21 ---- * 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: scheduler_config.h,v 1.1.10.7 2007-06-17 19:28:03 zer0 Exp $ * */ *************** *** 41,48 **** values of SCHEDULER_CK and SCHEDULER_CLOCK_PRESCALER must also be coherent (TIMER0_PRESCALER_DIV_VALUE and VALUE) */ #else /* CONFIG_MODULE_SCHEDULER_USE_TIMERS */ #define SCHEDULER_CK TIMER0_PRESCALER_DIV_8 ! #define SCHEDULER_CLOCK_PRESCALER 8 /* must coherent with value above */ #endif /* CONFIG_MODULE_SCHEDULER_USE_TIMERS */ --- 41,52 ---- values of SCHEDULER_CK and SCHEDULER_CLOCK_PRESCALER must also be coherent (TIMER0_PRESCALER_DIV_VALUE and VALUE) */ #else /* CONFIG_MODULE_SCHEDULER_USE_TIMERS */ + + /* The 2 values below MUST be coherent: + * if SCHEDULER_CK = TIMER0_PRESCALER_DIV_x, then + * you must have SCHEDULER_CLOCK_PRESCALER = x too !!! */ #define SCHEDULER_CK TIMER0_PRESCALER_DIV_8 ! #define SCHEDULER_CLOCK_PRESCALER 8 #endif /* CONFIG_MODULE_SCHEDULER_USE_TIMERS */ Commit from zer0 on branch b_zer0 (2007-06-17 21:34 CEST) --------------------------------- Change macro to static inline funcs aversive modules/base/scheduler/scheduler.h 1.8.4.5 ------------------------------------------- aversive/modules/base/scheduler/scheduler.h (1.8.4.4 -> 1.8.4.5) ------------------------------------------- *************** *** 15,21 **** * 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: scheduler.h,v 1.8.4.4 2007-06-14 16:29:51 zer0 Exp $ * */ --- 15,21 ---- * 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: scheduler.h,v 1.8.4.5 2007-06-17 19:34:57 zer0 Exp $ * */ *************** *** 114,141 **** #define SCHEDULER_DEFAULT_PRIORITY 128 - #define scheduler_add_single_event_priority(f, data, period, prio) \ - scheduler_add_event(SCHEDULER_SINGLE, f, data, period, prio) - - #define scheduler_add_periodical_event_priority(f, data, period, prio) \ - scheduler_add_event(SCHEDULER_PERIODICAL, f, data, period, prio) - - #define scheduler_add_single_event(f, data, period) \ - scheduler_add_event(SCHEDULER_SINGLE, f, data, period, SCHEDULER_DEFAULT_PRIORITY) - - #define scheduler_add_periodical_event(f, data, period) \ - scheduler_add_event(SCHEDULER_PERIODICAL, f, data, period, SCHEDULER_DEFAULT_PRIORITY) /** Initialisation of the module */ void scheduler_init(void); /** ! * Adds an event to the event table. ! * Returns the id of the event on succes and -1 on error ! * You can use macro above for simpler use. */ int8_t scheduler_add_event(uint8_t unicity, void (*f)(void *), void * data, uint16_t period, uint8_t priority); /** * Dels an event from the table by its ID. If there is no event, * nothing is done. --- 114,163 ---- #define SCHEDULER_DEFAULT_PRIORITY 128 /** Initialisation of the module */ void scheduler_init(void); /** ! * Add an event to the event table. ! * Return the id of the event on succes and -1 on error ! * You can use static inline funcs below for simpler use. */ int8_t scheduler_add_event(uint8_t unicity, void (*f)(void *), void * data, uint16_t period, uint8_t priority); + + /** + * Add a single event to the event table, specifying the priority + */ + static inline int8_t scheduler_add_single_event_priority(void (*f)(void *), void * data, uint16_t period, uint8_t priority) + { + return scheduler_add_event(SCHEDULER_SINGLE, f, data, period, priority); + } + + /** + * Add a periodical event to the event table, specifying the priority + */ + static inline int8_t scheduler_add_periodical_event_priority(void (*f)(void *), void * data, uint16_t period, uint8_t priority) + { + return scheduler_add_event(SCHEDULER_PERIODICAL, f, data, period, priority); + } + + /** + * Add a single event to the event table, with the default priority + */ + static inline int8_t scheduler_add_single_event(void (*f)(void *), void * data, uint16_t period) + { + return scheduler_add_event(SCHEDULER_SINGLE, f, data, period, SCHEDULER_DEFAULT_PRIORITY); + } + + /** + * Add a periodical event to the event table, with the default priority + */ + static inline int8_t scheduler_add_periodical_event(void (*f)(void *), void * data, uint16_t period) + { + return scheduler_add_event(SCHEDULER_PERIODICAL, f, data, period, SCHEDULER_DEFAULT_PRIORITY); + } + /** * Dels an event from the table by its ID. If there is no event, * nothing is done. Commit from zer0 on branch b_zer0 (2007-06-17 23:23 CEST) --------------------------------- Use pointer args instead of 64bits struct arg. aversive modules/devices/robot/robot_system/robot_system.c 1.6.4.3 aversive modules/devices/robot/robot_system/angle_distance.h 1.3.4.3 aversive modules/devices/robot/robot_system/angle_distance.c 1.4.4.2 ---------------------------------------------------------- aversive/modules/devices/robot/robot_system/robot_system.c (1.6.4.2 -> 1.6.4.3) ---------------------------------------------------------- *************** *** 15,21 **** * 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.2 2007-05-23 17:18:13 zer0 Exp $ * */ --- 15,21 ---- * 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.3 2007-06-17 21:23:40 zer0 Exp $ * */ *************** *** 220,226 **** IRQ_UNLOCK(flags); p.angle = angle; ! w = rs_get_wheels_from_polar(p); SAFE_SETPWM(rs->left_pwm, rs->left_pwm_param, w.left); SAFE_SETPWM(rs->right_pwm, rs->right_pwm_param, w.right); --- 220,226 ---- 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); *************** *** 243,249 **** IRQ_UNLOCK(flags); p.distance = distance; ! w = rs_get_wheels_from_polar(p); SAFE_SETPWM(rs->left_pwm, rs->left_pwm_param, w.left); SAFE_SETPWM(rs->right_pwm, rs->right_pwm_param, w.right); --- 243,249 ---- 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); *************** *** 459,470 **** 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); ! pext = rs_get_polar_from_wheels(wext); ! pmot = rs_get_polar_from_wheels(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); ! wext = rs_get_wheels_from_polar(pext); /* update from external encoders */ if( rs->flags & RS_USE_EXT ) { --- 459,470 ---- 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); ! rs_get_polar_from_wheels(&pext, &wext); ! 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); /* update from external encoders */ if( rs->flags & RS_USE_EXT ) { ------------------------------------------------------------ aversive/modules/devices/robot/robot_system/angle_distance.h (1.3.4.2 -> 1.3.4.3) ------------------------------------------------------------ *************** *** 15,21 **** * 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: angle_distance.h,v 1.3.4.2 2007-05-23 17:18:13 zer0 Exp $ * */ --- 15,21 ---- * 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: angle_distance.h,v 1.3.4.3 2007-06-17 21:23:41 zer0 Exp $ * */ *************** *** 39,49 **** * convert the values of wheels encoders (left, right) into (distance, * angle) */ ! struct rs_polar rs_get_polar_from_wheels(struct rs_wheels w); /** * convert (distance, angle) into (left, right) */ ! struct rs_wheels rs_get_wheels_from_polar(struct rs_polar p); #endif --- 39,49 ---- * convert the values of wheels encoders (left, right) into (distance, * angle) */ ! void rs_get_polar_from_wheels(struct rs_polar * p_dst, struct rs_wheels * w_src); /** * convert (distance, angle) into (left, right) */ ! void rs_get_wheels_from_polar(struct rs_wheels * w_dst, struct rs_polar * p_src); #endif ------------------------------------------------------------ aversive/modules/devices/robot/robot_system/angle_distance.c (1.4.4.1 -> 1.4.4.2) ------------------------------------------------------------ *************** *** 15,21 **** * 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: angle_distance.c,v 1.4.4.1 2006-11-26 21:06:05 zer0 Exp $ * */ --- 15,21 ---- * 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: angle_distance.c,v 1.4.4.2 2007-06-17 21:23:41 zer0 Exp $ * */ *************** *** 25,51 **** * convert the values of wheels encoders (left, right) into (distance, * angle) */ ! struct rs_polar rs_get_polar_from_wheels(struct rs_wheels w) { ! struct rs_polar p; ! ! p.distance = w.right + w.left; ! p.angle = w.right - w.left; ! ! return p; } /** * convert (distance, angle) into (left, right) */ ! struct rs_wheels rs_get_wheels_from_polar(struct rs_polar p) { ! struct rs_wheels w; ! ! w.left = (p.distance - p.angle) / 2; ! w.right = (p.distance + p.angle) / 2; ! ! return w; } - --- 25,42 ---- * convert the values of wheels encoders (left, right) into (distance, * angle) */ ! void rs_get_polar_from_wheels(struct rs_polar * p_dst, struct rs_wheels * w_src) { ! p_dst->distance = w_src->right + w_src->left; ! p_dst->angle = w_src->right - w_src->left; } /** * convert (distance, angle) into (left, right) */ ! void rs_get_wheels_from_polar(struct rs_wheels * w_dst, struct rs_polar * p_src) { ! w_dst->left = (p_src->distance - p_src->angle) / 2; ! w_dst->right = (p_src->distance + p_src->angle) / 2; } _______________________________________________ Avr-list mailing list Avr-list@droids-corp.org CVSWEB : http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive WIKI : http://wiki.droids-corp.org/index.php/Aversive DOXYGEN : http://zer0.droids-corp.org/doxygen_aversive/html/ BUGZILLA : http://bugzilla.droids-corp.org COMMIT LOGS : http://zer0.droids-corp.org/aversive_commitlog