0
С первым согласен, а вот про второе не понял.
  • avatar
  • Gnusmas
  • 03 ноября 2018, 19:19
0
Не так уж много, НО НУЖНО. А тут всего 1 лишняя команда модулю. Зачем писать ЛИШНИЙ код, если можно обойтись без него благодаря более продуманному алгоритму.
Ну и в заголовке я написал, что «без летнего/зимнего времени все гораздо проще», у меня же оно, увы, пока действует.
  • avatar
  • Gnusmas
  • 03 ноября 2018, 11:23
0
Нет. В результате я знаю, как узнавать время посредством модуля SIMCOM.
  • avatar
  • Gnusmas
  • 02 ноября 2018, 20:43
0
Ну а сам-то ты почему в таком случае не спихнул всю работу на ESP?
Там вроде LUA надо знать, а я не знаю. А асм 8051 знаю. Хотя китайцы свою прошивку ддля STC15 писали скорее всего на Си (в китайских интернетах везде примеры на Си).
И еще более странно в свете того, что программируется он через UART-бутлоадер
Да, я сам без понятия, как (из зачем) они так сделали. Может позиционирование такое, чтобы не мешал старшим моделям. А загрузка по UART осталась, она сделана на каких-то других ресурсах, нежели стандартный UART.
Схему платы тоже положи в аттачи
Приложил LC wifi relay.zip, в нем все что нарыл по этому модулю.
  • avatar
  • Gnusmas
  • 12 октября 2018, 11:31
0
А где та часть, где мимо паровоза старикана проносится маглев с надписями «ARM Corp»? Если бы зеваки были внимательнее, они бы успели заметить в окнах проносящейся мимо них стальной пули счистливые лица пассажиров, находящихся на острие прогресса. Где-то там, между роскошных купе, на полу игрался ардуинкой маленький мальчик. Он воспитывался очень добрыми родителями, которые следовали принципу «до 5 лет можно все», поэтому его никто не трогал и не упрекал, хотя проходящая мимо бортпроводница в форме с логотипом STM32 Cube, снисходительно улыбалась, и поглядывая на мальчика, отметила про себя, что она очень удачно подсадила своего синышку на «дуинку не на базе AVR», и теперь может не опасается за него, оставляя дома одного, когда уезжает на работу.
  • avatar
  • Gnusmas
  • 16 августа 2018, 21:31
0
VGA все правильно сказал. Но вообще, в природе существует 8051-подобный ассемблер для ПИКов. Если интересно, гуглите «parallax pic assembler». Полной совместимостью и не пахнет (да и регистры ясень пень разные), но кому учить 2 асма лень, а Си не хочется — вроде вариант. Я в свое время, начиная изучать ПИКи после 8051, посматривал в его сторону, но потом зачитавшись мануалом на MPASM, решил все таки осваивать «родной» ПИКовский асм, очень уж понравился его мощный макроассемблер. Может еще выложу проект с демонстрацией, чего я умудрился накрутить на нем.
  • avatar
  • Gnusmas
  • 16 августа 2018, 20:44
0
Прошу любителей АРМов не обижатся, на самом деле они не «сраные», просто я еще до них мозгом не дорос.
  • avatar
  • Gnusmas
  • 16 августа 2018, 00:19
0
Откуда столько злобы в таком маленьком тельце ?)) С чего Вы взяли, что я «дядя стэмщик32»? Я вообще пики 12-16 да 8051 люблю по вечерам после работы ковырять. Я облажался? Еще как!!! Я Си только взялся изучать, и я еще столько раз облажаюсь, что просто жуть.
Нормально про «разрядность данных меньше разрядности int» я понял только после прочтения Задачи 12, в которой четко написано «Главное — не забывать приводить разность к нужному размеру если он меньше чем разрядность уменьшаемого, вычитаемого или int». А читать я ее начал гораздо позже, только после того, как попылася сделать задачи 5,6 на «сраном АРМЕ». А делать я это начал только после того, как сделал их на АВР.
  • avatar
  • Gnusmas
  • 16 августа 2018, 00:15
