X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=boards%2Fsam3n-ek%2Fhw%2Fhw_lcd.h;h=89b4fa2ad5e920e0c4f8e44bf073da4d065e5e15;hb=f6583713e24d19800f93733fb5adba6a8408b6f5;hp=8aaacee9e07ec4378c4ed0924ba91c98917b8c45;hpb=42c64eab961cf2370a2e75358ff5e77162544b7d;p=bertos.git diff --git a/boards/sam3n-ek/hw/hw_lcd.h b/boards/sam3n-ek/hw/hw_lcd.h index 8aaacee9..89b4fa2a 100644 --- a/boards/sam3n-ek/hw/hw_lcd.h +++ b/boards/sam3n-ek/hw/hw_lcd.h @@ -33,27 +33,46 @@ * \brief Atmel SAM3N-EK testcase * * \author Luca Ottaviano + * \author Daniele Basile */ +#ifndef HW_LCD_H +#define HW_LCD_H + +#include + +#include +#include + #define LCD_BACKLIGHT_MAX 15 #define LCD_BACKLIGHT_PIN BV(13) // Port C #define LCD_SPICLOCK 12000000 // Minimum cycle len = 80 ns according specs -#define LCD_BACKLIGHT_INIT() \ - do { \ - PIOC_OER = LCD_BACKLIGHT_PIN; \ - PIOC_SODR = LCD_BACKLIGHT_PIN; \ - PIOC_PER = LCD_BACKLIGHT_PIN; \ - } while(0) #define LCD_BACKLIGHT_LEVEL_UP() \ do \ { \ PIOC_CODR = LCD_BACKLIGHT_PIN; \ - PIOC_CODR = LCD_BACKLIGHT_PIN; \ - PIOC_CODR = LCD_BACKLIGHT_PIN; \ - PIOC_SODR = LCD_BACKLIGHT_PIN; \ + NOP;NOP;NOP;NOP;NOP; \ PIOC_SODR = LCD_BACKLIGHT_PIN; \ + NOP;NOP;NOP;NOP;NOP; \ + } while(0) + + +INLINE void lcd_setBacklight(uint8_t level) +{ + if (level > LCD_BACKLIGHT_MAX) + level = LCD_BACKLIGHT_MAX; + + for (uint8_t i = level; i <= LCD_BACKLIGHT_MAX; i++) + LCD_BACKLIGHT_LEVEL_UP(); +} + +#define LCD_BACKLIGHT_INIT() \ + do { \ + PIOC_OER = LCD_BACKLIGHT_PIN; \ PIOC_SODR = LCD_BACKLIGHT_PIN; \ + PIOC_PER = LCD_BACKLIGHT_PIN; \ } while(0) +#endif /* HW_LCD_H */