From 42163ae3d62642753899c389a7a1a42ae9bd68a9 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Tue, 3 May 2011 01:35:22 +0200 Subject: digital/avr/modules/math/geometry: fix const correctness --- digital/avr/modules/math/geometry/distance.c | 4 ++-- digital/avr/modules/math/geometry/distance.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'digital/avr/modules') diff --git a/digital/avr/modules/math/geometry/distance.c b/digital/avr/modules/math/geometry/distance.c index f8bb7c1f..38a5350c 100644 --- a/digital/avr/modules/math/geometry/distance.c +++ b/digital/avr/modules/math/geometry/distance.c @@ -29,7 +29,7 @@ #include "modules/math/fixed/fixed.h" int16_t -distance_point_point (vect_t *a, vect_t *b) +distance_point_point (const vect_t *a, const vect_t *b) { int32_t dx = b->x - a->x; int32_t dy = b->y - a->y; @@ -37,7 +37,7 @@ distance_point_point (vect_t *a, vect_t *b) } int16_t -distance_segment_point (vect_t *a, vect_t *b, vect_t *p) +distance_segment_point (const vect_t *a, const vect_t *b, const vect_t *p) { int16_t proj; /* The space is split in three regions delimited by the two parallel lines diff --git a/digital/avr/modules/math/geometry/distance.h b/digital/avr/modules/math/geometry/distance.h index c48c2226..049b84ce 100644 --- a/digital/avr/modules/math/geometry/distance.h +++ b/digital/avr/modules/math/geometry/distance.h @@ -29,13 +29,13 @@ /** Compute distance between two points. * - a, b: points. */ int16_t -distance_point_point (vect_t *a, vect_t *b); +distance_point_point (const vect_t *a, const vect_t *b); /** Compute distance between a segment and a point. * - a: segment first vertice. * - b: segment second vertice. * - p: point. */ int16_t -distance_segment_point (vect_t *a, vect_t *b, vect_t *p); +distance_segment_point (const vect_t *a, const vect_t *b, const vect_t *p); #endif /* distance_h */ -- cgit v1.2.3 From f490ee060442542df0d4abc082bdec6f295dbc38 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 5 May 2011 22:57:48 +0200 Subject: digital/avr: protect HOST which is defined for some AVR --- digital/avr/common/io.h | 4 ++++ digital/avr/modules/utils/utils.avr.h | 1 + 2 files changed, 5 insertions(+) (limited to 'digital/avr/modules') diff --git a/digital/avr/common/io.h b/digital/avr/common/io.h index 7f94f4e6..cf706e9c 100644 --- a/digital/avr/common/io.h +++ b/digital/avr/common/io.h @@ -36,6 +36,10 @@ /* SIGNAL is now ISR. */ # define ISR SIGNAL #endif +/* Some AVR includes define HOST! */ +#ifdef HOST +# undef HOST +#endif /** Saved interrupts state. */ typedef uint8_t intr_flags_t; diff --git a/digital/avr/modules/utils/utils.avr.h b/digital/avr/modules/utils/utils.avr.h index efe9eaa1..aa7421d2 100644 --- a/digital/avr/modules/utils/utils.avr.h +++ b/digital/avr/modules/utils/utils.avr.h @@ -25,6 +25,7 @@ * * }}} */ +#include "io.h" #include /** Helper macro to build register value. Call it like this:: -- cgit v1.2.3 From f40ae7cb90faff71daaebe3d4c011002339a3834 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 5 May 2011 23:09:19 +0200 Subject: digital/avr, digital/ai: add AT90USB1287 support --- digital/ai/src/utils/timer.avr.c | 13 +++++++++++-- digital/avr/modules/twi/twi_hard.avr.c | 6 +++++- digital/avr/modules/uart/uart.avr.c | 4 ++++ 3 files changed, 20 insertions(+), 3 deletions(-) (limited to 'digital/avr/modules') diff --git a/digital/ai/src/utils/timer.avr.c b/digital/ai/src/utils/timer.avr.c index b8756d88..63aa7bdc 100644 --- a/digital/ai/src/utils/timer.avr.c +++ b/digital/ai/src/utils/timer.avr.c @@ -39,8 +39,17 @@ timer_init (void) * -> Tov = 1 / Fov * Note: if you change the TCCR0 register value, please also update * TIMER_TC0_PRESCALER and TIMER_TC0_TOP. */ +#ifdef TCCR0 +# define TIFR_reg TIFR TCCR0 = regv (FOC0, WGM00, COM01, COM0, WGM01, CS02, CS01, CS00, 0, 0, 0, 0, 0, 1, 1, 0); +#else +# define TIFR_reg TIFR0 + TCCR0A = regv (COM0A1, COM0A0, COM0B1, COM0B0, 3, 2, WGM01, WGM00, + 0, 0, 0, 0, 0, 0, 0, 0); + TCCR0B = regv (FOC0A, FOC0B, 5, 4, WGM02, CS02, CS01, CS00, + 0, 0, 0, 0, 0, 1, 0, 0); +#endif } uint8_t @@ -49,11 +58,11 @@ timer_wait (void) /* Let's pretend we have reached overflow before calling this function. */ uint8_t count_before_ov = 1; /* Loop until an overflow of the timer occurs. */ - while (!(TIFR & _BV (TOV0))) + while (!(TIFR_reg & _BV (TOV0))) /* We have not reached overflow. */ count_before_ov = 0; /* Write 1 to clear overflow. */ - TIFR = _BV (TOV0); + TIFR_reg = _BV (TOV0); return count_before_ov; } diff --git a/digital/avr/modules/twi/twi_hard.avr.c b/digital/avr/modules/twi/twi_hard.avr.c index ff65d31e..8bd18d34 100644 --- a/digital/avr/modules/twi/twi_hard.avr.c +++ b/digital/avr/modules/twi/twi_hard.avr.c @@ -56,6 +56,10 @@ # if defined (__AVR_ATmega32__) # elif defined (__AVR_ATmega64__) # elif defined (__AVR_ATmega128__) +# elif defined (__AVR_AT90USB646__) +# elif defined (__AVR_AT90USB647__) +# elif defined (__AVR_AT90USB1286__) +# elif defined (__AVR_AT90USB1287__) # else # error "twi: not tested on this chip" # endif @@ -201,7 +205,7 @@ twi_master_wait (void) # endif /* AC_TWI_MASTER_ENABLE */ -SIGNAL (SIG_2WIRE_SERIAL) +SIGNAL (TWI_vect) { # if AC_TWI_SLAVE_ENABLE /** Slave work buffer. */ diff --git a/digital/avr/modules/uart/uart.avr.c b/digital/avr/modules/uart/uart.avr.c index e3ffb18c..359f9002 100644 --- a/digital/avr/modules/uart/uart.avr.c +++ b/digital/avr/modules/uart/uart.avr.c @@ -39,6 +39,10 @@ #elif defined (__AVR_ATmega64__) #elif defined (__AVR_ATmega128__) #elif defined (__AVR_AT90USB162__) +#elif defined (__AVR_AT90USB646__) +#elif defined (__AVR_AT90USB647__) +#elif defined (__AVR_AT90USB1286__) +#elif defined (__AVR_AT90USB1287__) #else # warning "uart: not tested on this chip" #endif -- cgit v1.2.3 From d32d259cbd5fcb8994d9f555a74a3fc2640d8ebe Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 5 May 2011 23:09:45 +0200 Subject: digital/avr/modules/uart: add baudrate error percent check --- digital/avr/modules/uart/uart.avr.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'digital/avr/modules') diff --git a/digital/avr/modules/uart/uart.avr.c b/digital/avr/modules/uart/uart.avr.c index 359f9002..689866ae 100644 --- a/digital/avr/modules/uart/uart.avr.c +++ b/digital/avr/modules/uart/uart.avr.c @@ -153,12 +153,18 @@ /* Baud rate error check. */ #define UBRR_VAL (AC_FREQ / 16 / AC_UART (BAUDRATE) - 1) #define BAUDRATE_VAL (AC_FREQ / 16 / (UBRR_VAL + 1)) +#define BAUDRATE_ERROR (BAUDRATE_VAL - AC_UART (BAUDRATE)) +#define BAUDRATE_ERROR_PCT (BAUDRATE_ERROR * 100 / AC_UART (BAUDRATE)) -#if BAUDRATE_VAL - AC_UART (BAUDRATE) > 2 +#if BAUDRATE_ERROR_PCT >= 2 +#warning "uart: baud rate error > 2 %" +#elif BAUDRATE_ERROR_PCT >= 1 +#warning "uart: baud rate error > 1 %" +#elif BAUDRATE_ERROR > 2 #warning "uart: baud rate error > 2" -#elif BAUDRATE_VAL - AC_UART (BAUDRATE) > 1 +#elif BAUDRATE_ERROR > 1 #warning "uart: baud rate error > 1" -#elif BAUDRATE_VAL - AC_UART (BAUDRATE) > 0 +#elif BAUDRATE_ERROR > 0 #warning "uart: baud rate error > 0" #endif -- cgit v1.2.3