Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Re: Нужна помощь в прогаммировании

Сб окт 08, 2016 08:34:10

спасибо за хекс, будем пробовать

Re: Нужна помощь в прогаммировании

Сб окт 08, 2016 08:45:23

Версии (для 20 и 28 ног) не перепутайте.

Re: Нужна помощь в прогаммировании

Пн окт 10, 2016 00:36:49

6881065 писал(а):...будем пробовать
если у вас часы по схеме как на рисунке в описании, то попробуйте эту прошивку:
https://github.com/zerog2k/stc_diyclock/releases.
описание: https://github.com/zerog2k/stc_diyclock правда там что-то про некоторые проблемы с кнопками пишут...

Re: Нужна помощь в прогаммировании

Пн окт 10, 2016 05:37:12

Вход в режим настройки, как он пишет, не стабилен.

P.S. Сейчас нашел еще один сайт-блог с 20-ногими часами, автор которого утверждает, что в этих часах выбран неудачный МК, т.к. уместить качественный и удобный код в 4к нельзя, требуется хотя бы 8 кило. По этой причине он сделал переходник с Атмега8 на родную панельку часов, добавив датчик температуры и фототранзистор.

Re: Нужна помощь в прогаммировании

Пн окт 10, 2016 08:26:00

Ну уж это тот блоггер "перегнул"...
Простенькие часеи и в АВРке в 4 килослов (8килобайт) впишутся (там команда=2байта).
Для 51-й же и 4 килобайта это уже "роскошно".
Просто и требования разные и системы команд и средства отображения (LCD "с мозгами" или светодиодные табло, LCD "без моззгов" или с упрощенной системой индикации).
Оттого и разница - больше в плане удобств оператора - возможности отображения индикатора и "интерактивность" кнопок. Именно эта часть больше всего ресурсов и жреть, а вот результат - сугубо личное восприятие у конструктора и у потенциального пользователя могут весьма отличаться.
Кроме прочего сейчас почти всюду внешний RTC ставится - а то уже "половина системы".
8)

Re: Нужна помощь в прогаммировании

Пн окт 10, 2016 09:16:06

BOB51, они на С пишут, понятно, что не влезают... Хотя, что понимать, под качественными часами :dont_know:
Может там эффекты-переходы на табло всякие надо делать :beer:
Zhuk72, видел я на атмеге, это уже "не спортивно" :))
Я почему ссылку эту дал, просто интересно, что скажут владельцы этих часов проверив прошивку, рабочая хоть или "так себе"...
А если рабочая, то может чего и подправят там под себя :idea:

Re: Нужна помощь в прогаммировании

Пн окт 10, 2016 10:27:04

Так я тоже на Си писал, и у меня, с моим кривым кодом, на данный момент вышло 2365 байт. А если бы добавить измерение освещенности (на что просто нет свободных ног у light версии), то кусок кода работы с ЕЕПРОМ можно выкинуть. Еще больше места освободится.
Вот только будильника у меня нет и переключений режимов 12/24. Второе даже не рассматриваю, а первое пока не планирую (слишком много нюансов). Вскорости может еще добавлю регулировку яркости - 16 уровней - в меню для light версии, т.к. существующий вариант через константу в ЕЕПРОМ - слишком дубовый :)

Да, мне еще понравилось, как он сетовал на малопонятное управление в оригинальной прошивке. При этом в его варианте получилось так (источник):

Спойлер
Pressing the Select button will enable you to program the microcontroller:

A short press (less than 5s) will show the date and month. Pressing it again will show the year. One more press reverts to clock display.
A longer press (6-10s) will enter the alarm set mode. Press set to cycle between alarm hour, minutes, alarm enable and memory storage. Press select at each stage to cycle possible values (0-23 for hours, 0-59 for minutes, on/off for enable);
A longer press (11-15s) will enter the clock set mode. Press set to cycle between year, month, day, minutes, hours and memory storage. Press select at each stage to cycle possible values;
A longer press (16-20s) will enter display mode. Press set to cycle between on, off and memory storage. Press select at each stage to cycle possible values;
A longer press (21-25s) will enter the temperature unit select mode. Press set to cycle between C,F and memory storage. Press select at each stage to cycle possible values;

В смысле сидеть и считать секунды удобнее?! А если недодержал или чуток передержал? С секундомером надо сидеть?
:)))

