Перейти к содержанию
    

Преобразование кода АЦП

Можно сделать ход конём - умножением результата измерения АЦП на заранее посчитанный Кi. Тогда делить надо только на 100. Хотя если подумать и эту операцию можно по возможности сократить. Где-то делал такой алгоритм на асме, завтра гляну в старых проектах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость @Ark
да, передать по интерфейсу 485, но не в кодеровке, а именно 2 байта, но представление инфы долждно быть как десятичное, те вычитал (например 0А8А) и отправил в первом байте 05, во втором - 12 (условно), и это типа 5,12 вольта.Сижу ломаю голову:(

Голову не ломайте - сделайте просто: определите как выглядят значения 1.00, 0.10 и 0.01 вольт в вашем двухбайтовом представлении. Далее: вычитанием из текущего значения определяете количество сначала единиц, затем десятых, затем сотых. Три цикла максимум по 10 проходов. Не так уж и много по времени... Потребуются 5 вариантов для разных масштабов напряжений...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел фрагмент, может поможет...

R6R5 - код с АЦП (старший и младший байты), DataRashL - мл. байт Ki*256 (Ki дробный), DataRashH - старший байт, в R2R1R0 будет результат.

 

    MOV    A,R5    //R2R1R0 = R6R5*DataRash /256
    MOV    B,DataRashL
    MUL    AB
    MOV    R0,B
    
    MOV    A,R6
    MOV    B,DataRashL
    MUL    AB
    ADD    A,R0
    MOV    R0,A
    CLR    A
    ADDC    A,B
    MOV    R1,A
    CLR    A
    ADDC    A,#00h
    MOV    R2,A

    MOV    A,R5
    MOV    B,DataRashH
    MUL    AB
    ADD    A,R0
    MOV    R0,A
    MOV    A,R1
    ADDC    A,B
    MOV    R1,A
    MOV    A,R2
    ADDC    A,#00h
    MOV    R2,A

    MOV    A,R6
    MOV    B,DataRashH
    MUL    AB
    ADD    A,R1
    MOV    R1,A
    MOV    A,R2
    ADDC    A,B
    MOV    R2,A

 

Возможно что не оптимизировано по тактам, но довольно шустро и точно... Если надо гляну как деление делал

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

всем спасибо за советы, забрел сейчас в такие дебри, делю - нахожу целую часть, потом умножаю на 16, опять делю, и еще раз...имею вроде как дробь в 16 формате, типа 4,8Е, вот теперь осталось перевести и все...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все... имею на выходе челую и дробную части, загрубляю результат на тысячных, кому интересно - могу дать чо накрапал. просто целочисленное деление по сути...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понимю тема про АЦП. В контроллера ADuC841, АЦП может работать как температурный датчик.

Вопрос. Как этот дачик отградуирован ? какой код соответсвует 0 град, и как меняется код при изменении температцры на 1 град.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понимю тема про АЦП. В контроллера ADuC841, АЦП может работать как температурный датчик.

Вопрос. Как этот дачик отградуирован ? какой код соответсвует 0 град, и как меняется код при изменении температуры на 1 град.

Изменено пользователем asm_lock

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос такой:

есть код ацп, его надо преобразовать в десятичную форму(1й байт целая часть, 2й - дробная). Как проще всего это сделать. Пишу на асме, контроллер - ADuC841.

 

А вот такой вариант: при помощи сдвига обоих байтов влево или вправо подогнать нужное входное напряжение. Если ни чего не двигать то 16 вольт в старшем байте - это максимальное входное напряжение, остаётся подогнать усиление на на входе ADC. Младший байт уже доли от одного вольта. Простенько, но со вкусом! Ни каких плавающих запятых, вопрос только в железе, позволяет ли оно менять усиление?

Изменено пользователем Микрюков Вячеслав

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...