Compare commits
	
		
			3 Commits
		
	
	
		
			340cdcad89
			...
			3eb211fb54
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					3eb211fb54 | ||
| 
						 | 
					d32442da9a | ||
| 
						 | 
					3a48cd8f06 | 
@ -3,7 +3,8 @@
 | 
				
			|||||||
 * GAT Addon Firmware
 | 
					 * GAT Addon Firmware
 | 
				
			||||||
 * by true
 | 
					 * by true
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * version 0.0.2
 | 
					 * version 0.0.3
 | 
				
			||||||
 | 
					 * Last Update 20240808
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * code was made for different random addons I designed for dc32,
 | 
					 * code was made for different random addons I designed for dc32,
 | 
				
			||||||
 * then adapted to each one. so things might be a mess.
 | 
					 * then adapted to each one. so things might be a mess.
 | 
				
			||||||
@ -85,7 +86,14 @@ void gpio_init()
 | 
				
			|||||||
    gpio.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_6;
 | 
					    gpio.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_6;
 | 
				
			||||||
    GPIO_Init(GPIOC, &gpio);
 | 
					    GPIO_Init(GPIOC, &gpio);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // BTN1, BTN2 will be handled by button handler
 | 
					    // BTN1 (PC5) pull up, BTN2 (PC4) pull down
 | 
				
			||||||
 | 
					    gpio.GPIO_Pin = GPIO_Pin_4;
 | 
				
			||||||
 | 
					    gpio.GPIO_Mode = GPIO_Mode_IPD;
 | 
				
			||||||
 | 
					    GPIO_Init(GPIOC, &gpio);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    gpio.GPIO_Pin = GPIO_Pin_5;
 | 
				
			||||||
 | 
					    gpio.GPIO_Mode = GPIO_Mode_IPU;
 | 
				
			||||||
 | 
					    GPIO_Init(GPIOC, &gpio);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(void)
 | 
					int main(void)
 | 
				
			||||||
