Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Stefan Haun
firmware
Commits
ec6e2d16
Commit
ec6e2d16
authored
Aug 22, 2019
by
Manuel Kasten
Committed by
schneider
Aug 22, 2019
Browse files
control display backlight brightness (epic part)
parent
9f9fd2a9
Changes
5
Hide whitespace changes
Inline
Side-by-side
epicardium/epicardium.h
View file @
ec6e2d16
...
...
@@ -53,6 +53,7 @@ typedef _Bool bool;
#define API_DISP_CIRC 0x27
#define API_DISP_PIXEL 0x28
#define API_DISP_FRAMEBUFFER 0x29
#define API_DISP_BACKLIGHT 0x2a
/* API_BATTERY_VOLTAGE 0x30 */
#define API_BATTERY_CURRENT 0x31
...
...
@@ -1333,6 +1334,17 @@ API(API_DISP_CIRC,
API
(
API_DISP_FRAMEBUFFER
,
int
epic_disp_framebuffer
(
union
disp_framebuffer
*
fb
));
/**
* Set the backlight brightness value
*
* :param brightness: brightness from 0 - 1000
* :return: ``0`` on success or negative value in case of an error:
*
* - ``-EBUSY``: Display was already locked from another task.
*/
API
(
API_DISP_BACKLIGHT
,
int
epic_disp_backlight
(
uint16_t
brightness
));
/**
* Start continuous readout of the light sensor. Will read light level
* at preconfigured interval and make it available via `epic_light_sensor_get()`.
...
...
epicardium/modules/display.c
View file @
ec6e2d16
...
...
@@ -171,6 +171,17 @@ int epic_disp_framebuffer(union disp_framebuffer *fb)
return
0
;
}
int
epic_disp_backlight
(
uint16_t
brightness
)
{
int
cl
=
check_lock
();
if
(
cl
<
0
)
{
return
cl
;
}
LCD_SetBacklight
(
brightness
);
return
0
;
}
int
epic_disp_open
()
{
TaskHandle_t
task
=
xTaskGetCurrentTaskHandle
();
...
...
lib/card10/display.c
View file @
ec6e2d16
...
...
@@ -4,77 +4,19 @@
#include
"textbuffer.h"
#include
"gpio.h"
#include
"tmr.h"
#include
"portexpander.h"
#include
"MAX77650-Arduino-Library.h"
#include
<stdint.h>
#include
<stdio.h>
/***** Globals *****/
const
gpio_cfg_t
DEV_DC_PIN
=
{
PORT_1
,
PIN_6
,
GPIO_FUNC_OUT
,
GPIO_PAD_NONE
};
struct
gfx_region
display_screen
;
struct
txt_buffer
display_textb
;
// Parameters for PWM output
#define PORT_PWM PORT_0 // port
#define PIN_PWM PIN_28 // pin
#define FREQ 200 // (Hz)
//#define DUTY_CYCLE 75 // (%)
#define DUTY_CYCLE 20 // (%)
#define PWM_TIMER MXC_TMR4 // must change PORT_PWM and PIN_PWM if changed
/***** Functions *****/
void
PWM_Output
(
void
)
{
// Declare variables
gpio_cfg_t
gpio_pwm
;
// to configure GPIO
tmr_cfg_t
tmr
;
// to congigure timer
tmr_pwm_cfg_t
tmr_pwm
;
// for configure PWM
unsigned
int
period_ticks
=
PeripheralClock
/
FREQ
;
unsigned
int
duty_ticks
=
period_ticks
*
DUTY_CYCLE
/
100
;
// Congfigure GPIO port and pin for PWM
gpio_pwm
.
func
=
GPIO_FUNC_ALT4
;
gpio_pwm
.
port
=
PORT_PWM
;
gpio_pwm
.
mask
=
PIN_PWM
;
gpio_pwm
.
pad
=
GPIO_PAD_PULL_DOWN
;
if
(
GPIO_Config
(
&
gpio_pwm
)
!=
E_NO_ERROR
)
{
printf
(
"Failed GPIO_Config for pwm.
\n
"
);
}
/*
Steps for configuring a timer for PWM mode:
1. Disable the timer
2. Set the prescale value
3. Configure the timer for PWM mode
4. Set polarity, pwm parameters
5. Enable Timer
*/
TMR_Disable
(
PWM_TIMER
);
TMR_Init
(
PWM_TIMER
,
TMR_PRES_1
,
0
);
tmr
.
mode
=
TMR_MODE_PWM
;
tmr
.
cmp_cnt
=
period_ticks
;
tmr
.
pol
=
0
;
TMR_Config
(
PWM_TIMER
,
&
tmr
);
tmr_pwm
.
pol
=
1
;
tmr_pwm
.
per_cnt
=
period_ticks
;
tmr_pwm
.
duty_cnt
=
duty_ticks
;
if
(
TMR_PWMConfig
(
PWM_TIMER
,
&
tmr_pwm
)
!=
E_NO_ERROR
)
{
printf
(
"Failed TMR_PWMConfig.
\n
"
);
}
TMR_Enable
(
PWM_TIMER
);
printf
(
"PWM started.
\n
"
);
}
void
display_set_reset_pin
(
uint8_t
state
)
{
if
(
!
portexpander_detected
())
{
...
...
@@ -95,8 +37,7 @@ void display_init(void)
GPIO_Config
(
&
DEV_DC_PIN
);
PWM_Output
();
LCD_SetBacklight
(
500
);
LCD_SetBacklight
(
200
);
LCD_Init
();
display_screen
=
gfx_screen
(
LCD_framebuffer
());
...
...
lib/gfx/GUI_DEV/DEV_Config.c
View file @
ec6e2d16
...
...
@@ -58,3 +58,58 @@ void lcd_write(uint8_t *data, int size)
SPI_MasterTrans
(
SPI
,
&
req
);
}
// Parameters for PWM output
#define PORT_PWM PORT_0 // port
#define PIN_PWM PIN_28 // pin
#define FREQ 200 // (Hz)
#define PWM_TIMER MXC_TMR4 // must change PORT_PWM and PIN_PWM if changed
void
DEV_Set_BL
(
uint16_t
_Value
)
{
// Declare variables
gpio_cfg_t
gpio_pwm
;
// to configure GPIO
tmr_cfg_t
tmr
;
// to congigure timer
tmr_pwm_cfg_t
tmr_pwm
;
// for configure PWM
unsigned
int
period_ticks
=
PeripheralClock
/
FREQ
;
unsigned
int
duty_ticks
=
period_ticks
*
_Value
/
1000
;
// Congfigure GPIO port and pin for PWM
gpio_pwm
.
func
=
GPIO_FUNC_ALT4
;
gpio_pwm
.
port
=
PORT_PWM
;
gpio_pwm
.
mask
=
PIN_PWM
;
gpio_pwm
.
pad
=
GPIO_PAD_PULL_DOWN
;
if
(
GPIO_Config
(
&
gpio_pwm
)
!=
E_NO_ERROR
)
{
printf
(
"Failed GPIO_Config for pwm.
\n
"
);
}
/*
Steps for configuring a timer for PWM mode:
1. Disable the timer
2. Set the prescale value
3. Configure the timer for PWM mode
4. Set polarity, pwm parameters
5. Enable Timer
*/
TMR_Disable
(
PWM_TIMER
);
TMR_Init
(
PWM_TIMER
,
TMR_PRES_1
,
0
);
tmr
.
mode
=
TMR_MODE_PWM
;
tmr
.
cmp_cnt
=
period_ticks
;
tmr
.
pol
=
0
;
TMR_Config
(
PWM_TIMER
,
&
tmr
);
tmr_pwm
.
pol
=
1
;
tmr_pwm
.
per_cnt
=
period_ticks
;
tmr_pwm
.
duty_cnt
=
duty_ticks
;
if
(
TMR_PWMConfig
(
PWM_TIMER
,
&
tmr_pwm
)
!=
E_NO_ERROR
)
{
printf
(
"Failed TMR_PWMConfig.
\n
"
);
}
TMR_Enable
(
PWM_TIMER
);
printf
(
"PWM started.
\n
"
);
}
lib/gfx/GUI_DEV/DEV_Config.h
View file @
ec6e2d16
...
...
@@ -34,6 +34,7 @@
#include
"Debug.h"
#include
"spi.h"
#include
"tmr.h"
#include
"tmr_utils.h"
#include
<stdint.h>
#include
<stdio.h>
...
...
@@ -72,7 +73,7 @@ void display_set_reset_pin(uint8_t state);
**/
//#define DEV_Set_BL(_Value) DEV_BL_PIN= _Value
#define
DEV_Set_BL(_Value)
void
DEV_Set_BL
(
uint16_t
_Value
)
;
/*-----------------------------------------------------------------------------*/
#endif
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment