combine on/off with refresh
This commit is contained in:
parent
78e2f7bb1c
commit
f5f4fa55eb
18
lib/vfd.c
18
lib/vfd.c
@ -399,8 +399,7 @@ void vfd_matrix(uint8_t nb, char c)
|
||||
}
|
||||
}
|
||||
|
||||
/* clear VFD display
|
||||
* the data has to be transmitted separately */
|
||||
/* clear VFD display */
|
||||
void vfd_clear(void)
|
||||
{
|
||||
for (uint8_t i=0; i<LENGTH(driver_data); i++) {
|
||||
@ -410,8 +409,7 @@ void vfd_clear(void)
|
||||
}
|
||||
}
|
||||
|
||||
/* test VFD display (light up all anodes)
|
||||
* the data has to be transmitted separately */
|
||||
/* test VFD display (light up all anodes) */
|
||||
void vfd_test(void)
|
||||
{
|
||||
for (uint8_t i=0; i<LENGTH(driver_data); i++) {
|
||||
@ -425,23 +423,13 @@ void vfd_test(void)
|
||||
void vfd_on(void)
|
||||
{
|
||||
gpio_clear(VFD_PORT, VFD_STR); // enable HV output
|
||||
timer_enable_counter(VFD_TIMER); // start timer to periodically output that to the parts
|
||||
}
|
||||
|
||||
/* switch VFD display off */
|
||||
void vfd_off(void)
|
||||
{
|
||||
gpio_set(VFD_PORT, VFD_STR); // disable HV output
|
||||
}
|
||||
|
||||
/* output data on the parts */
|
||||
void vfd_refresh_on(void)
|
||||
{
|
||||
timer_enable_counter(VFD_TIMER); // start timer to periodically output that to the parts
|
||||
}
|
||||
|
||||
/* stop outputting data on the parts*/
|
||||
void vfd_refresh_off(void)
|
||||
{
|
||||
timer_disable_counter(VFD_TIMER); // stop timer to periodically output that to the parts
|
||||
}
|
||||
|
||||
|
14
lib/vfd.h
14
lib/vfd.h
@ -21,29 +21,19 @@
|
||||
#define VFD_DIGITS 10
|
||||
#define VFD_MATRIX 12
|
||||
|
||||
/* all digits and matrix values */
|
||||
extern char vfd_digits[VFD_DIGITS];
|
||||
extern char vfd_matrixs[VFD_MATRIX];
|
||||
|
||||
/* set digit <nb> to ASCII character <c>
|
||||
* use the MSB of <c> to enable the dot */
|
||||
void vfd_digit(uint8_t nb, char c);
|
||||
/* set dot matrix <nb> to ASCII character <c>
|
||||
* non ASCII characters are used for pictures */
|
||||
void vfd_matrix(uint8_t nb, char c);
|
||||
/* clear VFD display
|
||||
* the data has to be transmitted separately */
|
||||
/* clear VFD display */
|
||||
void vfd_clear(void);
|
||||
/* test VFD display (light up all anodes)
|
||||
* the data has to be transmitted separately */
|
||||
/* test VFD display (light up all anodes) */
|
||||
void vfd_test(void);
|
||||
/* transmit every digit and matrix */
|
||||
void vfd_on(void);
|
||||
/* switch VFD display off */
|
||||
void vfd_off(void);
|
||||
/* output data on the parts */
|
||||
void vfd_refresh_on(void);
|
||||
/* stop outputing data on the parts*/
|
||||
void vfd_refresh_off(void);
|
||||
/* setup VFD */
|
||||
void vfd_setup(void);
|
||||
|
20
main.c
20
main.c
@ -79,19 +79,17 @@ int main(void)
|
||||
|
||||
|
||||
vfd_on(); // switch on VFD
|
||||
vfd_refresh_on();
|
||||
vfd_test();
|
||||
for (uint32_t i = 0; i < 0x800000; i++) {
|
||||
vfd_test(); // show all anodes
|
||||
for (uint32_t i = 0; i < 0x800000; i++) { // show for a bit of time
|
||||
__asm__("nop");
|
||||
}
|
||||
vfd_clear();
|
||||
vfd_clear(); // clear all data
|
||||
|
||||
bool vfd_flag = false;
|
||||
bool refresh = true;
|
||||
for (uint8_t i=0; i<LENGTH(vfd_digits); i++) {
|
||||
for (uint8_t i=0; i<VFD_DIGITS; i++) {
|
||||
vfd_digit(i,'0'+i);
|
||||
}
|
||||
for (uint8_t i=0; i<LENGTH(vfd_matrixs); i++) {
|
||||
for (uint8_t i=0; i<VFD_MATRIX; i++) {
|
||||
vfd_matrix(i,'A'+i);
|
||||
}
|
||||
while (true) {
|
||||
@ -106,14 +104,6 @@ int main(void)
|
||||
while (vfd_flag) {
|
||||
vfd_flag = false;
|
||||
gpio_toggle(LED_PORT, LED_PIN); // toggle LED
|
||||
if (refresh) {
|
||||
printf("on\n");
|
||||
vfd_refresh_on();
|
||||
} else {
|
||||
printf("off\n");
|
||||
vfd_refresh_off();
|
||||
}
|
||||
refresh = !refresh;
|
||||
}
|
||||
__WFI(); // go to sleep
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user