@@ -70,7 +70,7 @@ MCP3x6x::MCP3x6x(const uint8_t pinIRQ, const uint8_t pinMCLK, const uint16_t MCP
7070}
7171
7272void MCP3x6x::_reverse_array (uint8_t *array, size_t size) {
73- for (size_t i = 0 , e = size; i < e / 2 ; i++, e--) {
73+ for (size_t i = 0 , e = size; i <= e / 2 ; i++, e--) {
7474 uint8_t temp = array[i];
7575 array[i] = array[e - 1 ];
7676 array[e - 1 ] = temp;
@@ -248,16 +248,15 @@ int32_t MCP3x6x::_getValue(uint32_t raw) {
248248 case 16 :
249249 switch (settings.config3 .data_format ) {
250250 case (data_format::SGN_DATA_ZERO):
251- return raw >> 8 ;
251+ return raw >> 16 ;
252252 case (data_format::SGN_DATA):
253253 bitWrite (raw, 31 , bitRead (raw, 16 ));
254+ bitClear (raw, 16 );
254255 return raw;
255- break ;
256256 case (data_format::SGNEXT_DATA):
257257 case (data_format::ID_SGNEXT_DATA):
258258 bitWrite (raw, 31 , bitRead (raw, 17 ));
259259 return raw & 0x8000FFFF ;
260- break ;
261260 };
262261 break ;
263262
@@ -267,13 +266,12 @@ int32_t MCP3x6x::_getValue(uint32_t raw) {
267266 return raw >> 8 ;
268267 case (data_format::SGN_DATA):
269268 bitWrite (raw, 31 , bitRead (raw, 24 ));
269+ bitClear (raw, 24 );
270270 return raw;
271- break ;
272271 case (data_format::SGNEXT_DATA):
273272 case (data_format::ID_SGNEXT_DATA):
274273 bitWrite (raw, 31 , bitRead (raw, 25 ));
275274 return raw & 0x80FFFFFF ;
276- break ;
277275 };
278276 break ;
279277 }
0 commit comments