Fix some dumb bugs

This commit is contained in:
jaseg 2023-12-24 15:31:51 +01:00
parent 7b7b18cb14
commit 2dcae5db6f
2 changed files with 36 additions and 17 deletions

View file

@ -1,6 +1,6 @@
# blackmagic-1
# target extended-remote 192.168.27.252:2022
target extended-remote 192.168.27.252:2022
# blackmagic-2
# target extended-remote 192.168.27.114:2022
@ -9,7 +9,7 @@
# target extended-remote 192.168.27.207:2022
# blackmagic-4
target extended-remote 192.168.27.153:2022
# target extended-remote 192.168.27.153:2022
set print pretty on
set print elements 512

View file

@ -43,11 +43,11 @@ int hex_to_int(char *hex, size_t len) {
rv = rv<<4;
char c = hex[len];
if ('0' <= c && c <= '9')
c -= '0';
c = c - '0';
else if ('a' <= c && c <= 'f')
c -= 'a' + 0xa;
c = c - 'a' + 0xa;
else if ('A' <= c && c <= 'F')
c -= 'A' + 0xa;
c = c - 'A' + 0xa;
else
c = 0;
rv |= c;
@ -161,7 +161,9 @@ int main(void) {
GPIOB->OSPEEDR = (3<<0) | (3<<1) | (3<<3);
/* GPIOC:
* C0-C3: (testpoint)
* C0, C3: (testpoint)
* C1: Fan 2 PWM
* C2: Fan 1 PWM
* C4: RJ45 LED 4
* C5: RJ45 LED 3
* C6: Fuse monitor 7
@ -172,12 +174,14 @@ int main(void) {
* C11-C15: (testpoint)
*/
GPIOC->MODER =
IN(0) | IN(1) | IN(2) | IN(3) | IN(9) | IN(11) | IN(12) | IN(13) | IN(14) | IN(15) |
IN(0) | OUT(1) | OUT(2) | IN(3) | IN(9) | IN(11) | IN(12) | IN(13) | IN(14) | IN(15) |
OUT(4) | OUT(5) |
IN(6) | IN(7) | IN(8) |
AF(10);
GPIOC->OTYPER = (1<<1) | (1<<2);
GPIOC->AFR[1] = AFRH(10, 2);
GPIOC->OSPEEDR = (3<<10);
GPIOC->BRR = (1<<1) | (1<<2); /* Disable fans */
/* GPIOD:
* D0-D6: (testpoint)
@ -187,11 +191,20 @@ int main(void) {
GPIOD->MODER = IN(0) | IN(1) | IN(2) | IN(3) | IN(4) | IN(5) | IN(6) |
IN(8) | IN(9);
for (int i=0; i<20; i++) {
for (int i=0; i<10; i++) {
set_status_leds(LED_ON);
delay_us(500*1000);
delay_us(250*1000);
set_status_leds(0);
delay_us(500*1000);
delay_us(250*1000);
}
GPIOC->BSRR = (1<<1) | (1<<2); /* Enable fans */
for (int i=0; i<10; i++) {
set_status_leds(LED_ON);
delay_us(250*1000);
set_status_leds(0);
delay_us(250*1000);
}
TIM1->CCMR1 = (6<<TIM_CCMR1_OC2M_Pos) | TIM_CCMR1_OC2PE;
@ -249,12 +262,18 @@ int main(void) {
}
set_status_leds(leds);
if (USART1->ISR & USART_ISR_RXNE_RXFNE) {
rj45_rx_ctr = 100000;
if (USART1->RDR == '\n') {
if (rxp != 4*16*3) {
int isr = USART1->ISR;
if ((isr & USART_ISR_ORE) || (isr & USART_ISR_FE)) {
USART1->ICR = USART_ICR_ORECF | USART_ICR_FECF;
}
if (isr & USART_ISR_RXNE_RXFNE) {
rj45_rx_ctr = 20000;
char c = USART1->RDR;
if (c == '\n') {
if (rxp > 2 && rxp != 4*16*3) {
control_err_ctr = 1000000;
rxp = 0;
control_err_ctr = 10000000;
continue;
}
@ -271,12 +290,12 @@ int main(void) {
}
}
rxp = 0;
ping_ctr = 1000000;
ping_ctr = 500000;
update_tx_buf();
} else {
if (rxp <= sizeof(rxbuf)) {
rxbuf[rxp] = USART1->RDR;
rxbuf[rxp] = c;
rxp ++;
}
}