Commit from tof on branch b_tof (2008-06-14 10:02 CEST) ===============================
reset SW macro changed kbd updated aversive include/aversive.h 1.3.2.3 aversive modules/devices/ihm/kbd/kbd_matrix_4x4/doc/SCHEMA.DDB 1.1.2.2 aversive modules/devices/ihm/kbd/kbd_matrix_4x4_4port/kbd_matrix_4x4_4port.c 1.1.2.5 =========================== aversive/include/aversive.h (1.3.2.2 -> 1.3.2.3) =========================== @@ -15,7 +15,7 @@ * 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: aversive.h,v 1.3.2.2 2008-02-11 10:40:52 tof Exp $ + * Revision : $Id: aversive.h,v 1.3.2.3 2008-06-14 08:02:46 tof Exp $ * */ @@ -114,17 +114,41 @@ * use only if you need speed optimization ! * use ">>" instead for current operations */ -#define extr16_08_0(i) (*(char *)(&i)) // LSB of a 16bit -#define extr16_08_1(i) (*((char *)(&i)+1)) // MSB of a 16bit +#define extr16_08_0(i) (*(uint8_t *)(&i)) // LSB of a 16bit +#define extr16_08_1(i) (*((uint8_t *)(&i)+1)) // MSB of a 16bit + +#define extr32_16_0(i) (*(uint16_t *)(&i)) // LSB of a 32 bit +#define extr32_16_1(i) (* (((uint16_t *)(&i)) +1)) // MSB of a 32 bit +//#define extr32_16_23(i) (*((uint16_t *)((uint8_t *)(&i)+1))) // middle of a 32 bit // deprecated + +#define extr32_08_0(i) (*(uint8_t *)(&i)) // same stuff +#define extr32_08_1(i) (*((uint8_t *)(&i)+1)) +#define extr32_08_2(i) (*((uint8_t *)(&i)+2)) +#define extr32_08_3(i) (*((uint8_t *)(&i)+3)) + + + +#define extr64_33_0(i) (*(uint32_t *)(&i)) +#define extr64_32_1(i) (*((uint32_t *)(&i)+1)) + +#define extr64_16_0(i) (*(uint16_t *)(&i)) +#define extr64_16_1(i) (*((uint16_t *)(&i)+1)) +#define extr64_16_2(i) (*((uint16_t *)(&i)+2)) +#define extr64_16_3(i) (*((uint16_t *)(&i)+3)) + +#define extr64_08_0(i) (*(uint8_t *)(&i)) // same stuff +#define extr64_08_1(i) (*((uint8_t *)(&i)+1)) +#define extr64_08_2(i) (*((uint8_t *)(&i)+2)) +#define extr64_08_3(i) (*((uint8_t *)(&i)+3)) +#define extr64_08_4(i) (*((uint8_t *)(&i)+4)) +#define extr64_08_5(i) (*((uint8_t *)(&i)+5)) +#define extr64_08_6(i) (*((uint8_t *)(&i)+6)) +#define extr64_08_7(i) (*((uint8_t *)(&i)+7)) + + + + -#define extr32_16_0(i) (*(int *)(&i)) // LSB of a 32 bit -#define extr32_16_1(i) (* (((int *)(&i)) +1)) // MSB of a 32 bit -#define extr32_16_23(i) (*((int *)((char *)(&i)+1))) // middle of a 32 bit - -#define extr32_08_0(i) (*(char *)(&i)) // same stuff -#define extr32_08_1(i) (*((char *)(&i)+1)) -#define extr32_08_2(i) (*((char *)(&i)+2)) -#define extr32_08_3(i) (*((char *)(&i)+3)) /* a few asm utilities */ @@ -141,13 +165,18 @@ #ifndef sei #define sei() __asm__ __volatile__ ("SEI\n") /** enable interrupts */ #endif -/** simple software reset, but doesn't initialize the registers */ +/** software reset through WDT + this procedure is recommended by atmel + http://support.atmel.no/bin/customer?custSessionKey=&customerLang=en&noCookies=true&action=viewKbEntry&id=21 + */ #ifndef reset +#include <avr/io.h> +#include <avr/wdt.h> #define reset() \ do { \ - __asm__ __volatile__ ("ldi r30,0\n"); \ - __asm__ __volatile__ ("ldi r31,0\n"); \ - __asm__ __volatile__ ("ijmp\n"); \ + cli(); \ + wdt_enable(WDTO_30MS); \ + while(1) {}; \ } while(0) #endif ============================================================== aversive/modules/devices/ihm/kbd/kbd_matrix_4x4/doc/SCHEMA.DDB (1.1.2.1 -> 1.1.2.2) ============================================================== ============================================================================ aversive/modules/devices/ihm/kbd/kbd_matrix_4x4_4port/kbd_matrix_4x4_4port.c (1.1.2.4 -> 1.1.2.5) ============================================================================ @@ -15,7 +15,7 @@ * 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: kbd_matrix_4x4_4port.c,v 1.1.2.4 2008-03-16 15:12:49 tof Exp $ + * Revision : $Id: kbd_matrix_4x4_4port.c,v 1.1.2.5 2008-06-14 08:03:09 tof Exp $ * */ @@ -224,10 +224,10 @@ // ! a l ordre, car si on mettait d abord le port a 1, on aurait une impulsion sur le port // meme chose + haut - if ((value & KBD_BIT2)!=0) + if ((value & (1<<KBD_BIT2))!=0) return 0; // no key pressed - value |= KBD_ROWS; // mise a 1 des bits de ligne, (inverse ensuite a 0, pour signifier ligne4) + value |= KBD_ROWS; // mise a 1 des bits de ligne, (inverse ensuite a 0, pour signifier ligne1) } _______________________________________________ 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