Rtmip, когда я в начале февраля взялся за эти часы, толчком и основой (я никогда не имел дела с 51-м семейством) послужил именно тот проект zerog2k с github.com Тогда у него были реализованы только часы и календарь.
Сперва я просто адаптировал его код для sdcc под Keil. Потом переделывал под свое понимание. По мере вникания удалял целые куски и писал свои. В конце концов от его исходников осталась только сокращенная, слегка дополненная и переписанная под мой вкус часть работы с ds1302.
Так что я ему благодарен за знакомство с 51-ми, без его исходников я бы наверное не решился взяться за этого китайца.

Re: Нужна помощь в прогаммировании

Пн окт 10, 2016 21:13:08

Rtmip писал(а):BOB51, они на С пишут, понятно, что не влезают...

Проблема не в языке, а в его применении. Если тащить за собой ворохом всю Arduino IDE, то понятно, что мало куда влезешь.
Тот же GCC оптимизирует вполне приемлемо. Не хуже человека. Пока ему не запретят оптимизацию объекта волшебным словом "volatile". Вот тут уже вся оптимизация должна быть вручную.

Re: Нужна помощь в прогаммировании

Вт окт 11, 2016 02:26:10

Zhuk72 писал(а):...В смысле сидеть и считать секунды удобнее?! А если недодержал или чуток передержал? С секундомером надо сидеть?
:)))
Похоже лень ему было с меню заморачиваться :)))
Так и выходит, одному памяти мало и странно, что на АРМ или на "малину" не перешел, а второму понравилось кнопки по секундомеру нажимать.
В качестве шутки: вся надежда на вас теперь :beer:

Re: Нужна помощь в прогаммировании

Вт окт 11, 2016 05:34:20

А что я? Моя прошивка работает :)
Только о ней никто не знает.
Видел обзоры на муське, сколько человек из собравших такие часы были недовольны программой. Но не буду же я каждого агитировать посетить радиокота. Один раз написал в комментах, может кто-то и найдет дорогу сюда.

Re: Нужна помощь в прогаммировании

Вт окт 11, 2016 08:38:26

Там больше не в собственно коде проблемы, а в психологии потенциального пользователя/правилах ввода данных и их отображения.
Каждый раз в зависимости от схемы, типа индикатора и количества кнопок.
Плюс дизайн...
Иногда интерфейсные "извраты" во многом сложнее и более громоздкими, чем собственно сами часейки становятся.
Вот и извращается народ дабы "впихнуть невпихенное" - организовать наиболее технологичный и наиболее человекопонимаемый интерфейс... да еще "в дешеву рыбку" втиснуться. :facepalm:
Также как и разные алгоритмы/языки при написании прожек применять можно, так и принцип управления/ответной индикации для переключения режимов работы устройства может быть весьма различен.
А чего лучше - решает уже потребитель. :cry:
У того потребителя абсолютно свое видение эксплуатационных характеристик устройства (это ж не "умник - разработчик") и...
Вот тогда приходится в экстренном порядке усё заново переворачивать, уже минимум "с подзатыльниками"...
8)

Re: Нужна помощь в прогаммировании

Вт окт 11, 2016 09:14:15

Понятно, что у каждого свои предпочтения, но есть же определенные стандарты, неписанные правила работы интерфейсов, интуитивно-понятные, как принято говорить. И когда используют такие способы управления, как нажатие кнопки вплоть до удержания ее до 25 секунд (или как в купленном на Али USB тестере, где настраиваются быстрым нажатием единственной кнопки от 1 до 6 раз подряд), просто впадаешь в ступор от фантазии автора.

BOB51 писал(а):Иногда интерфейсные "извраты" во многом сложнее и более громоздкими, чем собственно сами часейки становятся.

У меня файл main.c содержит 240 строк, а keys.c, с котором обрабатывается поведение кнопок в зависимости от режима и отображаемого контента - 245 :))

Re: Нужна помощь в прогаммировании

Вт окт 11, 2016 09:22:20

Обычно "главный оценщик" - домашние обитатели (с наиглавнейшим критиком - ЖОНА называемым) - тем чем меньще расходов на бюджет и чем красивше покупной в магазине аналог....
:shock: :facepalm: :(

Re: Нужна помощь в прогаммировании

Вт окт 11, 2016 09:32:14

Zhuk72 писал(а):А что я? Моя прошивка работает :)
Этого мало, надо идти дальше, сделать так, чтобы прошивка работала с оригинальной схемой,
используя все возможности заложенные схемотехникой, вот :idea:
Тогда пользователи потянутся, им не надо будет ничего менять в схеме, а просто перепрошить :))
Zhuk72 писал(а):...а keys.c, с котором обрабатывается поведение кнопок в зависимости от режима и отображаемого контента - 245
Это большая работа, вызывает уважение!

Re: Нужна помощь в прогаммировании

Вт окт 11, 2016 09:45:52

