admin

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

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

admin    2 326

В статье дан пример работы микроконтроллера 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 438

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

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

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

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


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

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

Игра слов?

Цитата

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

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

 

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


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 438
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

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


Ссылка на сообщение
Поделиться на других сайтах
_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 смайлов.

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

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

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

Загрузка...

  • Сообщения

    • Уважаемый serste! Тон Вашего поста напоминает реакцию человека, которому нечаянно наступили на мозоль. Особенно удивляет Ваше стремление спрогнозировать ответ, который Вы, по всему, ожидаете услышать. Применяя для этого написание текста в верхнем регистре, что не приветствуется Правилами форума. Не очень боясь ошибиться, скажу, что усилитель имелся ввиду ламповый. Правильно спроектированный и настроенный. Места здесь такие. Что касается ресиверов, перечинил не мало и знаю их основную беду - редко в каком есть БП достаточно мощный, чтобы тянуть хотя бы пару каналов на полную заявленную мощность. Не говоря, уже, о 5-ти. И не зря, редко в каком есть усилитель саба. Из тех же причин дохлости БП.  В кино это не самая большая проблема, если учесть, что внимание не концентрируется исключительно на прослушивании саундтрека. Но... у меня, тоже, за плечами жизнь, отсутствие абсолютного слуха и, какой-никакой, личный опыт, включая... много чего. К стати, абсолю́тный слух, всего то, способность определять абсолютную высоту музыкальных звуков. А ля первой октавы, оно и будет ля первой октавы, хоть через радиоточку, хоть через топовый ресивер. Личный опыт мне говорит, что не требуется музыкального образования, чтобы понять и оценить звучание системы. Как не требуется знание хореографии, чтобы заметить из зала разницу в танце двух балерин. Вы просто слушаете музыку. Желательно, разноплановую. Если у вас не возникает при этом дискомфорта, значит система Вас полностью устраивает. В ином случае, через время, Вы неизбежно поймёте, что есть "слабое звено". Это может быть любой компонент системы. Но, определяется он точно. По себе знаю. Меняете. Система делает "шаг вперёд". И Вы, некоторое время, наслаждаетесь "подросшим звуком". Но, растёте и сами. И, вполне можете обнаружить следующее "слабое звено". Последовательность действий описана выше. Процесс итерационный, и заканчивается либо тем, что Вам удаётся создать систему, которая Вас устраивает (это сходимость), либо вложение капитала больше не даёт адекватного прироста в звуке (это асимптота). И Вы понимаете, что хватит. Третьего варианта, в чистом виде, не встречал. Так что, разница в звучании ресивера и лампового усилителя, всё таки существует. Особенно это слышно при прямом сравнении. Неоднократно наблюдал на реакции даже не подготовленной публики. Разводить же демагогию, типа - Производитель, элементная база, цена - ? - считаю бессмысленным. Ибо, адекватно обсуждать звучание можно только с человеком, который сидит, сию секунду, рядом с Вами на диване, и слышит то же, что и Вы. Иначе, это просто бесполезное словоблудие. Часто переходящее на личность. P.S. Говоря - создать систему, которая Вас устраивает - я имею ввиду, то, что написано. С акцентом на "Вас". А не то, что Вы создали самую идеальную систему, которая "кроет" все другие системы в мире, стоимостью до 10000 $.
    • Оно уже управляется по zigbee, на первой фотке плата с антенной. PS. Резисторы померяю.
    • Ну а с чего бы нет?Ведь сопротивление разряда постоянное,напряжение на кондере тоже.
    • Всем доброго времени суток. Общая задача такова - надо снимать сигнал (осциллограмму) с полосой до 400 кГц и временем записи 5 минут. Результат должен быть куда-то сохранен, чтобы потом была возможность сбросить цифровые данные на комп.  Нужен совет по одному (пока) вопросу. Я хочу писать бинарные данные напрямую на SD-карту. Минимальная частота дискретизации 800 кГц. Разрешение АЦП можно взять 8 бит. Как вы думаете, успеет ли флешка скушать данные?  Шаблон кода создаю кубом с использованием HAL, тестирую на камне 407VET6. При записи планирую использовать буфер, куда загоняю массив данных, чтобы писать не по одной выборке, а сразу пачкой. ЗЫ Есть еще вариант. Использовать в качестве промежуточной памяти вот такое https://static.chipdip.ru/lib/435/DOC001435109.pdf  , сохранить туда, а потом уже на внешнюю карту. По идее, есть возможность соединить по FSMC. Но для меня это крайний вариант, ибо до этого не пробовал такое.
    • Ну вот из того что я обнаружил,это то что  тепло на Р1 сильно зависит от напряжения питания,но вот почему это так я не понимаю..Ведь количество зарядок кондера в секунд всегда одинаковое число,оно не меняется,по скольку нагрузка разряда там постоянная,меняется только то время,пока открыт транзистор ,но чем больше напряжение тем меньше времени он открыт,и вроде как получается что при 24 вольтах конденсатор зарядится до тех же вольт в 4 раза быстрее чем при 12,и для резистора Р1 не будет никакой разницы с 12 заряжать конденсатор или с 24..Или тут что то не то......?
    • Конечно, искал. На TDA8362 есть схемы с обвязкой. Но это самый крайний вариант. Уж слишком большой по габаритам получается платка. А вот больше в нете на транскодеры CVBS в RGBS схем на другой элементной базе нет. По поводу LMH1251, так судя по картинкам, она преобразует компонентный видеосигнал в RGB. Хотя могу и ошибаться. Уже завтра на трезвую голову гляну даташит.