Использование 10-битного АЦП только для 8 бит на микроконтроллере PIC

У меня есть PIC16f1824 со встроенным 10-битным АЦП, но мне нужна только 8-битная точность. Мне нужно не просто 8-битное значение, а фактическое 8-битное преобразование, т.е. более высокие выборки в секунду за счет битов. Здесь я застрял, потому что регистр ADRESH загружается только после выполнения полного 10-битного преобразования.

Очистите бит ADFM в регистре ADCON1, чтобы получить старшие 8 бит результата в регистре ADCRESH после преобразования АЦП.
Вы задаете вопрос XY. Было бы лучше указать ваши требования с точки зрения требуемой точности и требуемой частоты дискретизации.
В техническом паспорте детали ясно, что преобразование фиксируется на периоде 11,5 Tad. Его нельзя улучшить, уменьшив разрешение на этой конкретной части. Таким образом, это аппаратная проблема, а не вопрос программирования.
Вы просите A/D сделать что-то, для чего он не был предназначен. Прочитайте техническое описание. Совершенно ясно, что может сделать АЦП и как заставить его это делать. Если вам нужна более быстрая выборка, чем может сделать встроенный аналого-цифровой преобразователь, вам нужно использовать другой аналого-цифровой преобразователь. Некоторые из PIC 24 и dsPIC могут производить выборку с частотой МГц или выше. Имейте в виду, что небольшая 8-битная часть, подобная той, которую вы используете, может обрабатывать сэмплы только очень быстро, независимо от того, насколько быстро вы можете заставить АЦП генерировать их. Какая скорость при 8 битах вам нужна?
За исключением того, что таблица данных также достаточно ясна, вы можете завершить преобразование раньше и получить частично преобразованный результат, по крайней мере, для этого конкретного PIC.
@SimonJenkins: Верно, но вам потребуется очень точное время для детерминированного усечения преобразования, и в результате накладные расходы на программное обеспечение, вероятно, приведут к уменьшению, а не увеличению частоты дискретизации.

Ответы (2)

Эта тема: http://www.edaboard.com/thread155430.html должна помочь. По сути, вам придется выполнить некоторое преобразование самостоятельно, но настройка АЦП на выравнивание по левому краю даст вам биты 9-2 в байте ADRESH, которые вы затем можете использовать в качестве 8-битного значения.

Я не думаю, что вы можете настроить чип для обеспечения 8-битной точности за счет более высоких выборок в секунду. Это дизайнерский проект, сделанный при заказе детали. Я могу ошибаться, и я бы проконсультировался с соответствующим листом данных.

Аппаратно нет возможности настроить АЦП для выполнения 8-битных преобразований.

Однако преобразование можно прервать досрочно, сбросив бит GO/DONE в программном обеспечении. Когда это сделано, частично полный результат помещается в ADRESH/ADRESL (с оставшимися битами, соответствующими последнему биту, который был преобразован).

Таким образом, вы могли бы выполнять 8-битные преобразования, организовав в программном обеспечении очистку GO/DONE сразу после преобразования 8-го бита. (Может быть, в прерывании по таймеру, которое работает с нужной скоростью, то есть на 2 * TAD быстрее, чем потребовалось бы полное преобразование?)

Некоторые PIC загружают ADRESH/ADRESL только после завершения 10-битного преобразования, и, если преобразование прекращается досрочно, ADRESH/ADRESL остаются неизменными. Некоторое время назад я пытался сделать это сам с другим PIC и наткнулся на кирпичную стену.