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*/
uint8_p[1]=rx[2];
uint8_p[2]=rx[1];
uint8_p[3]=rx[0]; /*MSB*/ /*with sign bit*/
- 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
+ /* index position
+ * bits 92 downto 81
+ * 92..88 in rx[4] last 5 bits (from left)
+ * 87..81 in rx[5] first 7 bits (from left)
*/
- in.en1=!!(0x10 & rx[4]);
- in.en2=!!(0x08 & rx[4]);
- in.en3=!!(0x04 & rx[4]);
-
- /*shutdown
- * shdn1 - bit57
- * shdn2 - bit56
- * shdn3 - bit55
+ in.index_position=0x1F & rx[4];
+ in.index_position<<=8;
+ in.index_position|=0xFE & rx[5];
+ in.index_position>>=1;
+
+ /* current measurments count
+ * bits 80 downto 72
+ * bit 80 in rx[5]
+ * bits 79..72 in rx[6]
*/
- in.shdn1=!!(0x02 & rx[4]);
- in.shdn2=!!(0x01 & rx[4]);
- in.shdn3=!!(0x80 & rx[5]);
- /*debug bits
- *
- */
- 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;