diff --git a/src/Makefile b/src/Makefile index afa855db3..9829b3d7d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -515,7 +515,7 @@ ifeq ($(PCB), X9D) OPT = 2 CPPDEFS += -DPCBX9D -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DPXX EXTRAINCDIRS += x9d CoOS/kernel CoOS/portable - EXTRAINCDIRS += x9d/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc x9d/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include + EXTRAINCDIRS += x9d/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc x9d/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include x9d/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/include EXTRAINCDIRS += x9d/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc x9d/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc EXTRAINCDIRS += x9d/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc x9d/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc BOARDSRC = x9d/board_x9d.cpp diff --git a/src/pulses_arm.cpp b/src/pulses_arm.cpp index c813b49fe..80757b3fa 100644 --- a/src/pulses_arm.cpp +++ b/src/pulses_arm.cpp @@ -188,7 +188,7 @@ void crc( uint8_t data ) { // uint8_t i ; - PcmCrc=(PcmCrc>>8)^(CRCTable[(PcmCrc^data) & 0xFF]); + PcmCrc=(PcmCrc<<8)^(CRCTable[((PcmCrc>>8)^data) & 0xFF]); } #if defined(PCBSKY9X) @@ -341,9 +341,10 @@ void setupPulsesPXX() } /* CRC16 */ + putPcmByte(0); chan = PcmCrc; + putPcmByte(chan>>8); putPcmByte(chan); - putPcmByte(chan >> 8); /* Sync */ putPcmHead(); diff --git a/src/pulses_avr.cpp b/src/pulses_avr.cpp index 0d8a2fa8d..fe840fc52 100644 --- a/src/pulses_avr.cpp +++ b/src/pulses_avr.cpp @@ -235,7 +235,7 @@ uint8_t pxxFlag = 0; void crc( uint8_t data ) { - PcmCrc=(PcmCrc>>8)^pgm_read_word(&CRCTable[(PcmCrc^data) & 0xFF]); + PcmCrc=(PcmCrc<<8)^pgm_read_word(&CRCTable[((PcmCrc>>8)^data) & 0xFF]); } @@ -331,9 +331,10 @@ void setupPulsesPXX() putPcmByte( ( ( chan >> 8 ) & 0x0F ) | ( chan_1 << 4) ) ; // 4 bits each from 2 channels putPcmByte( chan_1 >> 4 ) ; // High byte of channel } + putPcbByte(0); chan = PcmCrc ; // get the crc - putPcmByte( chan ) ; // Checksum lo - putPcmByte( chan >> 8 ) ; // Checksum hi + putPcmByte( chan>>8 ) ; // Checksum lo + putPcmByte( chan ) ; // Checksum hi putPcmHead( ) ; putPcmFlush() ; OCR1C += 40000 ; // 20mS on