Replace led_hour (etc.) globals with TIME struct
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
@@ -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
11
firmware/time.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#ifndef __TIME_H__
|
||||||
|
#define __TIME_H__
|
||||||
|
|
||||||
|
struct TIME
|
||||||
|
{
|
||||||
|
uint8_t hour;
|
||||||
|
uint8_t minute;
|
||||||
|
uint8_t second;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user