diff options
Diffstat (limited to 'prototype/fw')
-rw-r--r-- | prototype/fw/src/main.c | 29 | ||||
-rw-r--r-- | prototype/fw/tools/ser_test.py | 6 |
2 files changed, 22 insertions, 13 deletions
diff --git a/prototype/fw/src/main.c b/prototype/fw/src/main.c index 16e1b78..51e69e8 100644 --- a/prototype/fw/src/main.c +++ b/prototype/fw/src/main.c @@ -53,7 +53,7 @@ int main(void) { USART1->CR1 = USART_CR1_TE | USART_CR1_RE; USART1->BRR = (apb2_clock + baudrate/2) / baudrate; - USART1->CR2 |= USART_CR2_RXINV; + USART1->CR2 |= USART_CR2_RXINV; //| USART_CR2_TXINV; USART1->CR1 |= USART_CR1_UE; int req_seq = 0; @@ -70,25 +70,32 @@ int main(void) { unsigned int rx_crc_error = 0; USART1->TDR = 0; /* Kick off transmission */ + int i = 0; while (23) { - /* if (tx_st.remaining_bytes == 0) { - res_buf.req_seq = req_seq; - res_buf.res_seq = res_seq; - res_seq += 1; - packetize(&res_buf, &res_buf.trailer); - tx_st.tx_char = tx_buf; - tx_st.remaining_bytes = cobs_encode((uint8_t *)&res_buf, sizeof(res_buf), tx_buf, sizeof(tx_buf));; + if (i > 10000) { + res_buf.req_seq = req_seq; + res_buf.res_seq = res_seq; + res_seq += 1; + //packetize(&res_buf, &res_buf.trailer); + tx_st.tx_char = tx_buf; + //tx_st.remaining_bytes = cobs_encode((uint8_t *)&res_buf, sizeof(res_buf), tx_buf, sizeof(tx_buf));; + for (int k=0; k < 8; k++) + tx_buf[k] = 255-k; + for (int k=0; k < 8; k++) + tx_buf[8+k] = (k + 1) % 8; + tx_st.remaining_bytes = 16; + i = 0; + } else { + i++; + } } if (USART1->ISR & USART_ISR_TXE && tx_st.remaining_bytes > 0) { - for (int i=0; i<100; i++) - asm volatile ("nop"); USART1->TDR = *(tx_st.tx_char); tx_st.tx_char += 1; tx_st.remaining_bytes -= 1; } - */ if (USART1->ISR & USART_ISR_ORE) USART1->ICR = USART_ICR_ORECF; diff --git a/prototype/fw/tools/ser_test.py b/prototype/fw/tools/ser_test.py index d9dec62..14addbd 100644 --- a/prototype/fw/tools/ser_test.py +++ b/prototype/fw/tools/ser_test.py @@ -28,13 +28,14 @@ if __name__ == '__main__': make_color = lambda x: f'\033[38;5;{x}m' field_colors = [ make_color(x) for x in [ 48, 48, 48, 48, 220, 220, 220, 220, 207, 207, 207, 207 ] ] last_tx = time.time() + lastc = -10000 while True: data = ser.read() for c in data: if byte_count == 0: print(f'\033[38;5;244m{time.time() - start_time: 8.3f} \033[0m', end='') - col = '\033[91m' if c == 0 else '\033[0m' + col = '\033[91m' if c == 0 else ('\033[0m' if c == (lastc - 1) % 256 else '\033[92m') print(f'{col}{c:02x}', end=' ') line += bytes([c]) byte_count += 1 @@ -63,6 +64,7 @@ if __name__ == '__main__': print(f'\033[93m | {printable}\033[0m') byte_count = 0 line = b'' + lastc = c if time.time() - last_tx > 0.01: @@ -70,6 +72,6 @@ if __name__ == '__main__': data = struct.pack('<I', seq) #seq += 1 #ser.write(bytes(list(range(255, -1, -1)))) - ser.write(cobs.encode(data + struct.pack('<I', zlib.crc32(data))) + b'\0') + #ser.write(cobs.encode(data + struct.pack('<I', zlib.crc32(data))) + b'\0') last_tx = time.time() #time.sleep(0.01) |