From 9f03182605d1648cd6bb541d0c0abb3341d7213b Mon Sep 17 00:00:00 2001 From: joeman155 Date: Wed, 4 Dec 2013 09:35:04 +1000 Subject: [PATCH 1/2] Update radio.c setting to 1 removes TX errors --- Firmware/radio/radio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/radio/radio.c b/Firmware/radio/radio.c index 8429bf48..8e006854 100644 --- a/Firmware/radio/radio.c +++ b/Firmware/radio/radio.c @@ -342,7 +342,7 @@ radio_transmit_simple(__data uint8_t length, __xdata uint8_t * __pdata buf, __pd // it seems that this gives us an occasional // fifo overflow error, so put in just 4 bytes // at a time - n = 4; + n = 1; if (n > length) { n = length; } @@ -355,7 +355,7 @@ radio_transmit_simple(__data uint8_t length, __xdata uint8_t * __pdata buf, __pd // the FIFO is below the high threshold. See // comment above on how many bytes we add to // the FIFO - n = 4; + n = 1; if (n > length) { n = length; } From fd64912524bf0ea99ecf95852c02a8bf50ed9a0b Mon Sep 17 00:00:00 2001 From: joeman155 Date: Wed, 4 Dec 2013 09:42:07 +1000 Subject: [PATCH 2/2] Update serial.c Fixed logic setting serial rate. --- Firmware/radio/serial.c | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/Firmware/radio/serial.c b/Firmware/radio/serial.c index b11f9d7d..55843b98 100644 --- a/Firmware/radio/serial.c +++ b/Firmware/radio/serial.c @@ -462,24 +462,27 @@ serial_device_valid_speed(register uint8_t speed) static void serial_device_set_speed(register uint8_t speed) { - uint8_t i; - uint8_t num_rates = ARRAY_LENGTH(serial_rates); - - for (i = 0; i < num_rates; i++) { - if (speed == serial_rates[i].rate) { - break; - } - } - if (i == num_rates) { - i = 3; // 57600 default - } - - // set the rates in the UART - TH1 = serial_rates[i].th1; - CKCON = (CKCON & ~0x0b) | serial_rates[i].ckcon; - - // tell the packet layer how fast the serial link is. This is - // needed for packet framing timeouts - packet_set_serial_speed(speed*125UL); + uint8_t i; + bool valid_speed = false; + uint8_t num_rates = ARRAY_LENGTH(serial_rates); + + for (i = 0; i < num_rates; i++) { + if (speed == serial_rates[i].rate) { + valid_speed = true; + break; + } + } + if (! valid_speed) { + i = 6; // 57600 default + speed = serial_rates[i].rate; + } + + // set the rates in the UART + TH1 = serial_rates[i].th1; + CKCON = (CKCON & ~0x0b) | serial_rates[i].ckcon; + + // tell the packet layer how fast the serial link is. This is + // needed for packet framing timeouts + packet_set_serial_speed(speed*125UL); }