X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fhw%2Fhw_lcd.h;h=e6657dd0c63835856ab67b886afe19f8600ec636;hb=c250b4c3248572246ca103b85148c29bcfef8732;hp=b7cf5f891a8ffa526d65559534a32607d20351a9;hpb=791e167e053bdd9250d34a9a5ccae6ccde4d6679;p=bertos.git diff --git a/bertos/hw/hw_lcd.h b/bertos/hw/hw_lcd.h index b7cf5f89..e6657dd0 100644 --- a/bertos/hw/hw_lcd.h +++ b/bertos/hw/hw_lcd.h @@ -26,137 +26,40 @@ * invalidate any other reasons why the executable file might be covered by * the GNU General Public License. * - * Copyright 2003, 2004, 2005 Develer S.r.l. (http://www.develer.com/) - * Copyright 2001 Bernardo Innocenti + * Copyright 2010 Develer S.r.l. (http://www.develer.com/) * * --> * - * \version $Id$ + * \brief Atmel SAM3N-EK testcase * - * \author Bernardo Innocenti - * \author Stefano Fedrigo - * - * \brief LCD low-level hardware macros + * \author Luca Ottaviano + * \author Daniele Basile */ #ifndef HW_LCD_H #define HW_LCD_H -#include -//#include +#warning FIXME: This is an example implementation, you must implement it + +#include #include -#include #include -#include /* BV() */ -#include - -#include -#include -#include +#define LCD_BACKLIGHT_MAX // Max backlight level +#define LCD_BACKLIGHT_PIN // Port C +#define LCD_SPICLOCK // Minimum cycle len = 80 ns according specs -/** - * \name LCD I/O pins/ports - * @{ - */ -#define LCD_RS BV(PG3) -#define LCD_RW BV(PG0) -#define LCD_E BV(PG2) -#define LCD_DB0 BV(PA0) -#define LCD_DB1 BV(PA1) -#define LCD_DB2 BV(PA2) -#define LCD_DB3 BV(PA3) -#define LCD_DB4 BV(PA4) -#define LCD_DB5 BV(PA5) -#define LCD_DB6 BV(PA6) -#define LCD_DB7 BV(PA7) -/*@}*/ -/** - * \name DB high nibble (DB[4-7]) - * @{ - */ -#define LCD_PORT PORTG -#define LCD_DB_PORT PORTA -#define LCD_PIN PING -#define LCD_DB_PIN PINA -#define LCD_DDR DDRG -#define LCD_DB_DDR DDRA - -#if CONFIG_LCD_4BIT - #define LCD_MASK (LCD_DB7 | LCD_DB6 | LCD_DB5 | LCD_DB4) - #define LCD_SHIFT 4 -#else - #define LCD_MASK (uint8_t)0xff - #define LCD_SHIFT 0 -#endif -/*@}*/ - -/** - * \name LCD bus control macros - * @{ - */ -#define LCD_CLR_RS (LCD_PORT &= ~LCD_RS) -#define LCD_SET_RS (LCD_PORT |= LCD_RS) -#define LCD_CLR_RD (LCD_PORT &= ~LCD_RW) -#define LCD_SET_RD (LCD_PORT |= LCD_RW) -#define LCD_CLR_E (LCD_PORT &= ~LCD_E) -#define LCD_SET_E (LCD_PORT |= LCD_E) +#define LCD_BACKLIGHT_LEVEL_UP() do { /* Implement me! */ } while(0) -#if CONFIG_LCD_4BIT - #define LCD_WRITE_H(x) (LCD_DB_PORT = (LCD_DB_PORT & ~LCD_MASK) | (((x) >> (4 - LCD_SHIFT)) & LCD_MASK)) - #define LCD_WRITE_L(x) (LCD_DB_PORT = (LCD_DB_PORT & ~LCD_MASK) | (((x) << LCD_SHIFT) & LCD_MASK)) - #define LCD_READ_H ((LCD_DB_PIN & LCD_MASK) >> (4 - LCD_SHIFT)) - #define LCD_READ_L ((LCD_DB_PIN & LCD_MASK) >> LCD_SHIFT) -#else - #define LCD_WRITE(x) (LCD_DB_PORT = (x)) - #define LCD_READ (LCD_DB_PIN) -#endif -/*@}*/ -/** Set data bus direction to output (write to display) */ -#define LCD_DB_OUT (LCD_DB_DDR |= LCD_MASK) - -/** Set data bus direction to input (read from display) */ -#define LCD_DB_IN (LCD_DB_DDR &= ~LCD_MASK) - -/** Delay for write (Enable pulse width, 220ns) */ -#define LCD_DELAY_WRITE \ - do { \ - NOP; \ - NOP; \ - NOP; \ - NOP; \ - NOP; \ - } while (0) - -/** Delay for read (Data ouput delay time, 120ns) */ -#define LCD_DELAY_READ \ - do { \ - NOP; \ - NOP; \ - NOP; \ - NOP; \ - } while (0) - - -INLINE void lcd_bus_init(void) +INLINE void lcd_setBacklight(uint8_t level) { - cpuflags_t flags; - IRQ_SAVE_DISABLE(flags); - - LCD_PORT = (LCD_PORT & ~(LCD_E | LCD_RW)) | LCD_RS; - LCD_DDR |= LCD_RS | LCD_RW | LCD_E; - - /* - * Data bus is in output state most of the time: - * LCD r/w functions assume it is left in output state - */ - LCD_DB_OUT; - - - IRQ_RESTORE(flags); + (void)level; + /* Implement me! */ } +#define LCD_BACKLIGHT_INIT() do { /* Implement me! */ } while(0) + #endif /* HW_LCD_H */