fix UART hang
parent
09ab8f6290
commit
aa0cfadb6b
|
@ -5,16 +5,19 @@
|
|||
// esp = USART1
|
||||
uart_ring esp_ring = { .w_ptr_tx = 0, .r_ptr_tx = 0,
|
||||
.w_ptr_rx = 0, .r_ptr_rx = 0,
|
||||
.uart = USART1 };
|
||||
.uart = USART1,
|
||||
.callback = NULL};
|
||||
|
||||
// lin1, K-LINE = UART5
|
||||
// lin2, L-LINE = USART3
|
||||
uart_ring lin1_ring = { .w_ptr_tx = 0, .r_ptr_tx = 0,
|
||||
.w_ptr_rx = 0, .r_ptr_rx = 0,
|
||||
.uart = UART5 };
|
||||
.uart = UART5,
|
||||
.callback = NULL};
|
||||
uart_ring lin2_ring = { .w_ptr_tx = 0, .r_ptr_tx = 0,
|
||||
.w_ptr_rx = 0, .r_ptr_rx = 0,
|
||||
.uart = USART3 };
|
||||
.uart = USART3,
|
||||
.callback = NULL};
|
||||
|
||||
// debug = USART2
|
||||
void debug_ring_callback(uart_ring *ring);
|
||||
|
@ -59,7 +62,7 @@ void uart_ring_process(uart_ring *q) {
|
|||
q->uart->CR1 &= ~USART_CR1_TXEIE;
|
||||
}
|
||||
|
||||
if (sr & USART_SR_RXNE) {
|
||||
if (sr & USART_SR_RXNE || sr & USART_SR_ORE) {
|
||||
uint8_t c = q->uart->DR; // TODO: can drop packets
|
||||
uint8_t next_w_ptr = q->w_ptr_rx + 1;
|
||||
if (next_w_ptr != q->r_ptr_rx) {
|
||||
|
@ -68,6 +71,11 @@ void uart_ring_process(uart_ring *q) {
|
|||
if (q->callback) q->callback(q);
|
||||
}
|
||||
}
|
||||
|
||||
if (sr & USART_SR_ORE) {
|
||||
// set dropped packet flag?
|
||||
}
|
||||
|
||||
exit_critical_section();
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ class PandaSerial(object):
|
|||
|
||||
def write(self, dat):
|
||||
#print "W: ", dat.encode("hex")
|
||||
#print ' pigeon_send("' + ''.join(map(lambda x: "\\x%02X" % ord(x), dat)) + '");'
|
||||
return self.panda.serial_write(self.port, dat)
|
||||
|
||||
def close(self):
|
||||
|
|
|
@ -28,7 +28,7 @@ if __name__ == "__main__":
|
|||
|
||||
# upping baud rate
|
||||
# 460800 has issues
|
||||
baudrate = 230400
|
||||
baudrate = 460800
|
||||
|
||||
print "upping baud rate"
|
||||
msg = add_nmea_checksum("$PUBX,41,1,0007,0003,%d,0" % baudrate)+"\r\n"
|
||||
|
|
Loading…
Reference in New Issue