реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Atxmega калибровка АЦП
Navovvol
сообщение Dec 24 2011, 08:12
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



как откалибровать АЦП ? всё ли я так делаю ?
что загрузить в регистры Z ? все пишут о каких то сигнатурах, но где и как их найти никто не знает.
Код
outi NVM_CMD,0x02
LPM
mov   r16, r0
STS ADCA_CAL,R16
Go to the top of the page
 
+Quote Post
bob1
сообщение Dec 24 2011, 08:58
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 17-09-06
Пользователь №: 20 471



Попробуйте так.
Код
    ldi r16,PROD_SIGNATURES_START + ADCACAL0_offset
   call SP_ReadCalibrationByte
  sts ADCA.CALL,r16
   ldi r16,PROD_SIGNATURES_START + ADCACAL1_offset
   call SP_ReadCalibrationByte
   sts ADCA.CALH,r16


SP_ReadCalibrationByte:
      ldi    r20, NVM_CMD_READ_CALIB_ROW_gc    ; Prepare NVM command in R20.
      mov    ZL, r16                              ; Load byte index into low byte of Z.
      clr    ZH                                ; Clear high byte of Z.
      sts    NVM_CMD, r20                         ; Load prepared command into NVM Command register.
      lpm   r16, Z                            ; Preform a LPM to read out byte to R16
      ldi    r20, NVM_CMD_NO_OPERATION_gc         ; Clear NVM Command register
      sts    NVM_CMD, r20
      ret


Сообщение отредактировал bob1 - Dec 24 2011, 09:04
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Dec 24 2011, 10:02
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Цитата(bob1 @ Dec 24 2011, 11:58) *
Попробуйте так.

Спасибо. Разобрался. Некоторые вещи пришлось подогнать, теперь вот так:
Код
   ldi r16,PROD_SIGNATURES_START + NVM_PROD_SIGNATURES_ADCACAL0_offset
   call SP_ReadCalibrationByte
   sts ADCA_CAL,r16
   ldi r16,PROD_SIGNATURES_START + NVM_PROD_SIGNATURES_ADCACAL1_offset
   call SP_ReadCalibrationByte
   sts ADCA_CAL+1,r16


SP_ReadCalibrationByte:
      ldi    r20, NVM_CMD_READ_CALIB_ROW_gc   ; Prepare NVM command in R20.
      mov    ZL, r16                             ; Load byte index into low byte of Z.
      clr    ZH                               ; Clear high byte of Z.
      sts    NVM_CMD, r20                        ; Load prepared command into NVM Command register.
      lpm   r16, Z                           ; Preform a LPM to read out byte to R16
      ldi    r20, NVM_CMD_NO_OPERATION_gc        ; Clear NVM Command register
      sts    NVM_CMD, r20
ret

в регистр калибровки ADCA записывает значение 0х00FF.
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Dec 25 2011, 09:28
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



что с калибровкой, что без нее, никакой разницы нет. ерунда какая- то... зря только время потратил. Так и не понятно, как эта калибровка работает. Кто нить заметил зависимость регистра результата АЦП от значения в регистре калибровки ?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 25 2011, 15:05
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Navovvol @ Dec 25 2011, 11:28) *
что с калибровкой, что без нее, никакой разницы нет. ерунда какая- то... зря только время потратил. Так и не понятно, как эта калибровка работает. Кто нить заметил зависимость регистра результата АЦП от значения в регистре калибровки ?


А что не так с АЦП?
Шумит?
Результат невменяемый?
Какая ревизия xmeg-и?
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Dec 26 2011, 05:23
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Цитата(_Артём_ @ Dec 25 2011, 18:05) *
А что не так с АЦП?
Шумит?
Результат невменяемый?
Какая ревизия xmeg-и?

ревизия H
просто от этого калибровочного значения ни тепло ни холодно, точнее АЦП не стал. подаю на вход четкий ноль - АЦП показывает от -1 до 1 (т.е. от 0xFF до 0x01) (знаковый, ИОН внутр 1В) и никакой разницы, что с калибровочным значение, что без него.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 26 2011, 13:03
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Navovvol @ Dec 26 2011, 07:23) *
ревизия H
просто от этого калибровочного значения ни тепло ни холодно, точнее АЦП не стал. подаю на вход четкий ноль - АЦП показывает от -1 до 1 (т.е. от 0xFF до 0x01) (знаковый, ИОН внутр 1В) и никакой разницы, что с калибровочным значение, что без него.


