PDA

Просмотр полной версии : АЦП на С8051А120 (silabs)



Amster
10.08.2010, 14:06
Привет
Сразу скажу, я в этом деле новичек, не судите строго

Вопрос такой:
в данной микросхеме есть 12 разрядный АЦП. Аналог сигнал преобразуется, и преобразованный код (12 разрядов) поступает в 2 8-разрядных регистра: 8 старших в 1 и 4 младших во второй.

Регистр, отвечающий за вывод информации на экран, имеет 8 разрядов. Так же дана формула кода: Code= Vinput*(Gain=1/VREF=2,4V) *2^12

Каким образом можно в итоге на экране получить значения подаваемого напряжения в виде, например: 3,3V

ut1wpr
10.08.2010, 16:43
Сразу скажу, я в этом деле новичек, не судите строгоСразу спрошу, в каком? :)


Вопрос такой:
в данной микросхеме есть 12 разрядный АЦП. Аналог сигнал преобразуется, и преобразованный код (12 разрядов) поступает в 2 8-разрядных регистра: 8 старших в 1 и 4 младших во второй.Ну, положим они не по порядку нумеруются. Они обычно так и называются, младший и старший регистры данных АЦП. И содержат соответственно младшую часть результата и старшую. Вот только не напутали ли Вы? Обычно старших разрядов меньше. А регистр младших разрядов всегда заполнен. Ну, да это не существенно...

Регистр, отвечающий за вывод информации на экран, имеет 8 разрядов. Так же дана формула кода: Code= Vinput*(Gain=1/VREF=2,4V) *2^12
Каким образом можно в итоге на экране получить значения подаваемого напряжения в виде, например: 3,3V О, это уже вопрос к ясновидцам. Это на каком же экране и что надо получить? Индикаторы, дисплеи, их типы - всё это разные вещи и операции с ними тоже разные. Решение единственное - написать программу измерения, вычисления и индикации. Как минимум, надо уметь писать программы.
Пожалуйста, присмотритесь к другим постам, попробуйте более чётко и правильно формулировать вопросы. Быть может, ответы сами и найдутся. Однако судя по глобализации вопроса, Вам ещё рановато подходить к решению подобной задачи, без обид. Невозможно перескакивать через много ступеней. Мы и в школе учились класс за классом..

Amster
10.08.2010, 17:07
Вот только не напутали ли Вы? Обычно старших разрядов меньше. А регистр младших разрядов всегда заполнен. Ну, да это не существенно...
не напутал, это можно поменять в настройках


О, это уже вопрос к ясновидцам. Это на каком же экране и что надо получить? Индикаторы, дисплеи, их типы - всё это разные вещи и операции с ними тоже разные. Решение единственное - написать программу измерения, вычисления и индикации. Как минимум, надо уметь писать программы.
Пожалуйста, присмотритесь к другим постам, попробуйте более чётко и правильно формулировать вопросы. Быть может, ответы сами и найдутся.

Видимо, я действительно не ясно выразился. Попробую сделать это лучше. Надо получить на экране монитора (через HyperTerminal) значение напряжения в удобной для человека форме: 1,2V, 2,4V и так далее. В контроллер вшита своя таблица перекодировки (или как там она называется), поэтому сейчас на выходе (мониторе) я имею скобочки, звездочки, циферки и так далее. Надо как-то перекодировать полученный код. Конечно, можно программно задать условия для каждой комбинации 12 разрядного числа, но это же просто жесть. Какие есть способы?


Однако судя по глобализации вопроса, Вам ещё рановато подходить к решению подобной задачи, без обид. Невозможно перескакивать через много ступеней. Мы и в школе учились класс за классом..

я учту Ваше мнение и обязательно загляну на каждую из пропущенных ступенек.

В любом случае спасибо, что ответили

ut1wpr
10.08.2010, 17:23
(через HyperTerminal) значение напряжения в удобной для человека форме: 1,2V, 2,4V и так далее. В контроллер вшита своя таблица перекодировки (или как там она называется), поэтому сейчас на выходе (мониторе) я имею скобочки, звездочки, циферки и так далее. Надо как-то перекодировать полученный код. Конечно, можно программно задать условия для каждой комбинации 12 разрядного числа, но это же просто жесть. Какие есть способы?
"В контроллер вшита своя таблица перекодировки (или как там она называется)" - откуда такая уверенность? Вы имеете исходный текст программы контроллера? Тогда не составит труда её изменить.
" Надо как-то перекодировать полученный код" - Надо знать исходный код как минимум. Иначе задача не имеет решения.
Впрочем, вполне возможно, что устройство, с которым Вы имеете дело просто выводит именно эти два байта. Если это так, то Вам надо отказаться от Гипертерминала (он отображает только ASCII символы) и написать свою терминалку, которая для начала будет выводить эти байты в HEX-формате. Во всяком случае, это поможет разобраться, что же такое там в потоке. Далее уже принимать решение, как конвертнуть эти данные в читаемый формат.


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