diff options
Diffstat (limited to '')
| -rw-r--r-- | fsm/misc.c | 58 |
1 files changed, 57 insertions, 1 deletions
@@ -65,6 +65,16 @@ uint8_t blink_digit(uint8_t num) { return nice_delay_ms(BLINK_SPEED * 8 / 12); } +#ifdef USE_LONG_BLINK_FOR_NEGATIVE_SIGN +void blink_negative() { + // "negative" symbol gets a single long blink + uint8_t ontime = BLINK_SPEED * 2 / 12; + set_level(BLINK_BRIGHTNESS); + nice_delay_ms(ontime * 3); + set_level(0); + nice_delay_ms(ontime * 5); +} +#endif #endif #ifdef USE_BLINK_BIG_NUM @@ -245,6 +255,50 @@ void rgb_led_set(uint8_t value) { // FIXME: move this logic to arch/* #if (MCU==0x1616) || (MCU==0x32dd20) // ATTINY816, 817, etc + // FIXME: this *really* needs to be moved to somewhere hardware-specific + #ifdef AUXLED_RGB_DIFFERENT_PORTS + + case 0: // LED off + if (i == 0) { + AUXLED_R_PORT.DIRSET = (1 << pin); + AUXLED_R_PORT.OUTCLR = (1 << pin); + } else if (i == 1) { + AUXLED_G_PORT.DIRSET = (1 << pin); + AUXLED_G_PORT.OUTCLR = (1 << pin); + } else if (i == 2) { + AUXLED_B_PORT.DIRSET = (1 << pin); + AUXLED_B_PORT.OUTCLR = (1 << pin); + } + break; + + case 1: // LED low + if (i == 0) { + AUXLED_R_PORT.DIRCLR = (1 << pin); + *((uint8_t *)&AUXLED_R_PORT + 0x10 + pin) = PORT_PULLUPEN_bm; + } else if (i == 1) { + AUXLED_G_PORT.DIRCLR = (1 << pin); + *((uint8_t *)&AUXLED_G_PORT + 0x10 + pin) = PORT_PULLUPEN_bm; + } else if (i == 2) { + AUXLED_B_PORT.DIRCLR = (1 << pin); + *((uint8_t *)&AUXLED_B_PORT + 0x10 + pin) = PORT_PULLUPEN_bm; + } + break; + + default: // LED high + if (i==0) { + AUXLED_R_PORT.DIRSET = (1 << pin); + AUXLED_R_PORT.OUTSET = (1 << pin); + } else if (i==1) { + AUXLED_G_PORT.DIRSET = (1 << pin); + AUXLED_G_PORT.OUTSET = (1 << pin); + } else if (i==2) { + AUXLED_B_PORT.DIRSET = (1 << pin); + AUXLED_B_PORT.OUTSET = (1 << pin); + } + break; + + #else // not ifdef AUXLED_RGB_DIFFERENT_PORTS + case 0: // LED off AUXLED_RGB_PORT.DIRSET = (1 << pin); // set as output AUXLED_RGB_PORT.OUTCLR = (1 << pin); // set output low @@ -258,8 +312,10 @@ void rgb_led_set(uint8_t value) { AUXLED_RGB_PORT.DIRSET = (1 << pin); // set as output AUXLED_RGB_PORT.OUTSET = (1 << pin); // set as high break; + + #endif - #else + #else // not #if (MCU==0x1616) || (MCU==0x32dd20) case 0: // LED off AUXLED_RGB_DDR &= 0xff ^ (1 << pin); |