Rtmip писал(а):Этого мало, надо идти дальше, сделать так, чтобы прошивка работала с оригинальной схемой

А она и так работает с оригинальной схемой, я ничего не переделывал. Надо только впаять в часы 3-контактный разъем для прошивания, место для которого весьма кстати было предусмотрено изготовителем.

Я только не задействовал терморезистор. Но я 1) не знаю его марки и 2) не уверен в его точности. Потому и собираюсь перейти на 1820. В принципе, если будут данные по терморезистору, я могу и по нему измерить температуру. Достаточно переключить канал АЦП и выбрать из таблицы нужную температуру в соответствии с измеренным напряжением.

Re: Нужна помощь в прогаммировании

Ср окт 12, 2016 09:08:35

Zhuk72 писал(а):...Я только не задействовал терморезистор. Но я 1) не знаю его марки и 2) не уверен в его точности. Потому и собираюсь перейти на 1820. В принципе, если будут данные по терморезистору, я могу и по нему измерить температуру. Достаточно переключить канал АЦП и выбрать из таблицы нужную температуру в соответствии с измеренным напряжением.
Понятно, что самое сложное обработать показания с терморезистора. А у вас часы без него разве?
Кстати у "zerog2k" работа с температурой по формуле, можно позаимствовать :roll:
Если перейдете на DS-ку, тогда повторить не все смогут или не все захотят. Другое дело с родным датчиком :wink:
Что за реле там в схеме и зачем оно там нужно? Может кто знает?
Кстати, немного исправил исходники от "zerog2k", чтобы в протеусе посмотреть как работает его прошивка.
Тайминги не все правил, но и так увидел, что нормально работает и управление логичное.
У кого есть возможность, советую посмотреть в живую на часах, интересно все-таки.

Re: Нужна помощь в прогаммировании

Ср окт 12, 2016 11:05:38

У меня с терморезистором. Можно, конечно, подсмотреть формулу у zerog2k, можно найти данные на терморезисторы в сети. Вопрос в том, насколько эта формула или даташиты соответствуют установленному в часах терморезистору, т.к никакой информации по его типу нет.
Дело в том, что в родной оригинальной прошивке была установка температуры. Как писалось в инструкции (не дословно), "измерьте температуру в данной точке, зайдите в настройки и выставьте аналогичную". А там было на выбор только несколько значений, где-то от 21 до 24. Причем все это без десятых долей. То есть сам автор прошивки не был уверен в точности термистора, и даже не был уверен, что во всех партиях этого набора термистор будет одинаковым :)) Вот почему я не хочу с этим связываться.

Людей больше, чем термометр, заботит яркий индикатор. И при этом не ленятся перепаивать резисторы на катодах (мне лень). А вместо термистора впаять 1820 вообще ерунда. Термистор впаян между портом и общим проводом и подтяжка в 10к уже имеется.

Опциональное реле должно было срабатывать по второму будильнику. Эдакая примочка для террористов.
Но это НЕ задействовано в данном наборе и оригинальной прошивке. В моей тоже.

Добавлено after 57 minutes 37 seconds:
Re: Нужна помощь в программировании
Посмотрел я формулу.
temp = 76 - ADC * 64 / 637

Откуда он ее взял, понятия не имею ))

Re: Нужна помощь в прогаммировании

Ср окт 12, 2016 13:22:38

Zhuk72 писал(а):Посмотрел я формулу.
temp = 76 - ADC * 64 / 637
Откуда он ее взял, понятия не имею ))

Похоже на линейную интерполяцию.
если сопротивление термистора (скорее всего это NTC) 10К можно прикинуть правильность формулы:
при 25С сопротивление термистора равно 10К, если подтяжка тоже 10К, то на делителе будет половина питания, т.е.значение ADC = 512.
Подставляем: 76-512*64/637= 24.5588697017268 

Re: Нужна помощь в программировании

Ср окт 12, 2016 15:31:47

Термистор этот похож на стекляшку 4148. На вид вот такой.
Никогда с ними дел не имел, потому не знаю о них ничего.

Попробую вечером подкинуть эту формулу в прошивку, если настроение будет.

Re: Нужна помощь в прогаммировании

Чт окт 13, 2016 12:24:05

oleg110592 писал(а):Похоже на линейную интерполяцию.
Кстати, да, похоже так и есть. Посмотрел табличные значения из ДШ, который нашел Zhuk72 тут, посмотрел еще здесь.
Посчитал, очень неплохо получается, разбег менее градуса. Конечно, на ds18b20 будет точнее, но как вариант, мне понравилось :idea:
Конечно, нужна еще экспериментальная проверка в живую.
Ответить