Compare commits
3 Commits
340cdcad89
...
3eb211fb54
Author | SHA1 | Date |
---|---|---|
true | 3eb211fb54 | |
true | d32442da9a | |
true | 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