0
Задача 6: увеличить диапазон задержек программного таймера
… Для данных большей разрядности — заменить 240 на нужный диапазон и убрать приведение к uint8_t...
Не знаю почему, но для «сраных армов» в Keil, пришлось делать приведение к uint16_t, иначе периодически возникал длительный затуп в работе таймера (светодиодик не мигал).
  • avatar
  • Gnusmas
  • 13 августа 2018, 21:19
0
Спасибо.
  • avatar
  • Gnusmas
  • 05 августа 2018, 09:06
0
Прошу прощения, в предыдущем посте я соврал. Закомментировал все 15 установок задержек в своей программе, поочередно раскоменчивал, компилил и смотрел результат. И в 1 месте я использовал макрос для передачи переменной. Одна эта строчка и давала +3 кб кода))))))))) Эмпирически подтвердил Ваше «Что делать НЕ надо». Там надо написать «НЕ НАДО !!!!!!!!!!!!!!!!111111111111» )))
А так, при использовании эти макросов для констант, я имел для каждого вызова от: «ни байта кода не добавилось» до "+32 байта" при установке задержки длительностью в 750 мс. + кое-где сжирает по 1-2 байта ОЗУ на вызов. В общем заметил, что чем меньше задержка, тем меньше кода добавляет макрос.
  • avatar
  • Gnusmas
  • 04 августа 2018, 23:18
0
Опечаточка получилась. Указывамый размер конечно относится к НЕХ-файлу, а не исходнику))
  • avatar
  • Gnusmas
  • 04 августа 2018, 19:56
0
Задача 7: избавиться от ручного пересчёта стандартных единиц времени в тики таймера
Что делать НЕ надо: Использовать эти макросы не для констант. Пересчёт в рантайме через флоаты будет убийственно неоптимален, особенно если компилить в avr-gcc без -lm.
+ совмещено с Задачей 8: расширить разрядность таймера для организации системного тика

До внедрения такого (как в задачах 7,8) варианта обработки програмного таймера, мой исходник (с кучей моих функций, не имеющих отношение к таймерной службе) занимал ~1,5кБ. Тоесть у меня был системный тик ровно 1 мс, я в таймерах всегда прописывал задержки в мс. После того как я это переделал, исходник стал занимать 4,6кБ. Свои функции я не трогал, использовал макросы ТОЛЬКО для констант. Такое увеличение это норма при таком подходе? Старый вариант: www.dropbox.com/sh/mv806gbz9ufbtc6/AADouVCpwlRWMT7PXrOTEBooa?dl=0 Вариант после переделки, как в задачах 7,8: www.dropbox.com/sh/s75nzd5z252od6l/AAD2leiC_talRRgo0kTkrsvRa?dl=0
  • avatar
  • Gnusmas
  • 04 августа 2018, 18:59
0
Задача 2: выполнять прерывание с заданным периодом
Что делать НЕ надо: Использовать CTC режим. Он похоронит второй канал и другие ресурсы таймера.
А если используется АТмега 8535,16,32 и Timer0, у которого всего 1 канал, то CTC режим режим удачное решение?
  • avatar
  • Gnusmas
  • 02 августа 2018, 22:13
0
Спасибо за статью.
0
+1
0
Воздержался, для количества.
  • avatar
  • Gnusmas
  • 25 ноября 2017, 01:23
0
Как раз недавно приобрел себе модуль, для «поиграться». Оставил неоднозначное впечатление. Вроде и функционал хороший (регулировка яркости чего стоит), а реализовано действительно как то через жопу (автоинкремент есть, а использовать нормально нельзя). Выкладываю, что накодил (асм 8051): www.dropbox.com/s/wzchjh7dyr8msbf/TM1638.asm?dl=0
0
В озвученной нише (набортный датчик температуры) еще неплохо смотрится LM75 (тот который по I2C). А по цене он вообще самый дешевый их всех цифровых кажется.
0
Разобрался я. Значит дело было в том, что я после отправки байта установки режима чтения клавиатуры (01000010b) не устанавливал линию принудительно на вход. А ведь в этом байте последний битик 0, вот у меня DIO и оставалось в низком уровне, и не давал модулю протолкнуть в МК свои данные. Добавил после отправки этого байта «setb DIO» и все заработало.