X-Git-Url: https://rtime.felk.cvut.cz/gitweb/fpga/rpi-motor-control.git/blobdiff_plain/59b72ac21a7189e402f90a288889174af4fe3015..8945272802e6d9bdd317bced4aba96d7ca442e9b:/pmsm-control/test_sw/rp_spi.c diff --git a/pmsm-control/test_sw/rp_spi.c b/pmsm-control/test_sw/rp_spi.c index a1de3ce..056cb5d 100644 --- a/pmsm-control/test_sw/rp_spi.c +++ b/pmsm-control/test_sw/rp_spi.c @@ -84,31 +84,33 @@ struct rpi_in spi_read(uint8_t * tx) ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr); /*vypisovani prichozich dat */ - /*/ + if (ret < 1) pabort("can't send spi message"); for (ret = 0; ret < ARRAY_SIZE; ret++) { - if (!(ret % 6)) - puts(""); - printf("%.2X ", rx[ret]); + in.debug_rx[ret]=rx[ret]; } - puts(""); + /*/ /*prichozi data: - * rx[0] - bity 95 downto 88 - bits, that come first - * rx[1] - bity 87 downto 80 - * rx[2] - bity 79 downto 72 - * rx[3] - bity 71 downto 64 - * rx[4] - bity 63 downto 56 - * rx[5] - bity 55 downto 48 - * rx[6] - bity 47 downto 40 - * rx[7] - bity 39 downto 32 - * rx[8] - bity 31 downto 24 - * rx[9] - bity 23 downto 16 - * rx[10] - bity 15 downto 8 - * rx[11] - bity 7 downto 0 + * rx[0] - bity 127 downto 120 the first income bit..127 + * rx[1] - bity 119 downto 112 + * rx[2] - bity 111 downto 104 + * rx[3] - bity 103 downto 96 + * rx[4] - bity 95 downto 88 + * rx[5] - bity 87 downto 80 + * rx[6] - bity 79 downto 72 + * rx[7] - bity 71 downto 64 + * rx[8] - bity 63 downto 56 + * rx[9] - bity 55 downto 48 + * rx[10] - bity 47 downto 40 + * rx[11] - bity 39 downto 32 + * rx[12] - bity 31 downto 24 + * rx[13] - bity 23 downto 16 + * rx[14] - bity 15 downto 8 + * rx[15] - bity 7 downto 0 the last income bit..0 */ /*uprava endianity pozice*/ @@ -121,79 +123,75 @@ struct rpi_in spi_read(uint8_t * tx) uint8_p[4]=uint8_p[5]=uint8_p[6]=uint8_p[7]=0; /*halove sondy - * hal1 - bit63 - * hal2 - bit62 - * hal3 - bit61 + * hal1 - bit95 + * hal2 - bit94 + * hal3 - bit93 */ in.hal1=!!(0x80 & rx[4]); in.hal2=!!(0x40 & rx[4]); in.hal3=!!(0x20 & rx[4]); /*pwm enable - * en1 - bit60 - * en2 - bit59 - * en2 - bit58 + * en1 - bit92 + * en2 - bit91 + * en2 - bit90 */ in.en1=!!(0x10 & rx[4]); in.en2=!!(0x08 & rx[4]); in.en3=!!(0x04 & rx[4]); /*shutdown - * shdn1 - bit57 - * shdn2 - bit56 - * shdn3 - bit55 + * shdn1 - bit89 + * shdn2 - bit88 + * shdn3 - bit87 */ in.shdn1=!!(0x02 & rx[4]); in.shdn2=!!(0x01 & rx[4]); in.shdn3=!!(0x80 & rx[5]); - /*debug bits - * + /* current measurments count + * bits 80 downto 72 + * bit 80 in rx[5] + * bits 79..72 in rx[6] */ - in.b54=!!(0x40 & rx[5]); - in.b53=!!(0x20 & rx[5]); - in.b52=!!(0x10 & rx[5]); - in.b51=!!(0x08 & rx[5]); - in.b50=!!(0x04 & rx[5]); - in.b49=!!(0x02 & rx[5]); - in.b48=!!(0x01 & rx[5]); - in.b47=!!(0x80 & rx[6]); - in.b46=!!(0x40 & rx[6]); - in.b45=!!(0x20 & rx[6]); - in.b44=!!(0x10 & rx[6]); - in.b43=!!(0x08 & rx[6]); - in.b42=!!(0x04 & rx[6]); - in.b41=!!(0x02 & rx[6]); - in.b40=!!(0x01 & rx[6]); - in.b39=!!(0x80 & rx[7]); - in.b38=!!(0x40 & rx[7]); - in.b37=!!(0x20 & rx[7]); - in.b36=!!(0x10 & rx[7]); + + in.adc_m_count=0x01 & rx[5]; + in.adc_m_count<<=8; + in.adc_m_count|=rx[6]; + /** currents - * ch0 - bits 35 downto 24 - * 35..32 in rx[7] - last 4 - * 31..24 in rx[8] - all bytte - * ch1 - bits 23 downto 12 - * 23..16 in rx[9] - all byte - * 15..12 in rx[10] - first 4 - * ch2 - bits 11 downto 0 - * 11..8 in rx[10] - last 4 - * 7..0 in rx[11] - all byte + * ch2 - bits 71 downto 48 + * 71..64 in rx[7] - all byte + * 63..56 in rx[8] - all byte + * 55..48 in rx[9] - all byte + * ch0 - bits 47 downto 24 + * 47..40 in rx[10] - all byte + * 39..32 in rx[11] - all byte + * 31..24 in rx[12] - all byte + * ch1 - bits 23 downto 0 + * 23..16 in rx[13] - all byte + * 15..8 in rx[14] - all byte + * 7..0 in rx[15] - all byte */ - in.ch0=0x0F & rx[7]; + in.ch2=rx[7]; + in.ch2<<=8; + in.ch2|=rx[8]; + in.ch2<<=8; + in.ch2|=rx[9]; + + in.ch0=rx[10]; in.ch0<<=8; - in.ch0|=rx[8]; + in.ch0|=rx[11]; + in.ch0<<=8; + in.ch0|=rx[12]; - in.ch1= rx[9]; + in.ch1=rx[13]; in.ch1<<=8; - in.ch1|=(rx[10] & 0xF0); - in.ch1>>=4; - - in.ch2=(0xF & rx[10]); - in.ch2<<=8; - in.ch2|=rx[11]; + in.ch1|=rx[14]; + in.ch1<<=8; + in.ch1|=rx[15]; return in;