|
|
  |
Atxmega калибровка АЦП |
|
|
|
Dec 24 2011, 08:12
|
Частый гость
 
Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080

|
как откалибровать АЦП ? всё ли я так делаю ? что загрузить в регистры Z ? все пишут о каких то сигнатурах, но где и как их найти никто не знает. Код outi NVM_CMD,0x02 LPM mov r16, r0 STS ADCA_CAL,R16
|
|
|
|
|
Dec 24 2011, 08:58
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Dec 24 2011, 10:02
|
Частый гость
 
Группа: Участник
Сообщений: 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.
|
|
|
|
|
Dec 25 2011, 15:05
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(Navovvol @ Dec 25 2011, 11:28)  что с калибровкой, что без нее, никакой разницы нет. ерунда какая- то... зря только время потратил. Так и не понятно, как эта калибровка работает. Кто нить заметил зависимость регистра результата АЦП от значения в регистре калибровки ? А что не так с АЦП? Шумит? Результат невменяемый? Какая ревизия xmeg-и?
|
|
|
|
|
Dec 26 2011, 05:23
|
Частый гость
 
Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080

|
Цитата(_Артём_ @ Dec 25 2011, 18:05)  А что не так с АЦП? Шумит? Результат невменяемый? Какая ревизия xmeg-и? ревизия H просто от этого калибровочного значения ни тепло ни холодно, точнее АЦП не стал. подаю на вход четкий ноль - АЦП показывает от -1 до 1 (т.е. от 0xFF до 0x01) (знаковый, ИОН внутр 1В) и никакой разницы, что с калибровочным значение, что без него.
|
|
|
|
|
Dec 26 2011, 13:03
|
Гуру
     
Группа: Свой
Сообщений: 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]
|
|
|
|
|
Dec 27 2011, 06:16
|
Частый гость
 
Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080

|
Цитата(_Артём_ @ Dec 26 2011, 16:03)  Плохо если Atmel в ревизии H АЦП ещё не доделал... А какая xmeg-а, A/D/B? Atxmega128 A1, Olimex ' овская плата AVR-HX128A1
|
|
|
|
|
Dec 28 2011, 10:43
|
Участник

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

|
Удалось победить хмеговский ацп при следующих условиях: -все неиспользованные входа ацп подключены на землю -опора внешняя, 2,5В ( внутреннюю 1В не использовать) -дифференциальный знаковый режим -смещение нуля измеряется на заземленном входе Иначе результат измерений напоминал генератор случайных чисел.
--------------------
Не плыви по течению. Не плыви против течения. Плыви туда, куда тебе нужно. К.Прутков-инженер.
|
|
|
|
|
Dec 28 2011, 10:51
|
Частый гость
 
Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080

|
Цитата(Kovrov @ Dec 28 2011, 11:00)  внешний опорник не пробывали? нет, а что это что-то меняет ?
|
|
|
|
|
Dec 28 2011, 14:16
|

Мастер-фломастер
   
Группа: Свой
Сообщений: 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 бит удалось получить без джиттера? какие доп условия? время конверсии итд? Просто все никак не решаюсь ацп на хмеге протестить - все пугают- пугают :-)
--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
|
|
|
|
|
Dec 30 2011, 10:48
|
Участник

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

|
Цитата(Kovrov @ Dec 28 2011, 16:16)  ну и как после всего этого? полные 12 бит удалось получить без джиттера? какие доп условия? время конверсии итд? Просто все никак не решаюсь ацп на хмеге протестить - все пугают- пугают :-) джиттер небольшой остался, конечно, но в приемлемых пределах - так что бит 10 получилось, было достаточно для решения задачи тактовая частота ацп - 230 кГц забыл добавить еще было скользящее среднее по 16 выборкам
--------------------
Не плыви по течению. Не плыви против течения. Плыви туда, куда тебе нужно. К.Прутков-инженер.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|