Replace led_hour (etc.) globals with TIME struct

This commit is contained in:
2020-11-18 09:00:09 +01:00
parent b9c0be68d8
commit ed730b8dc3
6 changed files with 28 additions and 31 deletions

View File

@@ -9,20 +9,20 @@ uint8_t k_inc_hour, k_inc_minute, k_inc_second, k_inc_brightness;
void inc_hour(void) void inc_hour(void)
{ {
led_hour = (led_hour + 1) % 24; led_display.hour = (led_display.hour + 1) % 24;
rtc_set_time(HOUR, led_hour); rtc_set_time(HOUR, led_display.hour);
} }
void inc_minute(void) void inc_minute(void)
{ {
led_minute = (led_minute + 1) % 60; led_display.minute = (led_display.minute + 1) % 60;
rtc_set_time(MINUTE, led_minute); rtc_set_time(MINUTE, led_display.minute);
} }
void inc_second(void) void inc_second(void)
{ {
led_second = (led_second + 1) % 60; led_display.second = (led_display.second + 1) % 60;
rtc_set_time(SECOND, led_second); rtc_set_time(SECOND, led_display.second);
} }
void inc_brightness(void) void inc_brightness(void)

View File

@@ -3,9 +3,7 @@
#include "config.h" #include "config.h"
#include "led.h" #include "led.h"
volatile uint8_t led_hour; volatile struct TIME led_display = { 0, 0, 0 };
volatile uint8_t led_minute;
volatile uint8_t led_second;
void led_init(void) void led_init(void)
{ {
@@ -31,15 +29,15 @@ ISR(TIMER0_OVF_vect)
switch(curr_anode) switch(curr_anode)
{ {
case 1: case 1:
LED_PORT = ~led_hour; LED_PORT = ~led_display.hour;
ANODES_PORT = ram_cfg.led_brightness >= pwm_counter ? ~HOUR_ANODE : 0xFF; ANODES_PORT = ram_cfg.led_brightness >= pwm_counter ? ~HOUR_ANODE : 0xFF;
break; break;
case 2: case 2:
LED_PORT = ~led_minute; LED_PORT = ~led_display.minute;
ANODES_PORT = ram_cfg.led_brightness >= pwm_counter ? ~MINUTE_ANODE : 0xFF; ANODES_PORT = ram_cfg.led_brightness >= pwm_counter ? ~MINUTE_ANODE : 0xFF;
break; break;
case 4: case 4:
LED_PORT = ~led_second; LED_PORT = ~led_display.second;
ANODES_PORT = ram_cfg.led_brightness >= pwm_counter ? ~SECOND_ANODE : 0xFF; ANODES_PORT = ram_cfg.led_brightness >= pwm_counter ? ~SECOND_ANODE : 0xFF;
break; break;
} }

View File

@@ -1,6 +1,8 @@
#ifndef __LED_H__ #ifndef __LED_H__
#define __LED_H__ #define __LED_H__
#include "time.h"
#define LED_PORT PORTA #define LED_PORT PORTA
#define LED_DIR DDRA #define LED_DIR DDRA
@@ -10,9 +12,7 @@
#define MINUTE_ANODE (1<<PD6) #define MINUTE_ANODE (1<<PD6)
#define SECOND_ANODE (1<<PD7) #define SECOND_ANODE (1<<PD7)
extern volatile uint8_t led_hour; extern volatile struct TIME led_display;
extern volatile uint8_t led_minute;
extern volatile uint8_t led_second;
void led_init(void); void led_init(void);

View File

@@ -3,6 +3,7 @@
#include "config.h" #include "config.h"
#include "keyboard.h" #include "keyboard.h"
#include "ptimer.h" #include "ptimer.h"
#include "time.h"
#include "i2c.h" #include "i2c.h"
#include "rtc.h" #include "rtc.h"
#include "led.h" #include "led.h"
@@ -20,10 +21,6 @@ int main()
sei(); sei();
led_hour = 0;
led_minute = 0;
led_second = 0;
while(1) while(1)
{ {
keyboard_handle_input(); keyboard_handle_input();
@@ -32,8 +29,5 @@ int main()
ISR(INT0_vect) ISR(INT0_vect)
{ {
struct TIME curr_time = rtc_read_time(); led_display = rtc_read_time();
led_hour = curr_time.hour;
led_minute = curr_time.minute;
led_second = curr_time.second;
} }

View File

@@ -1,6 +1,8 @@
#ifndef __RTC_H__ #ifndef __RTC_H__
#define __RTC_H__ #define __RTC_H__
#include "time.h"
#define RTC_I2C_ADDR 0xA2 #define RTC_I2C_ADDR 0xA2
#define SECOND 0x02 #define SECOND 0x02
@@ -14,17 +16,9 @@
#define INT1_DIR DDRD #define INT1_DIR DDRD
#define INT1_PIN PD3 #define INT1_PIN PD3
#define DEC_2_BCD(dec) ((((dec) / 10) << 4) | ((dec) % 10)) #define DEC_2_BCD(dec) ((((dec) / 10) << 4) | ((dec) % 10))
#define BCD_2_DEC(bcd) (((((bcd) >> 4) & 0x0F) * 10) + ((bcd) & 0x0F)) #define BCD_2_DEC(bcd) (((((bcd) >> 4) & 0x0F) * 10) + ((bcd) & 0x0F))
struct TIME
{
uint8_t hour;
uint8_t minute;
uint8_t second;
};
void rtc_int0_init(void); void rtc_int0_init(void);
void rtc_int1_init(void); void rtc_int1_init(void);
void rtc_set_time(uint8_t part, uint8_t value); void rtc_set_time(uint8_t part, uint8_t value);

11
firmware/time.h Normal file
View File

@@ -0,0 +1,11 @@
#ifndef __TIME_H__
#define __TIME_H__
struct TIME
{
uint8_t hour;
uint8_t minute;
uint8_t second;
};
#endif