X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=examples%2Ftriface%2Fhw%2Fhw_sipo.h;h=87e5736a642d053c7bca384108dca06f9b3a27b9;hb=9a9d8e33e942f8a2af0828181203c4a1def62adb;hp=70136b529d539886806d161ebb37be9db5155d14;hpb=8899100e4654853ec4fb64d02ab165f2650a4535;p=bertos.git diff --git a/examples/triface/hw/hw_sipo.h b/examples/triface/hw/hw_sipo.h index 70136b52..87e5736a 100644 --- a/examples/triface/hw/hw_sipo.h +++ b/examples/triface/hw/hw_sipo.h @@ -26,7 +26,7 @@ * invalidate any other reasons why the executable file might be covered by * the GNU General Public License. * - * Copyright 2003, 2004, 2006 Develer S.r.l. (http://www.develer.com/) + * Copyright 2003, 2004, 2006, 2009 Develer S.r.l. (http://www.develer.com/) * Copyright 2000 Bernie Innocenti * * --> @@ -36,6 +36,7 @@ * * \version $Id$ * + * \author Andrea Grandi * \author Daniele Basile */ @@ -46,6 +47,19 @@ #include +/** + * Mapping sipo connection on board. + * See schematics for more info. + */ +typedef enum SipoMap +{ + TRIFACE_DOUT = 0, + + SIPO_CNT +} SipoMap; + + + //Set output pin for sipo #define SCK_OUT (DDRB |= BV(PB1)) // Shift register clock input pin #define SOUT_OUT (DDRB |= BV(PB2)) // Serial data input pin @@ -62,8 +76,8 @@ #define OE_LOW (PORTG &= BV(PG3)) /** - * Define the procedure to set one bit low/hight to - * serial input in sipo device. + * Define the macros needed to set the serial input bit of SIPO device + * low or high. */ #define SIPO_SI_HIGH() SOUT_OUT_HIGH #define SIPO_SI_LOW() SOUT_OUT_LOW @@ -72,8 +86,9 @@ * Drive pin to load the bit, presented in serial-in pin, * into sipo shift register. */ -#define SIPO_SI_CLOCK() \ +#define SIPO_SI_CLOCK(clk_pol) \ do{ \ + (void)clk_pol; \ SCK_HIGH; \ SCK_LOW; \ }while(0) @@ -81,8 +96,10 @@ /** * Clock the content of shift register to output. */ -#define SIPO_LOAD() \ +#define SIPO_LOAD(device, load_pol) \ do { \ + (void)device; \ + (void)load_pol; \ SLOAD_OUT_HIGH; \ SLOAD_OUT_LOW; \ }while(0) @@ -92,9 +109,34 @@ */ #define SIPO_ENABLE() OE_LOW; +/** + * Set logic level for load signal + */ +#define SIPO_SET_LD_LEVEL(device, load_pol) \ + do { \ + (void)device; \ + if(load_pol) \ + SLOAD_OUT_HIGH; \ + else \ + SLOAD_OUT_LOW; \ + } while (0) + + +/** + * Sel logic level for clock signal + */ +#define SIPO_SET_CLK_LEVEL(clock_pol) \ + do { \ + if(clock_pol) \ + SCK_HIGH; \ + else \ + SCK_LOW; \ + } while (0) + +#define SIPO_SET_SI_LEVEL() SIPO_SI_LOW() /** - * Do anything that needed to init sipo pins. + * Do everything needed in order to init the SIPO pins. */ #define SIPO_INIT_PIN() \ do { \