Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Сб янв 28, 2023 15:59:07
Да, для меня и NOP() = задержка (одного такта), поэтому так и написал. Ничего не изменится
, понятно. Да и сам дисплей не из самых быстрых устройств.
Последний раз редактировалось
veso74 Вс янв 29, 2023 13:44:21, всего редактировалось 1 раз.
Сб янв 28, 2023 16:42:04
При тактовой частоте 9,6 МГц, время на выполнение пустой команды NOP состовляет 104 нс (0,104 mks)… конечно с точки зрения программистов это считается задержкой, но с моей обывательской точки зрения это совершенно ничего…
Сб янв 28, 2023 16:44:35
veso74, а не проще было взять чип с аппаратным I2C, чем городить ногодрыг убогий?
Сб янв 28, 2023 16:52:51
Не решаю вопросы однозначно по конкр. конструкция/проект. Это все о хобби, для себя и хочу уточнить/попробовать варианты.
Последний раз редактировалось
veso74 Сб янв 28, 2023 17:34:18, всего редактировалось 1 раз.
Сб янв 28, 2023 17:18:48
чем городить ногодрыг убогий?
Для кого убогий, а для кого самое-то…
при том что Вы не учли главного, по шине TWI передаются пакеты начиная со старшего разряда, а у ТМ1637 передаётся первым начиная с младшего разряда… конечно можно извратится и передавать байт задом наперёд, но есть ли смысл в таком извращении? К тому же передача всего пакета для индикатора при тактовой частоте МК (tiny13 9,6MHz), по времени составляет около 117 мкс… выиграет ли в данном случае аппаратный TWI? Сомневаюсь… к тому же у программного алгоритма есть существенный приоритет, он не привязан к конкретным выводам МК, а значит гибче при реализации… к тому же позволяет использовать МК без TWI, что тоже предпочтительней в некоторых проектах.
Сб янв 28, 2023 18:03:57
VNS, я всегда выступаю категорически против ногодрыга, если есть аппаратная периферия! А уж I2C есть практически у всех МК…
Сб янв 28, 2023 18:23:12
Eddy_Em, и шине I2c можно ли использовать на обычных устройствах, с подключенным и дисплеем на TM? (Или дисплей мигает и его надо выключить например)? Наоборот если есть другое устройство I2c, потребуется другая шина I2c. Хотелось бы, чтобы был какой-то способ использовать 2 пина. Допускаются любые методы, наиболее интересными являются для меня 8-пиновых МК - минималистичный метод. С остальными МК можно делать все что угодно.
Сб янв 28, 2023 18:30:43
Eddy_Em, это только Ваше предпочтение и оно может иметь как сторонников так и противников… на вкус и цвет товарища нет…
я всегда склоняюсь в сторону простоты решения, а не некоего клеше… к тому же у меня достаточное количество проектов на ATtiny13A или на ATtiny24 у которых нет TWI, и что мне нужно было отказаться от реализации проектов на данных МК в пользу более дорогих и более избыточных МК в тех проектах? Ну это же глупо…
С моей точки зрения, всё должно быть обосновано и гармонично, а не тупо с учётом каких-то надуманных принципов и фобий… каждый выбирает свой путь решения и навязывать свои предпочтения другим по мне так не правильно.
Вс янв 29, 2023 05:57:51
Eddy_Em, спасибо за идею за управление и по I2C
.
И по 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, тысячи микроФарад, миллиГенри? ...
Вс янв 29, 2023 09:29:03
veso74, ну дык это характерно для любой чуткой цифрохрени где применена ДИ на LED или чтото похожее развязка по питанию обязателна не зряж в интегрированых чипах аналных АЦП и часоф -питание схем индикации всегда отделный пин!?
часто он даже питается ототделного стаьилизатора или в этой цепи стоит мощнный RC|LC филтр болшие емкостя там врядли нужны ести источника развязаны по питанию ка это напри 7107 7135 сделано
Вс янв 29, 2023 09:36:06
по I2C можно подключить только один модуль на базе ТМ1637.
а мне нужно подключить 2 модуля для показа напряжения и показа тока в блоке питания. и тут уже I2C ни чем не поможет.
Вс янв 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 в годе выводил статиченски
можно было типа светом и плиткой по таймеру рулить... на деле если на релюхи мощные нагрузить НАиграфшись с макетом я его разобрал -
ардуинка понадобилась... в изделии воплощать нестал часоф у меня хватает
НО ИДЕЮ ЧАСОФЩИКАМ ФОРУМА ДАРЮ боле того на том же стенде ПОигрался с мнгоразрядным цифровым LCD которым рулил чип от Нолтек НТ1621 но ттам я запутался слехка с матрицей сегметоф/разрядоф -оно там разведено вразброд а не по порядку ...
но если довести идею до ума и вместо 328 взять какойнить китаец с малымтоком можно штамповать хитрые часы на батарейке добавиф чип манометра термометра
Последний раз редактировалось
musor Вс янв 29, 2023 10:52:36, всего редактировалось 3 раз(а).
Вс янв 29, 2023 10:33:00
С I2C все здорово, но не на всех линейках. Так и не победил F0, где адрес записывается в специальный регистр.
Вс янв 29, 2023 11:42:20
... ну дык это характерно для любой чуткой цифрохрени где применена ДИ на LED или чтото похожее развязка по питанию обязателна ...
musor, все верно. Но термометр на PIC и 3x 7seg LED подключены к одному блоку питания, часы в 1 метр, опять же с управлением MK -> 7 seg LED. Фильтр: конденсаторы 100 μF + 100 nF . Не мешают ни в аудио, ни в RF (в первом приближении). С помехами у меня проблемы только с LED-драйверам на TM1xxx и MAX72xx.
Вс янв 29, 2023 15:37:05
musor, я внимательно читал ДШ, и поэтому у меня прекрасно работает согласно даташиту.
Пн янв 30, 2023 10:08:05
veso74, страно ... вазможно ваш плата разведена КРИВА
Вт янв 31, 2023 15:51:03
ACK есть у чипа? Мне кажется, что нет.
Вт янв 31, 2023 19:03:40
ACK есть у чипа?
Есть.
Можете это проверить. Если байт принят, то чип прижимает шину DIO сразу же, вернее по спаду восьмого импульса CLK и отпускает шину DIO по спаду девятого импульса CLK. То есть, можно проверять АСК по спаду восьмого импульса CLK, предварительно отпустив её со стороны МК.
Я в своём алгоритме проверяю АСК... и когда с конденсаторами чипу не удавалось принять байт, то видно было, что алгоритм показывал неисправность сразу после передачи первого байта... на основании не полученного подтверждения (АСК).
Ср фев 01, 2023 14:03:10
Да, ACK есть. На дисплей на TM1637 + тестовой PIC12F675 работает, виден и ACK на лог. анализаторе и PulseView.
Но на симуляция нет. (Может там что-то не настроено).
Сб фев 04, 2023 02:44:36
Да, даже в МК, где нет I2c (с программным I2c), управление TM1637 мне кажется более удобное. По возможности буду использовать этим методом для TM1637, за идею большое спасибо!
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.