Utilities. More...

Go to the source code of this file.
Defines | |
| #define | BV2(a, b) (_BV(a)|_BV(b)) |
| #define | BV3(a, b, c) (_BV(a)|_BV(b)|_BV(c)) |
| #define | BV4(a, b, c, d) (_BV(a)|_BV(b)|_BV(c)|_BV(d)) |
| #define | BV5(a, b, c, d, e) (_BV(a)|_BV(b)|_BV(c)|_BV(d)|_BV(e)) |
| #define | BV6(a, b, c, d, e, f) (_BV(a)|_BV(b)|_BV(c)|_BV(d)|_BV(e)|_BV(f)) |
| #define | BV7(a, b, c, d, e, f, g) (_BV(a)|_BV(b)|_BV(c)|_BV(d)|_BV(e)|_BV(f)|_BV(g)) |
| #define | maketime(hh, mm) (((hh) << 8) + (mm)) |
| Make BCD time from 2 bytes. | |
| #define | _frombcd(x) ((x & 017) + (((x) & 0160)>>4) * 10) |
Enumerations | |
| enum | _blinkmode { BLINK_NONE = 0, BLINK_HH = 1, BLINK_MM = 2, BLINK_ALL = 3 } |
Blinking modes, see timer0 overflow interrupt. More... | |
Functions | |
| uint8_t | frombcd (uint8_t) |
| uint8_t | days_in_month_bcd (uint8_t year, uint8_t month) |
| uint8_t | bcd_increment (uint8_t x) |
| Increment BCD value by 1. | |
| uint8_t | day_of_week (uint8_t y, uint8_t m, uint8_t d) |
| Get day of week, 0 = Sunday. Input parameters are binary (not BCD). | |
| void | set_blinkmode (uint8_t mode) |
| Set blinkmode. | |
| void | duty_set (uint8_t d) |
| Sets tubes duty cycle. Valid values are 1..4. | |
| uint8_t | duty_get () |
| void | fadeto (uint16_t t) |
| uint16_t | get_display_value () |
Variables | |
| void(* | blinkhandler )(uint8_t) |
| Called every blink, unless NULL. | |
Utilities.
Bit settings. BCD conversions. Calendar.
| #define _frombcd | ( | x | ) | ((x & 017) + (((x) & 0160)>>4) * 10) |
Convert to binary from BCD representation
| #define BV2 | ( | a, | |||
| b | ) | (_BV(a)|_BV(b)) |
| #define BV3 | ( | a, | |||
| b, | |||||
| c | ) | (_BV(a)|_BV(b)|_BV(c)) |
| #define BV4 | ( | a, | |||
| b, | |||||
| c, | |||||
| d | ) | (_BV(a)|_BV(b)|_BV(c)|_BV(d)) |
| #define BV5 | ( | a, | |||
| b, | |||||
| c, | |||||
| d, | |||||
| e | ) | (_BV(a)|_BV(b)|_BV(c)|_BV(d)|_BV(e)) |
| #define BV6 | ( | a, | |||
| b, | |||||
| c, | |||||
| d, | |||||
| e, | |||||
| f | ) | (_BV(a)|_BV(b)|_BV(c)|_BV(d)|_BV(e)|_BV(f)) |
| #define BV7 | ( | a, | |||
| b, | |||||
| c, | |||||
| d, | |||||
| e, | |||||
| f, | |||||
| g | ) | (_BV(a)|_BV(b)|_BV(c)|_BV(d)|_BV(e)|_BV(f)|_BV(g)) |
| #define maketime | ( | hh, | |||
| mm | ) | (((hh) << 8) + (mm)) |
Make BCD time from 2 bytes.
| enum _blinkmode |
Blinking modes, see timer0 overflow interrupt.
00017 { 00018 BLINK_NONE = 0, 00019 BLINK_HH = 1, 00020 BLINK_MM = 2, 00021 BLINK_ALL = 3, 00022 };
| uint8_t bcd_increment | ( | uint8_t | x | ) |
| uint8_t day_of_week | ( | uint8_t | y, | |
| uint8_t | m, | |||
| uint8_t | d | |||
| ) |
Get day of week, 0 = Sunday. Input parameters are binary (not BCD).
00033 { 00034 uint8_t leap = y%4 == 0; 00035 uint16_t centurydays = 6 + y * 365 + (y+3)/4; // year 2000 started on Saturday 00036 for (; --m >= 1; ) { 00037 centurydays += month_length(m,leap); 00038 } 00039 00040 centurydays += d-1; 00041 00042 return (centurydays % 7); 00043 }

| uint8_t days_in_month_bcd | ( | uint8_t | year, | |
| uint8_t | month | |||
| ) |
Return BCD count of days in month for given BCD year and month. Valid only for years 2000-2099.
00013 { 00014 uint8_t y = frombcd(year);//(year & 7) + ((year & 070)>>3) * 10; 00015 uint8_t m = frombcd(month);//(month & 7) + ((month & 070)>>3) * 10; 00016 uint8_t leap = y % 4 == 0; // non y2k1-compliant, but should be correct for the next 91 years or so :) 00017 00018 uint8_t knuckle = m < 8 ? (m & 1) == 1 : (m & 1) == 0; 00019 return knuckle ? 0x31 : m != 2 ? 0x30 : leap ? 0x29 : 0x28; 00020 }

| uint8_t duty_get | ( | ) | [inline] |
00083 { return on_duty; }
| void duty_set | ( | uint8_t | d | ) |
Sets tubes duty cycle. Valid values are 1..4.
00078 { 00079 on_duty = d; 00080 voltage_adjust(0); 00081 }

| void fadeto | ( | uint16_t | t | ) |
Start fading time to given value. Transition is performed in TIMER0_OVF_vect and takes FADETIME cycles.
00087 { 00088 timef = t; fadetime = -1; 00089 voltage_adjust(0); 00090 }

| uint8_t frombcd | ( | uint8_t | ) |
| uint16_t get_display_value | ( | ) | [inline] |
00092 { 00093 return timef; 00094 }
| void set_blinkmode | ( | uint8_t | mode | ) | [inline] |
Set blinkmode.
00051 { 00052 blinkmode = mode; 00053 }
| void(* blinkhandler)(uint8_t) |
Called every blink, unless NULL.
1.6.1