|
Преобразование кода 24 битного ацп к виду напряжения |
|
|
|
Dec 31 2015, 15:46
|
Местный
  
Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602

|
Цитата(messenger @ Dec 31 2015, 18:32)  Преобразую код 24 битного ацп к виду напряжения. А можно поинтересоваться,зачем это преобразование? Ну и попутно ещё всякие вопросы.
|
|
|
|
|
Dec 31 2015, 19:20
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Цитата(Alex11 @ Dec 31 2015, 21:41)  if(acp_MSB < 0) cod_acp.b3 = 0xff; else cod_acp.b3 = 0; Здесь acp_MSB - байт, он беззнаковый и компилятор об этом предупредит. Надо примерно так: Код </p><p>union long2uch { struct { struct { unsigned char l,ml,mh,h; } byte; signed long sl; } } acp;
acp.byte.l = 0; acp.byte.ml = acp_LSB; acp.byte.mh = acp_Mid_Byte; acp.byte.h = acp_MSB;
double znachenie_acp = acp.sl*(5.0/(2147483648*64));</p><p>
|
|
|
|
|
Jan 1 2016, 14:43
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
надо убрать плавающую запятую совсем и сделать просто adcVolt = (adcCode * 149) >> 4; результат получится в десятках наноВольт с точностью до 0.007%. Цитата Надо примерно так: double znachenie_acp = acp.sl*(5.0/(2147483648*64)); вот так как раз не надо (особенно учитывая что это codevision), потому что (2147483648*64) хоть и стоит рядом с 5.0, думаю вполне может оказаться что будет сначала посчитано как int (который у АВР кстати вообще 16 битный, хотя опять же, как там у codevision - не уверен) а только потом преобразовано в double.
|
|
|
|
|
Jan 1 2016, 17:21
|
Местный
  
Группа: Участник
Сообщений: 361
Регистрация: 23-03-07
Пользователь №: 26 457

|
Цитата(_pv @ Jan 1 2016, 18:43)  надо убрать плавающую запятую совсем и сделать просто adcVolt = (adcCode * 149) >> 4; результат получится в десятках наноВольт с точностью до 0.007%. поясните пожалуйста для начинающих, не могу въехать
|
|
|
|
|
Jan 1 2016, 17:52
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Цитата(messenger @ Jan 1 2016, 20:21)  поясните пожалуйста для начинающих, не могу въехать Вопрос в том что вы хотите получить. Вам действительно нужна точность 24 бита?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|