Comments 75
Меньше можно на семисегментном.
Можно меньше - мигать светодиодом азбукой Морзе!
Есть тут у меня один претендент)


Осталось подружить МК и LCD...
stm32l вам в помощь
Тут подойдет что-то в корпусе tssop20, иначе плата будет значительно больше дисплея. Именно поэтому я и ставлю везде SSD1306- нужно всего 2 ноги МК. С вашим дисплеем нужно 10.
а как же ресет? или этому дисплею все (включая аппаратный сброс после сбоя питания например) можно сделать по i2c/spi?
Не часто вижу reset на i2c устройствах. У дисплея он конечно есть, но как обычно- просто заглушен подтяжкой на плюс. При сбое питания дисплей перезагрузится вместе с МК, точно так же как при обычном включении.
просто на одной поделке у меня был опыт когда дисплей с другим контроллером SSD13xy, где х точно не нуль (не помню уже точно номер), этот дисплей не выключился при разряде батареи а странно заглючил и подзарядка и софтовый сброс не помог, только отключение и разрядка в нуль. Исправил тем что пришлось подпаять аппаратный сброс - проблема ушла.
Пишут, что некоторые i2c устройства зависают просаживая CLK и только питание дёрнуть помогает. Актуально наверное только для каких то удалённых устройств.
Ног не хватит.
я ставлю резисторы по 100-200 ом в разрыв сигнала от программатора и потребителей портов двойного назначения. Помогает.
Можно залить верх эпоксидкой, и сшлифовать текстолит до самой меди :) Получится ещё меньше
Хотел маленький ЖК индикатор приделать на батарею чтоб всегда показывал напряжение и при этом не разряжал. Обнаружил что таких не найдешь. Казалось бы, что может быть проще.
Можно использовать E-Ink, они работают даже после отключения питания. Мк во сне тоже почти ничего не потребляют.
Есть такая идея. Но они дороги и выбор мал.
Вобще, обычный ЛСД в часах от одной крошечной батарейки годами работает, стоит копейки. Но почему-то таких напряжометров не делают.
ну так часы и возьмите и разберите заради экранчика. делов то.
Тут чувак попробовал таким индикатором (с динамической индикацией, да) поуправлять.
https://github.com/vishalsoniindia/Hack-Digital-Watch-LCD
Не вникал пока, постоянным током, или переменным. Лучше переменным, чтобы электролиза не было. Индикатор дольше протянет.
Если не ошибаюсь (может и правда плохо тему копал), то важно просто обеспечить разность уровней с быстрым переключением, переменка не обязательна. Очень сомневаюсь, что LCDшки в тех же калькуляторах и градусниках кормят переменкой
По проекту ничего особенного, а в местный...кхм с позволения, код, так вообще не рекомендую лезть, если психика слаба...
Глянул код. Напомнило случай, когда в редакцию журнала "Горизонты техники для детей" некий читатель прислал программу для ZX Spectrum, рисующую голову мультперсонажа под названием Smurf. Программа состояла из одних PLOT и DRAW, тогда как можно было упаковать весь массив векторов в DATA и написать короткую программу, вытаскивающую эти данные по очереди и обрабатывающую. Но сотрудник редакции не поленился набрать эту простыню, запустить и показать дочери. Она его узнала. :)
Уж не знаю, было ли это толстым троллингом редакции, или программист оказался действительно настолько начинающим, что не знал про DATA и READ.
Очень сомневаюсь, что LCDшки в тех же калькуляторах и градусниках кормят переменкой
Кормят. Везде. Единственное исключение встречал на некоторых дешёвых мультиметрах с сегментами запятых, со временем начинаются проблемы.
912 байт - вот это пример правильного ПО. А то в последнее время уже прошивки начали мегабайтами начинать измерять...
Самый большой мой код был для ESP32. Около 6 -7 мегабайт. Но там и были- 4 дюймовый сенсорный дисплей, полноценный звук на I2S из BT, ну и естественно общение с сервером.
И могла бы быть меньше. Недавно тоже посидел над оптимизацией прошивки для attiny10 чтобы влезла в килобайт. Программировал принципиально без ассемблера.
Программные операции деления и умножения занимают каждая байт по 20-30, особенно для uint16_t. Если возможно, лучше подобрать другие параметры делителя чтобы программные операции деления и умножения требовали констант - степеней двойки. Тогда это всё превращается в сдвиги.
Но и это немало:
sleep(delay / 64);
1cc: 64 2f mov r22, r20
1ce: 75 2f mov r23, r21
1d0: 86 e0 ldi r24, 0x06 ; 6
000001d2 <.L1^B1>:
1d2: 75 95 asr r23
1d4: 67 95 ror r22
1d6: 8a 95 dec r24
1d8: e1 f7 brne .-8 ; 0x1d2 <.L1^B1>
Также параметры функций лучше объявлять как const &, тогда прологи/эпилоги функций которые генерит компилятор не занимаются сохранением/восстановлением регистров с копиями этих параметров.
Также вообще лучше не использовать uint16. MK 8-битовый, все 16-битные операции выполняются над парами 8-битных регистров учитывая флаг переноса, поэтому даже простой инкремент ++ для 16-битного типа превращается в несколько команд на 10 байт.
Вот этот ужас:
++ticks;
40: 40 a1 lds r20, 0x40 ; 0x800040 <ticks>
42: 51 a1 lds r21, 0x41 ; 0x800041 <ticks+0x1>
44: 4f 5f subi r20, 0xFF ; 255
46: 5f 4f sbci r21, 0xFF ; 255
48: 51 a9 sts 0x41, r21 ; 0x800041 <ticks+0x1>
4a: 40 a9 sts 0x40, r20 ; 0x800040 <ticks>
Также лучше использовать циклы где условие выхода/продолжения - сравнение с нулём. Это требует всего одну 2-байтовую команду перехода с анализом флага нуля. А не 6 байт с загрузкой константы, сравнения и перехода.
Ещё макрос PROGMEM в avr-libc сломан для attiny10, не компилится. Но его можно не использовать вообще, потому что ядро attiny10 использует единое адресное пространство для флэша и RAM. Компилятор сразу генерит правильный код.
Вместо макросов для i2c лучше использовать static-функции. Компилятор лучше соптимизирует. Макросы же не оставляют ему выбора.
АЦП у таких контроллеров очень посредственный, нормальный вольтметр не получится. Дисплеи кстати бывают совсем маленькие из той же серии 8×12мм
Attiny10 самый маленький МК
А как же Freescale Kinetis KL03? 1,6 на 2,0 мм, правда BGA.
Есть способ сделать конструкцию еще тоньше, но это уже ЛУТом не получится.
Для каждой детали выфрезеровывается соответствующее отверстие в плате и деталь "утапливается" в плату. Результат выглядит странно, но вполне работоспособно.
Я увидел то что хотел, 912 байт это конечно сильно но можно ещё меньше на семисегментных индикаторах сделать.
Меньше можно на ПИК10 каком с OTP. (по стоимости конешн). Когда первый раз увидел аттини10 - смутила ее цена. (в 2016 была под 250р розницы в терре вроде).
Ребят, проконсультируйте поверхностно, пожалуйста.
Хочу на attiny13 + гироскоп MPU-6050 + светодиодики + CR батарейка + кнопка
собрать "брелок" который будет моргать при отклонении от 90°, размером чуть больше этой самой батарейки.
Я по питанию и мозгам пройду или 100% ерунда выходит?
До этого баловался ардуинками.
Пройдёшь, конечно. У MPU питание 2.375V-3.46V, у attiny от 2.7В. Если взять с индексом V, то вообще от 1.8В
Тяжело будет. Процедура калибровки 6050 и количество данных могут не поместится в 1кБ. На какой-нибудь аттини85 вообще без проблем. Причем тот же OLED можно повесить и смотреть положение в пространстве.
Какое отклонение и с какой точностью надо ловить? Может и контроллера не надо а достаточно датчика наклона с капелькой ртути...
Про ртутные датчики я слышал, но надо почитать что у них с точностью и прочим. Думаю - не пойдет.
Хочу примочку на перфоратор для контроля вертикальности/горизонтальности/задания угла.
Но с заданием угла - это не точно. Проблемы и UI-интерфейсом и памятью МК.

