mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-26 09:43:57 -04:00
HAL_ChibiOS: use micros16() for blheli pass-thru IRQ
saves some IRQ overhead, makes time handling more consistent
This commit is contained in:
parent
5714ee113f
commit
6953778b4c
@ -1727,7 +1727,7 @@ bool RCOutput::serial_write_bytes(const uint8_t *bytes, uint16_t len)
|
|||||||
*/
|
*/
|
||||||
void RCOutput::serial_bit_irq(void)
|
void RCOutput::serial_bit_irq(void)
|
||||||
{
|
{
|
||||||
uint32_t now = AP_HAL::micros();
|
uint16_t now = AP_HAL::micros16();
|
||||||
uint8_t bit = palReadLine(irq.line);
|
uint8_t bit = palReadLine(irq.line);
|
||||||
bool send_signal = false;
|
bool send_signal = false;
|
||||||
|
|
||||||
@ -1746,7 +1746,7 @@ void RCOutput::serial_bit_irq(void)
|
|||||||
irq.bitmask = 0;
|
irq.bitmask = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
systime_t dt = now - irq.byte_start_tick;
|
uint16_t dt = now - irq.byte_start_tick;
|
||||||
uint8_t bitnum = (dt+(irq.bit_time_tick/2)) / irq.bit_time_tick;
|
uint8_t bitnum = (dt+(irq.bit_time_tick/2)) / irq.bit_time_tick;
|
||||||
|
|
||||||
if (bitnum > 10) {
|
if (bitnum > 10) {
|
||||||
|
@ -332,7 +332,7 @@ private:
|
|||||||
// serial output
|
// serial output
|
||||||
struct {
|
struct {
|
||||||
// expected time per bit
|
// expected time per bit
|
||||||
uint32_t bit_time_us;
|
uint16_t bit_time_us;
|
||||||
|
|
||||||
// channel to output to within group (0 to 3)
|
// channel to output to within group (0 to 3)
|
||||||
uint8_t chan;
|
uint8_t chan;
|
||||||
@ -411,7 +411,7 @@ private:
|
|||||||
ioline_t line;
|
ioline_t line;
|
||||||
|
|
||||||
// time the current byte started
|
// time the current byte started
|
||||||
uint32_t byte_start_tick;
|
uint16_t byte_start_tick;
|
||||||
|
|
||||||
// number of bits we have read in this byte
|
// number of bits we have read in this byte
|
||||||
uint8_t nbits;
|
uint8_t nbits;
|
||||||
@ -423,7 +423,7 @@ private:
|
|||||||
uint16_t byteval;
|
uint16_t byteval;
|
||||||
|
|
||||||
// expected time per bit in micros
|
// expected time per bit in micros
|
||||||
uint32_t bit_time_tick;
|
uint16_t bit_time_tick;
|
||||||
|
|
||||||
// the bit value of the last bit received
|
// the bit value of the last bit received
|
||||||
uint8_t last_bit;
|
uint8_t last_bit;
|
||||||
|
Loading…
Reference in New Issue
Block a user