Мой пример:
CODE
ADC_CalibrationValues_Load(&ADCA);
ADC_CalibrationValues_Load(&ADCB);
ADC_ConvMode_and_Resolution_Config(&ADCA, ADC_ConvMode_Unsigned, ADC_RESOLUTION_12BIT_gc);
ADC_ConvMode_and_Resolution_Config(&ADCB, ADC_ConvMode_Unsigned, ADC_RESOLUTION_12BIT_gc);
ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV128_gc);
ADC_Prescaler_Config(&ADCB, ADC_PRESCALER_DIV128_gc);
ADC_Reference_Config(&ADCA, ADC_REFSEL_VCC_gc);
ADC_Reference_Config(&ADCB, ADC_REFSEL_VCC_gc);

ADC_Enable(&ADCA);
ADC_Enable(&ADCB);
ADC_Wait_32MHz(&ADCA);
ADC_Wait_32MHz(&ADCB);

ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH0, ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH1, ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH2, ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH3, ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
// adcB
ADC_Ch_InputMode_and_Gain_Config(&ADCB.CH0, ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
ADC_Ch_InputMode_and_Gain_Config(&ADCB.CH1, ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
ADC_Ch_InputMode_and_Gain_Config(&ADCB.CH2, ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
ADC_Ch_InputMode_and_Gain_Config(&ADCB.CH3, ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);

/// пауза
unsigned short adc_result;
unsigned short adc[4];
for (i=0; i<4; i++) {
adc[i]=adc_ch_ptr->RES;
}


Плохо если Atmel в ревизии H АЦП ещё не доделал...
А какая xmeg-а, A/D/B?

Сообщение отредактировал IgorKossak - Dec 26 2011, 17:52
Причина редактирования: [codebox]
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Dec 27 2011, 06:16
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Цитата(_Артём_ @ Dec 26 2011, 16:03) *
Плохо если Atmel в ревизии H АЦП ещё не доделал...
А какая xmeg-а, A/D/B?

Atxmega128 A1, Olimex ' овская плата AVR-HX128A1
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Dec 28 2011, 08:00
Сообщение #9


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(Navovvol @ Dec 26 2011, 09:23) *
ревизия H
просто от этого калибровочного значения ни тепло ни холодно, точнее АЦП не стал. подаю на вход четкий ноль - АЦП показывает от -1 до 1 (т.е. от 0xFF до 0x01) (знаковый, ИОН внутр 1В) и никакой разницы, что с калибровочным значение, что без него.


внешний опорник не пробывали?


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
yvk
сообщение Dec 28 2011, 10:43
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 28-02-06
Из: Kharkiv
Пользователь №: 14 770



Удалось победить хмеговский ацп при следующих условиях:
-все неиспользованные входа ацп подключены на землю
-опора внешняя, 2,5В ( внутреннюю 1В не использовать)
-дифференциальный знаковый режим
-смещение нуля измеряется на заземленном входе
Иначе результат измерений напоминал генератор случайных чисел.


--------------------
Не плыви по течению. Не плыви против течения. Плыви туда, куда тебе нужно.
К.Прутков-инженер.
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Dec 28 2011, 10:51
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Цитата(Kovrov @ Dec 28 2011, 11:00) *
внешний опорник не пробывали?

нет, а что это что-то меняет ?
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Dec 28 2011, 14:16
Сообщение #12


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(yvk @ Dec 28 2011, 14:43) *
Удалось победить хмеговский ацп при следующих условиях:
-все неиспользованные входа ацп подключены на землю


а не проще порт на вывод и в нуль установить?

Цитата(Navovvol @ Dec 28 2011, 14:51) *
нет, а что это что-то меняет ?


очень многое - поищите - на форуме я приводил досконально работу внутреннего иона (правда на меге и очень давно ;-)
я тогда сам натыкался: дрейфует и шумит он не по детски.

Цитата(yvk @ Dec 28 2011, 14:43) *
Удалось победить хмеговский ацп при следующих условиях:

ну и как после всего этого?
полные 12 бит удалось получить без джиттера?
какие доп условия? время конверсии итд?
Просто все никак не решаюсь ацп на хмеге протестить - все пугают- пугают :-)


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
yvk
сообщение Dec 30 2011, 10:48
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 28-02-06
Из: Kharkiv
Пользователь №: 14 770



Цитата(Kovrov @ Dec 28 2011, 16:16) *
ну и как после всего этого?
полные 12 бит удалось получить без джиттера?
какие доп условия? время конверсии итд?
Просто все никак не решаюсь ацп на хмеге протестить - все пугают- пугают :-)

джиттер небольшой остался, конечно, но в приемлемых пределах - так что бит 10 получилось, было достаточно для решения задачи
тактовая частота ацп - 230 кГц
забыл добавить еще было скользящее среднее по 16 выборкам


--------------------
Не плыви по течению. Не плыви против течения. Плыви туда, куда тебе нужно.
К.Прутков-инженер.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01459 секунд с 7
ELECTRONIX ©2004-2016