На али по 100 рублей
отвес с wifi
https://play.google.com/store/apps/details?id=peacemaker.plumb
устарел, оказывается, android_id не читает
У вас отклонение показаний из-за вибраций от перфоратора, небось, будет превышать размер ожидаемого сигнала при отклонении угла.
Люфт сверла в патррнк перфоратора будет нивелировать всю "точность" измерения))
Меньше точно не бывает!
Бывает))

Ну это не серьезно, там же аж 20 ног! :)
Думал, как у меня дисплей, 0,42" 72х40, но на моём 16 ног. Какой здесь стоит?
с плечем 3.5
С плечом.
У меня на телефоне нет Ctrl+Enter
Отличная идея! Интересно, сильно ли вырастет прошивка, если в фоне (например, на каждом втором кадре) выводить осциллограмму сигнала. Насколько я помню, SSD1306 может принимать данные по столбцам, т.е. теоретически данные с АЦП можно не хранить, а сразу отправлять в порт.
подозреваю, что осциллограмма в память не влезет
использовать граф.память самого дисплея, но придётся отдать место на алгоритмы синхронизации
т.е., сразу рисовать кривую? Можно, если хватит пропускной способности шины.
не пугайтесь картинке, Microchip купила Atme
А чего пугаться то? Уже 9 лет прошло, как покупка состоялась)))
Но я был немного обескуражен, когда очередной раз посетив сайт atmel.com был перенаправлен на микрочип!
Ещё больше был обескуражен когда походил по старым ссылкам, вот например:
http:/www.atmel.com/devices/atmega8.aspx?tab=overview
http://www.atmel.com/Images/doc8103.pdf
А ведь могли забить и не делать перенаправление, но нет, запилили таки, похвально

На обратной стороне платы деталей нет. Провода для прошивки. Извините за качество фото, всё никак не переставлю симки в новый смартфон.
Вольтметр с этим дисплеем и Attiny10 был в планах, не дошли руки пока.
не мое, но более интересное https://youtu.be/6wBrOV2FJM8
у меня была похожая проблема с дисплеем из-за того что проводки были вместе и наводки давали друг на друга. я их потом расклеил и всё заработало. но когда потом паяешь то всё норм, это только на макетке
Меньше точно не бывает! Делаем вольтметр на ATTINY10