navovvol 0 24 декабря, 2011 Опубликовано 24 декабря, 2011 · Жалоба как откалибровать АЦП ? всё ли я так делаю ? что загрузить в регистры Z ? все пишут о каких то сигнатурах, но где и как их найти никто не знает. outi NVM_CMD,0x02 LPM mov r16, r0 STS ADCA_CAL,R16 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bob1 0 24 декабря, 2011 Опубликовано 24 декабря, 2011 (изменено) · Жалоба Попробуйте так. 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 Изменено 24 декабря, 2011 пользователем bob1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
navovvol 0 24 декабря, 2011 Опубликовано 24 декабря, 2011 · Жалоба Попробуйте так. Спасибо. Разобрался. Некоторые вещи пришлось подогнать, теперь вот так: 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
navovvol 0 25 декабря, 2011 Опубликовано 25 декабря, 2011 · Жалоба что с калибровкой, что без нее, никакой разницы нет. ерунда какая- то... зря только время потратил. Так и не понятно, как эта калибровка работает. Кто нить заметил зависимость регистра результата АЦП от значения в регистре калибровки ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 25 декабря, 2011 Опубликовано 25 декабря, 2011 · Жалоба что с калибровкой, что без нее, никакой разницы нет. ерунда какая- то... зря только время потратил. Так и не понятно, как эта калибровка работает. Кто нить заметил зависимость регистра результата АЦП от значения в регистре калибровки ? А что не так с АЦП? Шумит? Результат невменяемый? Какая ревизия xmeg-и? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
navovvol 0 26 декабря, 2011 Опубликовано 26 декабря, 2011 · Жалоба А что не так с АЦП? Шумит? Результат невменяемый? Какая ревизия xmeg-и? ревизия H просто от этого калибровочного значения ни тепло ни холодно, точнее АЦП не стал. подаю на вход четкий ноль - АЦП показывает от -1 до 1 (т.е. от 0xFF до 0x01) (знаковый, ИОН внутр 1В) и никакой разницы, что с калибровочным значение, что без него. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 26 декабря, 2011 Опубликовано 26 декабря, 2011 (изменено) · Жалоба ревизия H просто от этого калибровочного значения ни тепло ни холодно, точнее АЦП не стал. подаю на вход четкий ноль - АЦП показывает от -1 до 1 (т.е. от 0xFF до 0x01) (знаковый, ИОН внутр 1В) и никакой разницы, что с калибровочным значение, что без него. Мой пример: 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? Изменено 26 декабря, 2011 пользователем IgorKossak [codebox] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
navovvol 0 27 декабря, 2011 Опубликовано 27 декабря, 2011 · Жалоба Плохо если Atmel в ревизии H АЦП ещё не доделал... А какая xmeg-а, A/D/B? Atxmega128 A1, Olimex ' овская плата AVR-HX128A1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 28 декабря, 2011 Опубликовано 28 декабря, 2011 · Жалоба ревизия H просто от этого калибровочного значения ни тепло ни холодно, точнее АЦП не стал. подаю на вход четкий ноль - АЦП показывает от -1 до 1 (т.е. от 0xFF до 0x01) (знаковый, ИОН внутр 1В) и никакой разницы, что с калибровочным значение, что без него. внешний опорник не пробывали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yvk 0 28 декабря, 2011 Опубликовано 28 декабря, 2011 · Жалоба Удалось победить хмеговский ацп при следующих условиях: -все неиспользованные входа ацп подключены на землю -опора внешняя, 2,5В ( внутреннюю 1В не использовать) -дифференциальный знаковый режим -смещение нуля измеряется на заземленном входе Иначе результат измерений напоминал генератор случайных чисел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
navovvol 0 28 декабря, 2011 Опубликовано 28 декабря, 2011 · Жалоба внешний опорник не пробывали? нет, а что это что-то меняет ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 28 декабря, 2011 Опубликовано 28 декабря, 2011 · Жалоба Удалось победить хмеговский ацп при следующих условиях: -все неиспользованные входа ацп подключены на землю а не проще порт на вывод и в нуль установить? нет, а что это что-то меняет ? очень многое - поищите - на форуме я приводил досконально работу внутреннего иона (правда на меге и очень давно ;-) я тогда сам натыкался: дрейфует и шумит он не по детски. Удалось победить хмеговский ацп при следующих условиях: ну и как после всего этого? полные 12 бит удалось получить без джиттера? какие доп условия? время конверсии итд? Просто все никак не решаюсь ацп на хмеге протестить - все пугают- пугают :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yvk 0 30 декабря, 2011 Опубликовано 30 декабря, 2011 · Жалоба ну и как после всего этого? полные 12 бит удалось получить без джиттера? какие доп условия? время конверсии итд? Просто все никак не решаюсь ацп на хмеге протестить - все пугают- пугают :-) джиттер небольшой остался, конечно, но в приемлемых пределах - так что бит 10 получилось, было достаточно для решения задачи тактовая частота ацп - 230 кГц забыл добавить еще было скользящее среднее по 16 выборкам Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться