admin

Работа MCP3421 АЦП 18 бит с микроконтроллером ATmega32

10 сообщений в этой теме

admin    2 316

В статье дан пример работы микроконтроллера Atmega32 с микросхемой MCP3421 по шине данных I2C. Приведена последовательность действий c модулем TWI микроконтроллера Atmega32 и подробное описание кода микроконтроллера.

e0ad8096ca28d1888b6d5af7e48e3bae.png

Ссылка на статью: http://cxem.net/mc/mc441.php

Автор статьи: http://cxem.net/profile/17726/

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


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

А можно пример работы с MCP3422, что менять 4 бит в конфигурационном байте, это понятно, а как считать значения с обоих каналов?

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

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


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

 здесь нет обеих каналов, есть один АЦП и мультиплексор два входа(канала), 

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

ЗЫ формулы расчета паузы на заряд смотреть в РМ на средние семейство

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


Ссылка на сообщение
Поделиться на других сайтах
CyberTroy    1
11 час назад, IMXO сказал:

 здесь нет обеих каналов, есть один АЦП и мультиплексор два входа(канала)

Игра слов?

Цитата

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

Я это понимаю, но с реализацией проблема, в программировании я не очень силён, всё очень посредственно, если не сложно можно образец кода?

 

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


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

Найдите миллионы труднодоступных

электронных компонентов

IMXO    1 345
3 часа назад, CyberTroy сказал:

Игра слов?

ни какой игры, фраза "считать значения с обоих каналов" подразумевает преобразование по двум каналам и наличие регистров где лежат результаты с двух каналов, в MCP3422 этого нет. есть результат преобразования текущего канала.

3 часа назад, CyberTroy сказал:

можно образец кода?

лениво писать. код такой же как в статье. за исключением некоторых деталей

1. в функции MCP3421_config указывается одиночное преобразование , номер канала и выставляется флаг RDY - старт преобразования

2. в функции TWI_Receivebytes дополнительно читается 4-ый байт , являющийся байтом конфигурации , если бит RDY=0 - преобразование окончено и данные валидны , если =1 идет преобразование.

 

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


Ссылка на сообщение
Поделиться на других сайтах
CyberTroy    1
В 25.07.2018 в 17:40, IMXO сказал:

в функции TWI_Receivebytes дополнительно читается 4-ый байт , являющийся байтом конфигурации , если бит RDY=0 - преобразование окончено и данные валидны , если =1 идет преобразование.

в этой функции идет прём трёх байтов данный ацп, как считать и прикрутить бит RDY? Как реализовать в коде?

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

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


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

открыть  ДШ, посмотреть картинко

i2c.thumb.png.0f737a0ba2c223b417d82a01af7c0c39.png

 

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


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

  Сигнал на входе АЦП должен сохраняться на Аналоговом Запоминающем Устройстве (АЗУ) в течение времени преобразования его в цифровой код. Обсуждаемый АЦП такого АЗУ не имеет. Автору статьи необходимо уточнить область применения такого устройства с учётом верхней граничной частоты сигнала, допустимого уровня помехи и погрешности получаемых данных.  

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


Ссылка на сообщение
Поделиться на других сайтах
CyberTroy    1
14 часа назад, IMXO сказал:

открыть  ДШ, посмотреть картинко

i2c.thumb.png.0f737a0ba2c223b417d82a01af7c0c39.png

 

:huh:мрак. Если не трудно подскажите пример кода считывания RDY. 

void TWI_Receivebytes()

{

  //Прием первого байта данных

  TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);//Отправляем "ACK": TWEA=1

  while(~TWCR&(1<<TWINT));//Подождать завершения операции

  a1=TWDR;//Записываем старший байт из MCP3421 в переменную a1=TWDR;

  //

  //Прием второго байта данных

  TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);//Отправляем "ACK": TWEA=1

  while(~TWCR&(1<<TWINT));//Подождать завершения операции

  a2=TWDR;//Записываем старший байт из MCP3421 в переменную a1=TWDR;

  //

  //Прием третьего байта данных

  TWCR=(1<<TWINT)|(1<<TWEN);//Отправляем "NACK": TWEA не выставлен

  while(~TWCR&(1<<TWINT));//Подождать завершения операции

  a3=TWDR;//Записываем младший байт из MCP3421 в переменную a2

}

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


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

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

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

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

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

Загрузка...

  • Сообщения

    • Какая то странная ветка форума, попрятались по норам, ни ответа, ни привета. Хоть послали бы, знал бы что живые С сегментом g разобрался- микротрещина у самой ноги контроллера, которая при прозвонке замыкалась щупом тестера- бывает же Останусь  прошивке programm3_1.hex. Почему не заработала прошивка 50_108MHZ_50 khz_01.hex- а пес его знает, да и автор молчит.
    • Зависит от динамика и от усилителя. Стандартному динамику лучше усилитель напряжения, а не тока, и без сопротивления. Особенно вредно сопротивление на НЧ полосе.
      Как ни крути, сопротивление тот же аттенюатор, и тоже понижает динамический диапазон и С/Ш.
    • Схема для применения с БП на ТАН-1. По настройке, при необходимости, установить напряжение на аноде первой лампы, подбором R105. Значение R2 указано для одного канала. Если будет один фильтр на оба канала, то R2 2,4 - 2,7 кОм.
    • Он не "голый", а в пластиковом контейнере. До этого юзал пропитанный Гаммаметовский сердешный в самовозбудном полумостке.  С пропиткой понравился тем, что дюрка сверлиццо на раз стальным свёрлышком по металлу, но потери в пропитанном получаются поболее. Хотя пентература имени Кюри у него аЦкая, под четыре сотни градусов. Так что перегрев в 80 для железуки не существенен, а вот эмальпроводу не любому понравится. Поэтому мотал обмотофки мгтф-ом, бо фторопласт хоша и текуч, но сотня градусов для него семечки. С другой стороны, трёхсот ваттные тарахтелки уже четверть века молотят в "боевых" питальниках и отказов транса по перегреву не наблюдалось. Правда и частота не высокая, 10-12 кГц, ибо на биполярах выше лезть не стал. А вот "гагарин" с комм.трансом в мостке не полетел, сколько не мудыхался с разными промежуточными трансами. Видно руки в этом вапроце не оттель растут.
    • прошил заново мк (епром стирается автоматом, как сейчас так и тогда), но произошло чудо, числа в настройках десульфатации появились. разница в показаниях теперь 0,05v, шунт 203( как и был), а вот провода ушли с 46 на 22.
    • Ничего не скрываю! Частота ж ещё зависит от коэффициента передачи КТ117! А он у них с разбросом по экземплярах. Я подбирал под свой, получил 1,3Гц.  Поставил резистор 100 Ом, между катодом и управляющим тиристора - частота сбивается. Изменил R6=62k и С6=6,8мкФ - тоже безрезультатно. Завтра попробую генератор в металлический корпус поместить. Может поможет. Про эмитерный повторитель тоже видел. Попробую