@ -102,7 +110,6 @@ int main(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // configure gpio pins, hard buttons (used for settings reset)
 | 
					    // configure gpio pins, hard buttons (used for settings reset)
 | 
				
			||||||
    gpio_init();
 | 
					    gpio_init();
 | 
				
			||||||
    btn_init();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // get saved settings, or reset if BTN1 is pushed
 | 
					    // get saved settings, or reset if BTN1 is pushed
 | 
				
			||||||
    i2c_init();
 | 
					    i2c_init();
 | 
				
			||||||
@ -110,6 +117,7 @@ int main(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // configure hardware
 | 
					    // configure hardware
 | 
				
			||||||
    adc_init();
 | 
					    adc_init();
 | 
				
			||||||
 | 
					    btn_init();
 | 
				
			||||||
    led_init();
 | 
					    led_init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // configure random
 | 
					    // configure random
 | 
				
			||||||
 | 
				
			|||||||
@ -18,10 +18,10 @@ void btn_init()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    uint8_t i;
 | 
					    uint8_t i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // configure GPIO
 | 
					    // configure GPIO (now handled as part of main GPIO init function)
 | 
				
			||||||
    BTN_PORT->BSHR   = (BTN1_PUPD << BTN1_PIN) | (BTN2_PUPD << BTN2_PIN);
 | 
					    // BTN_PORT->BSHR   = (BTN1_PUPD << BTN1_PIN) | (BTN2_PUPD << BTN2_PIN);
 | 
				
			||||||
    BTN_PORT->CFGLR &= ~((0xf << (BTN1_PIN*4)) | ((0xf << (BTN2_PIN*4))));
 | 
					    // BTN_PORT->CFGLR &= ~((0xf << (BTN1_PIN*4)) | ((0xf << (BTN2_PIN*4))));
 | 
				
			||||||
    BTN_PORT->CFGLR |=   (0x8 << (BTN1_PIN*4)) |  (0x8 << (BTN2_PIN*4));
 | 
					    // BTN_PORT->CFGLR |=   (0x8 << (BTN1_PIN*4)) |  (0x8 << (BTN2_PIN*4));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // configure default setup
 | 
					    // configure default setup
 | 
				
			||||||
    for (i = 0; i < BTN_COUNT; i++) {
 | 
					    for (i = 0; i < BTN_COUNT; i++) {
 | 
				
			||||||
 | 
				
			|||||||
@ -80,11 +80,9 @@ int8_t i2c_read_addr1b(uint8_t addr, uint8_t reg, uint8_t *data, uint8_t len)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
       *data++ = I2C_ReceiveData(I2C1);
 | 
					       *data++ = I2C_ReceiveData(I2C1);
 | 
				
			||||||
       len--;
 | 
					       len--;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       if (!len) {
 | 
					 | 
				
			||||||
    I2C_GenerateSTOP(I2C1, ENABLE);
 | 
					    I2C_GenerateSTOP(I2C1, ENABLE);
 | 
				
			||||||
       }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -145,7 +143,7 @@ void i2c_write_reg_8b(uint8_t addr, uint8_t reg, const uint8_t dat)
 | 
				
			|||||||
    i2c_write_addr1b(addr, reg, &dat, 1);
 | 
					    i2c_write_addr1b(addr, reg, &dat, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t i2c_addr_scan(uint8_t addr)
 | 
					int8_t i2c_addr_scan(uint8_t addr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    uint8_t found = 1;
 | 
					    uint8_t found = 1;
 | 
				
			||||||
    uint32_t event;
 | 
					    uint32_t event;
 | 
				
			||||||
@ -164,30 +162,28 @@ uint8_t i2c_addr_scan(uint8_t addr)
 | 
				
			|||||||
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT) && timeout--);
 | 
					    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT) && timeout--);
 | 
				
			||||||
    if (!timeout) return -2;
 | 
					    if (!timeout) return -2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    I2C_Send7bitAddress(I2C1, addr, (addr & 1));
 | 
					    I2C_Send7bitAddress(I2C1, (addr & 0xfe), (addr & 0x01));
 | 
				
			||||||
    timeout = I2C_TIMEOUT_ACK_POLL;
 | 
					    timeout = I2C_TIMEOUT_ACK_POLL;
 | 
				
			||||||
    if (addr & 1) event = I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED;
 | 
					    if (addr & 1) event = I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED;
 | 
				
			||||||
    else          event = I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED;
 | 
					    else          event = I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (I2C_CheckEvent(I2C1, event) && timeout--) {
 | 
					    while ((I2C_CheckEvent(I2C1, event) == NoREADY) && timeout--) {
 | 
				
			||||||
        if (I2C_GetFlagStatus(I2C1, I2C_FLAG_AF)) {
 | 
					        if (I2C_GetFlagStatus(I2C1, I2C_FLAG_AF)) {
 | 
				
			||||||
            found = 0;
 | 
					            found = 0;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!timeout) {
 | 
					    if (!timeout) {
 | 
				
			||||||
        found = 0;
 | 
					        found = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // reset flags; it might be in a fucked state
 | 
					 | 
				
			||||||
    I2C1->STAR1 = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // send a stop to make sure anything listening knows to stfu
 | 
					    // send a stop to make sure anything listening knows to stfu
 | 
				
			||||||
    I2C_GenerateSTOP(I2C1, ENABLE);
 | 
					    I2C_GenerateSTOP(I2C1, ENABLE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // reset flags; it might be in a fucked state
 | 
				
			||||||
    if (!found) {
 | 
					    if (!found) {
 | 
				
			||||||
 | 
					        I2C1->STAR1 = 0;
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -19,7 +19,7 @@ int8_t i2c_write_addr1b(uint8_t addr, uint8_t reg, const uint8_t *data, uint8_t
 | 
				
			|||||||
uint8_t i2c_read_reg_8b(uint8_t addr, uint8_t reg);
 | 
					uint8_t i2c_read_reg_8b(uint8_t addr, uint8_t reg);
 | 
				
			||||||
void i2c_write_reg_8b(uint8_t addr, uint8_t reg, const uint8_t dat);
 | 
					void i2c_write_reg_8b(uint8_t addr, uint8_t reg, const uint8_t dat);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t i2c_addr_scan(uint8_t addr);
 | 
					int8_t i2c_addr_scan(uint8_t addr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -324,12 +324,16 @@ static void ui_cursor_flash()
 | 
				
			|||||||
        case MODE_PROGRAM: {
 | 
					        case MODE_PROGRAM: {
 | 
				
			||||||
            // cursor is on if this program is flagged as on
 | 
					            // cursor is on if this program is flagged as on
 | 
				
			||||||
            cursor[0] = (userconf.ledprog_ena_mask & (1 << preview_idx)) ? 127 : 0;
 | 
					            cursor[0] = (userconf.ledprog_ena_mask & (1 << preview_idx)) ? 127 : 0;
 | 
				
			||||||
 | 
					            cursor[1] = 0;
 | 
				
			||||||
 | 
					            cursor[2] = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        case MODE_PARAMETER: {
 | 
					        case MODE_PARAMETER: {
 | 
				
			||||||
            // cursor is on when program is being edited
 | 
					            // cursor is on when program is being edited
 | 
				
			||||||
            cursor[0] = rgb_prog_is_editing ? 127 : 0;
 | 
					            cursor[0] = rgb_prog_is_editing ? 127 : 0;
 | 
				
			||||||
 | 
					            cursor[1] = 0;
 | 
				
			||||||
 | 
					            cursor[2] = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user