X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=boards%2Fsam3n-ek%2Fhw%2Fhw_lcd.h;fp=boards%2Fsam3n-ek%2Fhw%2Fhw_lcd.h;h=89b4fa2ad5e920e0c4f8e44bf073da4d065e5e15;hb=35b2de49e2b372c66e61457c3ec007c777e2393b;hp=8aaacee9e07ec4378c4ed0924ba91c98917b8c45;hpb=52c1b9a7bc7bb6d0d5df301de55d86820e9947c8;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 */