Добрый день. Уважаемые КОТы, помогите разобраться. Необходимо последовательно снять с сигнал с 2-х каналов микросхемки. если запускаешь один канал измернений (к примеру А0), то все четко снимает, точность поражает...а вот если снимаешь последовательно с нескольких каналов (например А0 потом А1) относительно GND, то показания выводит с последнего съема причем на оба канала... какой вторым поставишь , такой и будет... уже голову сломал, вроде все делаю по даташнику ... во вложении помещаю свой код. что я делаю неверно? Прикладные библиотеки управления индикаторами и I2C выкладывать нет смысла, они написаны по стандартному протоколу...
Вводил и ожидание до 100 млСек... Безрезультатно. Снял осцилограмы с даталинии, 3-й байт отличается от 12, значит конфигурационный байт отправляется корректно. К тому же ответка тоже отличается 8-9 байты отличаются от 17-18. если закомментировать одну из этих строчек
AMPERAGE = ADS1115(0) * 10;
VOLTAGE = ADS1115(1) * 2; то все как и должно быть, преобразования происходят. Все отображается но только один параметр, а вот 2 последовательно не хотят... отображения последнего происходят... Я тут внимательно просмотрел даташник, я совсем забыл за тайминг свичей мультиплексора... хотя там не сказано какой тайминг конкретно, но его то я не учел, вероятно поэтому последнее измерение и работает, так как после последнего обращения идет большая пауза и у мультиплексора есть время переключится а вот на первое обращение в стеке для переключения времени как раз и не хватает...на измерение нужно всего 8 мкСек они там есть(смотрел осликом... даже больше). Спасибо что намекнули на тайминги.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
The ADS111x offer programmable output data rates. Use the DR[2:0] bits in the Config register to select output data rates of 8 SPS, 16 SPS, 32 SPS, 64 SPS, 128 SPS, 250 SPS, 475 SPS, or 860 SPS. Conversions in the ADS111x settle within a single cycle; thus, the conversion time is equal to 1 / DR.
Да, и время относительно велико. SPS - samples per second
The ADS111x offer programmable output data rates. Use the DR[2:0] bits in the Config register to select output data rates of 8 SPS, 16 SPS, 32 SPS, 64 SPS, 128 SPS, 250 SPS, 475 SPS, or 860 SPS. Conversions in the ADS111x settle within a single cycle; thus, the conversion time is equal to 1 / DR.
Да, и время относительно велико. SPS - samples per second
Я использую 64 измерения в секунду, это и визуально комфортно, и точность на приемлемом уровне
Добавлено after 2 minutes 16 seconds: Re: ADS1115_ATMEGA8 Не работают последовательно каналы измерений Парни, спасибо, что откликнулись. Я тут человек новый, еще не сориентировался с интерфейсом форума. Попробую тайминги проставить. Надеюсь поможет.
Добавлено after 2 minutes 2 seconds: Re: ADS1115_ATMEGA8 Не работают последовательно каналы измерений Кстати, прерывания в даташнике опять же, я все делаю по даташиту(во всяком случае стараюсь) Там есть диаграммы чтения и записи, я по ним писал.
Да, спасибо, уже прочитал. а "в моем случае" то я экспериментировал. Вообще я использую 64. Значит поставлю 20 млСек. Надеюсь не очень сильно отобразится на скорости... Либо увеличу скорость...
у тебя прерывание таймера по переполнению происходит гораздо чаще, чем длится одно измерение. а в прерывании должно пройти 2 измерения. если на одно измерение сделать задержку 20 мс, то, с запасом, нужно прерывание таймера сделать через 50 мс.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Парни, всем спасибо за участие, все получилось... Правда почему-то заработало при 64 Гц опросе задержка 80 млСек, глянул на осциллограмму и прослезился. Там сплошные пропуски. Видимо прерывания семисегментника накладываются на прерывания по 16-ти битному таймеру плюс задержки , и таймера срывают I2c передачу. видимо придется ставить 2 МК один чтоб рулил семисегментниками в режиме слейва, и по I2C принимал циферки, которые нужно выводить и тогда все будет гуд.
Витаха, у тебя пока не закончит работу прерывание по TIMER1_OVF, никакое прерывание для семисегментника не начнется. вот и имеешь большие пропуски. не в обиду будет сказано, но твой код называется говнокод. и от себя добавлю - не просто, а в квадрате.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Витаха, у тебя пока не закончит работу прерывание по TIMER1_OVF, никакое прерывание для семисегментника не начнется. вот и имеешь большие пропуски. не в обиду будет сказано, но твой код называется говнокод. и от себя добавлю - не просто, а в квадрате.
Я это понимаю, я только начал освоение микроконтроллеров, это , можно сказать, мое четвертое устройство. Но я научусь. Разберусь обязательно. До этого я 30 лет не писал программы, и с Си столкнулся впервые. еще год назад для меня микроконтроллер это была магия... сейчас я погряз по уши в ЮАРТ СПАЙ, И2С, таймеры, прерывания и т д... Это очень мне интересно))))
На Счет ТМ1637, и МAXIM, хорошие микросхемы, но их нужно покупать, ТМ1637 не подходит, она максимум для 6 разрядов, проще подключить к отдельному МК, коих у меня лежат сейчас в загашнике(Закупился при случае подешевке). И по тойже И2С передавать. теперь вопрос , как сделать чтоб вторая мега была слейвом? Буду разбираться. Спасибо всем, теперь я знаю немного больше...
Витаха, чтобы МК мог делать другую работу (например, обрабатывать индикацию), нельзя в прерывании таймера ждать окончания всех преобразований по АЦП. в моих изделиях в прерывании таймера сначала читается результат преобразования по одному каналу и потом запускается преобразование по другому каналу. понятно, что интервал таймера должен превышать время преобразования, чтобы к следующему прерыванию преобразование гарантированно закончилось. но для этого нужна переменная, которая определяет очередность каналов, и нужно в main после всей инициализации запустить преобразование первого канала. в прерывании после чтения результата изменяем переменную, определяющую номер канала, результат которого нужно считывать, и запускаем преобразование с другим номером канала. таким образом, прерывание от таймера работает короткое время, и не мешает другой работе, в том числе такой, как своевременное обслуживание индикации.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
ещё добавлю, если не хочется, чтобы прерывание индикации помешали критичному процессу (например передаче данных) - можно этот процесс начинать сразу за переключением индикатора - тогда на передачу будет гарантированный кусок свободного от прерываний таймера времени...
если время передачи больше времени между сменой разрядов индикации - можно процесс притормозить в некритичном для передачи месте
можно, конечно и прерывания отключать, но мигающий экран - зрелище неэстетичное
сам когда делаю устройства с дин. индикацией - эту самую индикацию и использую как арбитр процессов
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Все сделал. За динамическую индикацию отвечает один камушек(закупился на али по дешевке), за ацп другой. все нормально работает, все успевает... Всем спасибо за участие. Ребята, вы очень помогли. я только в начале пути освоения микроконтроллеров....
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения