Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Re: Светодиодный индикатор на базе ТМ1637

Сб янв 28, 2023 15:59:07

Да, для меня и NOP() = задержка (одного такта), поэтому так и написал. Ничего не изменится :), понятно. Да и сам дисплей не из самых быстрых устройств.
Последний раз редактировалось veso74 Вс янв 29, 2023 13:44:21, всего редактировалось 1 раз.

Re: Светодиодный индикатор на базе ТМ1637

Сб янв 28, 2023 16:42:04

При тактовой частоте 9,6 МГц, время на выполнение пустой команды NOP состовляет 104 нс (0,104 mks)… конечно с точки зрения программистов это считается задержкой, но с моей обывательской точки зрения это совершенно ничего… :))

Re: Светодиодный индикатор на базе ТМ1637

Сб янв 28, 2023 16:44:35

veso74, а не проще было взять чип с аппаратным I2C, чем городить ногодрыг убогий?

Re: Светодиодный индикатор на базе ТМ1637

Сб янв 28, 2023 16:52:51

Не решаю вопросы однозначно по конкр. конструкция/проект. Это все о хобби, для себя и хочу уточнить/попробовать варианты.
Последний раз редактировалось veso74 Сб янв 28, 2023 17:34:18, всего редактировалось 1 раз.

Re: Светодиодный индикатор на базе ТМ1637

Сб янв 28, 2023 17:18:48

чем городить ногодрыг убогий?

Для кого убогий, а для кого самое-то… :) при том что Вы не учли главного, по шине TWI передаются пакеты начиная со старшего разряда, а у ТМ1637 передаётся первым начиная с младшего разряда… конечно можно извратится и передавать байт задом наперёд, но есть ли смысл в таком извращении? К тому же передача всего пакета для индикатора при тактовой частоте МК (tiny13 9,6MHz), по времени составляет около 117 мкс… выиграет ли в данном случае аппаратный TWI? Сомневаюсь… к тому же у программного алгоритма есть существенный приоритет, он не привязан к конкретным выводам МК, а значит гибче при реализации… к тому же позволяет использовать МК без TWI, что тоже предпочтительней в некоторых проектах. :)

Re: Светодиодный индикатор на базе ТМ1637

Сб янв 28, 2023 18:03:57

VNS, я всегда выступаю категорически против ногодрыга, если есть аппаратная периферия! А уж I2C есть практически у всех МК…

Re: Светодиодный индикатор на базе ТМ1637

Сб янв 28, 2023 18:23:12

Eddy_Em, и шине I2c можно ли использовать на обычных устройствах, с подключенным и дисплеем на TM? (Или дисплей мигает и его надо выключить например)? Наоборот если есть другое устройство I2c, потребуется другая шина I2c. Хотелось бы, чтобы был какой-то способ использовать 2 пина. Допускаются любые методы, наиболее интересными являются для меня 8-пиновых МК - минималистичный метод. С остальными МК можно делать все что угодно.

Re: Светодиодный индикатор на базе ТМ1637

Сб янв 28, 2023 18:30:43

Eddy_Em, это только Ваше предпочтение и оно может иметь как сторонников так и противников… на вкус и цвет товарища нет… :) я всегда склоняюсь в сторону простоты решения, а не некоего клеше… к тому же у меня достаточное количество проектов на ATtiny13A или на ATtiny24 у которых нет TWI, и что мне нужно было отказаться от реализации проектов на данных МК в пользу более дорогих и более избыточных МК в тех проектах? Ну это же глупо… :))
С моей точки зрения, всё должно быть обосновано и гармонично, а не тупо с учётом каких-то надуманных принципов и фобий… каждый выбирает свой путь решения и навязывать свои предпочтения другим по мне так не правильно. :wink:

Re: Светодиодный индикатор на базе ТМ1637

Вс янв 29, 2023 05:57:51

Eddy_Em, спасибо за идею за управление и по I2C :beer: .
И по I2C дисплей на ТМ1637 сработал (со снятыми конденсаторами 10 nF). Даже код занимает меньше место в памяти :).

Пробовал I2C на 100 kHz, на 400 kHz - ОК. С программным, аппаратным I2C все работает. Нравится :)) .
печатать цифру по адресу (0..3):
Код:
void tm1637_display(uint8_t addr, uint8_t data) {
  uint8_t seg_data = num[data];

  i2c_start();
  i2c_write(rev_data(0x44));  // fixed addr
  i2c_stop();

  i2c_start();
  i2c_write(rev_data(addr | 0xC0));
  i2c_write(rev_data(seg_data));
  i2c_stop();

  i2c_start();
  i2c_write(rev_data(cmd_disp_ctrl));
  i2c_stop();
}

Нужно было реверс битов. (Для теста, потом будем оптимизировать).
Код:
uint8_t rev_data(uint8_t b) {
  b = (b & 0xF0) >> 4 | (b & 0x0F) << 4;
  b = (b & 0xCC) >> 2 | (b & 0x33) << 2;
  b = (b & 0xAA) >> 1 | (b & 0x55) << 1;
 
  return b;
}

Код из Reversing bits in a byte with AVR работает отлично.
---
P.S. TM1637 с частотой обновления дисплей дает импульсы по питанию. Слышу звук напр. 500 Hz в другом оборудовании, подключенном к питанию. Нужен серьезный фильтр. C-L-C, тысячи микроФарад, миллиГенри? ...

Re: Светодиодный индикатор на базе ТМ1637

Вс янв 29, 2023 09:29:03

veso74, ну дык это характерно для любой чуткой цифрохрени где применена ДИ на LED или чтото похожее развязка по питанию обязателна не зряж в интегрированых чипах аналных АЦП и часоф -питание схем индикации всегда отделный пин!?
часто он даже питается ототделного стаьилизатора или в этой цепи стоит мощнный RC|LC филтр болшие емкостя там врядли нужны ести источника развязаны по питанию ка это напри 7107 7135 сделано

Re: Светодиодный индикатор на базе ТМ1637

Вс янв 29, 2023 09:36:06

по I2C можно подключить только один модуль на базе ТМ1637.
а мне нужно подключить 2 модуля для показа напряжения и показа тока в блоке питания. и тут уже I2C ни чем не поможет.

Re: Светодиодный индикатор на базе ТМ1637

Вс янв 29, 2023 10:29:09

Starichok51, ты видимо невнимателно читал ДШ там не чесный стандарт I2C с его фреймами и подержкой адреса и ожиданием мастером ответа от всех слейвоф там просто тупо TWI 2 проводный ИФ "похожий на I2C" для вашего случая надо применить чип ТМ1640/1641 или подобную многоразрядку часть разрядоф выводит волты другая часть-амперы и также оставляем 1/2 разряда на статус/режим и 1 разряд для одиночных диодоф (их включаем на тенже шины ка матрицу)
наприер в часах так можно 1времено выводить время Ч_М_С число день недели ГОД и к4учкудиодоф набудилники и управляемые по таймерам нагрузки -я ради прикола 1 такие часики на тм1641 куче 1р LED от касового апарата +одиночные светики(елка-режимоф) и DS1307(оттудаж) сваял чисто для демонстрации на базе ардохи микро 328мега все кстати тамработало само по себе от батарейки за счет RTC и ТМ1641 с CPU банално брала из RTC сохраненые там даные и пересылала в1641рулящу LED +там память управлени 8 будилниками/управляемыми выходами была -причем не стал ра3пиратся с опросом клавы через 1641 напаял 4кнопки прям к ардохе(благо ного полно) и
и да для экономи портоф 20 в годе выводил статиченски :))) :idea:
можно было типа светом и плиткой по таймеру рулить... на деле если на релюхи мощные нагрузить НАиграфшись с макетом я его разобрал -ардуинка понадобилась... в изделии воплощать нестал часоф у меня хватает
НО ИДЕЮ ЧАСОФЩИКАМ ФОРУМА ДАРЮ боле того на том же стенде ПОигрался с мнгоразрядным цифровым LCD которым рулил чип от Нолтек НТ1621 но ттам я запутался слехка с матрицей сегметоф/разрядоф -оно там разведено вразброд а не по порядку ...
но если довести идею до ума и вместо 328 взять какойнить китаец с малымтоком можно штамповать хитрые часы на батарейке добавиф чип манометра термометра
Последний раз редактировалось musor Вс янв 29, 2023 10:52:36, всего редактировалось 3 раз(а).

Re: Светодиодный индикатор на базе ТМ1637

Вс янв 29, 2023 10:33:00

С I2C все здорово, но не на всех линейках. Так и не победил F0, где адрес записывается в специальный регистр.

Re: Светодиодный индикатор на базе ТМ1637

Вс янв 29, 2023 11:42:20

... ну дык это характерно для любой чуткой цифрохрени где применена ДИ на LED или чтото похожее развязка по питанию обязателна ...

musor, все верно. Но термометр на PIC и 3x 7seg LED подключены к одному блоку питания, часы в 1 метр, опять же с управлением MK -> 7 seg LED. Фильтр: конденсаторы 100 μF + 100 nF . Не мешают ни в аудио, ни в RF (в первом приближении). С помехами у меня проблемы только с LED-драйверам на TM1xxx и MAX72xx.

Re: Светодиодный индикатор на базе ТМ1637

Вс янв 29, 2023 15:37:05

musor, я внимательно читал ДШ, и поэтому у меня прекрасно работает согласно даташиту.

Re: Светодиодный индикатор на базе ТМ1637

Пн янв 30, 2023 10:08:05

veso74, страно ... вазможно ваш плата разведена КРИВА

Re: Светодиодный индикатор на базе ТМ1637

Вт янв 31, 2023 15:51:03

ACK есть у чипа? Мне кажется, что нет.

Re: Светодиодный индикатор на базе ТМ1637

Вт янв 31, 2023 19:03:40

ACK есть у чипа?

Есть.
Можете это проверить. Если байт принят, то чип прижимает шину DIO сразу же, вернее по спаду восьмого импульса CLK и отпускает шину DIO по спаду девятого импульса CLK. То есть, можно проверять АСК по спаду восьмого импульса CLK, предварительно отпустив её со стороны МК.
Я в своём алгоритме проверяю АСК... и когда с конденсаторами чипу не удавалось принять байт, то видно было, что алгоритм показывал неисправность сразу после передачи первого байта... на основании не полученного подтверждения (АСК).

Re: Светодиодный индикатор на базе ТМ1637

Ср фев 01, 2023 14:03:10

Да, ACK есть. На дисплей на TM1637 + тестовой PIC12F675 работает, виден и ACK на лог. анализаторе и PulseView.
Но на симуляция нет. (Может там что-то не настроено).

Re: Светодиодный индикатор на базе ТМ1637

Сб фев 04, 2023 02:44:36

Да, даже в МК, где нет I2c (с программным I2c), управление TM1637 мне кажется более удобное. По возможности буду использовать этим методом для TM1637, за идею большое спасибо!
Ответить