Fixed compilation errors. Turned on optimization for size. Added gitignore
This commit is contained in:
parent
365d906890
commit
ca40b8d0eb
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
code/counter*
|
||||
@ -2,7 +2,7 @@ all:
|
||||
make build
|
||||
make program
|
||||
build:
|
||||
avr-gcc main.c i2c_master.c -o counter -mmcu=attiny84 -Wall -Wextra
|
||||
avr-gcc main.c i2c_master.c -o counter -mmcu=attiny84 -Wall -Wextra -Os
|
||||
|
||||
program:
|
||||
avrdude -p attiny84 -c usbtiny -U flash:w:counter
|
||||
|
||||
45
code/main.c
45
code/main.c
@ -217,10 +217,10 @@ const uint8_t PROGMEM symbols[31 * CHAR_SIZE] =
|
||||
|
||||
const char PROGMEM menu_strings[(MENU_COUNT + 1) * MENU_STRLEN] =
|
||||
{
|
||||
CHAR_A, CHAR_t, CHAR_t, CHAR_a, CHAR_c, CHAR_h, 0xFF, 0xFF, 0xFF,
|
||||
CHAR_A, CHAR_d, CHAR_j, CHAR_u, CHAR_s, CHAR_t, 0xFF, 0xFF, 0xFF,
|
||||
CHAR_B, CHAR_a, CHAR_t, CHAR_t, CHAR_e, CHAR_r, CHAR_y, 0xFF, 0xFF,
|
||||
CHAR_D, CHAR_e, CHAR_t, CHAR_a, CHAR_c, CHAR_h, 0xFF, 0xFF, 0xFF
|
||||
CHAR_A, CHAR_t, CHAR_t, CHAR_a, CHAR_c, CHAR_h, 0xFF, 0xFF,
|
||||
CHAR_A, CHAR_d, CHAR_j, CHAR_u, CHAR_s, CHAR_t, 0xFF, 0xFF,
|
||||
CHAR_B, CHAR_a, CHAR_t, CHAR_t, CHAR_e, CHAR_r, CHAR_y, 0xFF,
|
||||
CHAR_D, CHAR_e, CHAR_t, CHAR_a, CHAR_c, CHAR_h, 0xFF, 0xFF
|
||||
};
|
||||
|
||||
// 1 / (4 * ROT_PULSE_COUNT) * (2 * pi * ROT_WHEEL_RAD)
|
||||
@ -362,7 +362,7 @@ void set_adjust_spool();
|
||||
void set_battery_state();
|
||||
|
||||
// Updates the ms counter
|
||||
ISR(TIMER1_OVF_vect)
|
||||
ISR(TIM1_OVF_vect)
|
||||
{
|
||||
cli();
|
||||
ms += 10;
|
||||
@ -493,8 +493,6 @@ ISR(PCINT1_vect)
|
||||
|
||||
int main()
|
||||
{
|
||||
uint8_t curr_event;
|
||||
|
||||
// Init Direct Hardware
|
||||
simple_init();
|
||||
|
||||
@ -522,7 +520,7 @@ int main()
|
||||
break;
|
||||
|
||||
case STATE_ADJUST:
|
||||
process_setting();
|
||||
process_adjust();
|
||||
break;
|
||||
|
||||
case STATE_BATTERY:
|
||||
@ -547,14 +545,14 @@ void simple_init()
|
||||
{
|
||||
// No Prescaler - 1 MHz
|
||||
// Set Mode to CTC with ICR1
|
||||
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 < CS10)
|
||||
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10);
|
||||
|
||||
// 1 000 000 / 10 000 = 100 (Hz)
|
||||
// Interrupt every 10ms
|
||||
ICR1 = 10000;
|
||||
|
||||
// Enable Interrupt on overflow
|
||||
TIMSK = (1 << TOIE1);
|
||||
TIMSK1 = (1 << TOIE1);
|
||||
|
||||
// Interrupt on Up/Down/Click pins
|
||||
PCMSK0 = (1 << PCINT0) | (1 << PCINT1) | (1 << PCINT2) | (1 << PCINT3) | (1 << PCINT5);
|
||||
@ -768,7 +766,7 @@ void print_symbol(uint8_t symbol_idx, uint8_t x, uint8_t y, uint8_t invert)
|
||||
|
||||
void print_mm()
|
||||
{
|
||||
static_uint8_t old_symbols[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
||||
static uint8_t old_symbols[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
||||
static uint8_t old_highlight = 0xFF;
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
@ -866,7 +864,7 @@ void print_direction()
|
||||
}
|
||||
|
||||
// Print symbol on change or highlight change
|
||||
if ((old_is_A != is_A) || (old_highlight != dir_highlight))
|
||||
if ((old_is_A != rot_dir_is_A) || (old_highlight != dir_highlight))
|
||||
{
|
||||
print_symbol(symbol, OLED_X_SIZE - (CHAR_SIZE + 1) * 2, 0, dir_highlight);
|
||||
}
|
||||
@ -913,7 +911,7 @@ void print_clear_menu_area()
|
||||
while (i < count)
|
||||
{
|
||||
// If remaining bytes is smaller than buffer - send only required number
|
||||
bytes = count - i < sizeof(data) ? count - i, sizeof(data);
|
||||
bytes = (count - i) < sizeof(data) ? count - i : sizeof(data);
|
||||
display_send_data(data, bytes);
|
||||
i += bytes;
|
||||
}
|
||||
@ -1061,12 +1059,13 @@ int16_t find_eeprom_idx()
|
||||
uint8_t err;
|
||||
int16_t idx = 0;
|
||||
uint8_t found = 0;
|
||||
uint8_t dir;
|
||||
uint32_t value = 0xFFFFFFFF;
|
||||
|
||||
// FF is the erased byte value
|
||||
for (idx = 0; idx < EEPROM_SIZE / EEPROM_IDX_SIZE; ++idx)
|
||||
{
|
||||
err = read_eeprom_val(idx, &value);
|
||||
err = read_eeprom_val(idx, &value, &dir);
|
||||
if (0 != err)
|
||||
{
|
||||
return -1;
|
||||
@ -1136,7 +1135,7 @@ int8_t write_eeprom_val(int8_t idx, uint32_t value, uint8_t direction)
|
||||
|
||||
buf[0] = direction;
|
||||
|
||||
err = i2c_write_buff(EEPROM_ADDRESS, idx * EEPROM_IDX_SIZE, buf, 4)
|
||||
err = i2c_write_buff(EEPROM_ADDRESS, idx * EEPROM_IDX_SIZE, buf, 4);
|
||||
if (4 != err)
|
||||
{
|
||||
return -1;
|
||||
@ -1236,6 +1235,7 @@ int8_t read_battery(int16_t *mAh, int16_t *mV, int16_t *temp)
|
||||
int8_t i2c_write_buff(uint8_t i2c_addr, uint8_t data_addr, uint8_t *buf, uint8_t len)
|
||||
{
|
||||
uint8_t err;
|
||||
uint8_t i;
|
||||
|
||||
err = i2c_start(i2c_addr | I2C_WRITE);
|
||||
if (0 != err)
|
||||
@ -1251,7 +1251,7 @@ int8_t i2c_write_buff(uint8_t i2c_addr, uint8_t data_addr, uint8_t *buf, uint8_t
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (uint8_t i = 0; i < len; ++i)
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
err = i2c_write(buf[i]);
|
||||
if (0 != err)
|
||||
@ -1268,6 +1268,7 @@ int8_t i2c_write_buff(uint8_t i2c_addr, uint8_t data_addr, uint8_t *buf, uint8_t
|
||||
int8_t i2c_read_buff(uint8_t i2c_addr, uint8_t data_addr, uint8_t *buf, uint8_t len)
|
||||
{
|
||||
uint8_t err;
|
||||
uint8_t i;
|
||||
|
||||
err = i2c_start(i2c_addr | I2C_WRITE);
|
||||
if (0 != err)
|
||||
@ -1290,7 +1291,7 @@ int8_t i2c_read_buff(uint8_t i2c_addr, uint8_t data_addr, uint8_t *buf, uint8_t
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (uint8_t i = 0; i < len; ++i)
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
buf[i] = i2c_read(i == len - 1);
|
||||
}
|
||||
@ -1406,7 +1407,7 @@ void spool_count(uint8_t event)
|
||||
write_eeprom_val(eeprom_idx, 0xFFFFFFFF, 0xFF);
|
||||
++eeprom_idx;
|
||||
eeprom_idx %= EEPROM_SIZE;
|
||||
write_eeprom_val(eeprom_idx, (uint32_t) count_value_fine, move_dir);
|
||||
write_eeprom_val(eeprom_idx, (uint32_t) count_value_fine, rot_dir_is_A);
|
||||
}
|
||||
count_value = (uint32_t) count_value_fine;
|
||||
}
|
||||
@ -1628,7 +1629,7 @@ void process_battery()
|
||||
// Button Clicked - Update Battery Info
|
||||
read_battery(&battery_mAh, &battery_mV, &battery_temp);
|
||||
print_battery_icon();
|
||||
print_battery_stat();
|
||||
print_battery_stat(0);
|
||||
}
|
||||
long_press_when_ms = 0xFFFFFFFF;
|
||||
break;
|
||||
@ -1653,7 +1654,7 @@ void attach_detach_spool()
|
||||
write_eeprom_val(eeprom_idx, 0xFFFFFFFF, 0xFF);
|
||||
++eeprom_idx;
|
||||
eeprom_idx %= EEPROM_SIZE;
|
||||
write_eeprom_val(eeprom_idx, (uint32_t) count_value_fine, move_dir);
|
||||
write_eeprom_val(eeprom_idx, (uint32_t) count_value_fine, rot_dir_is_A);
|
||||
|
||||
spool_counting = 0;
|
||||
spool_attached = 0;
|
||||
@ -1682,14 +1683,14 @@ void attach_detach_spool()
|
||||
// New EEPROM
|
||||
if (0x00FFFFFF == count_value)
|
||||
{
|
||||
is_counting = 0;
|
||||
spool_counting = 0;
|
||||
count_value = 0;
|
||||
count_value_fine = 0;
|
||||
rot_dir_is_A = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
is_counting = 1;
|
||||
spool_counting = 1;
|
||||
count_value_fine = count_value;
|
||||
}
|
||||
spool_attached = 1;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user