Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить

Re: Часы на газоразрядных индикаторах

Пн апр 17, 2017 15:18:33

Если вы их не отключали на более менее продолжительное время, то результат очевиден - батарея целая, при включенном питании потребление с нее 0. У меня проблема вылезла когда я уехал на пару дней и часы выключил. При включении оказалось, что они сильно убежали, а замер напряжения батареи показал, что перехода в режим обесточки не случилось....

Добавлено after 1 hour 6 minutes 21 second:
Проблема счастливо решилась на макетке, работает как надо, по всей видимости я напрасно завысил емкость конденсатора о чем мне подсказал автор проекта, вот и вылез косяк. Осталось привести в соответствие сами часы...

Добавлено after 11 minutes 57 seconds:
Замена емкости в часах на штатную решила все проблемы:) Спасибо автору за помощь!

Re: Часы на газоразрядных индикаторах

Пн апр 17, 2017 15:35:37

о какой банке речь7

Re: Часы на газоразрядных индикаторах

Пн апр 17, 2017 15:49:06

Ну низковольтная по схеме одна, хотя она может есть батарею только раз при установке, но у меня привычка по входу лепить 1000мкф, а в данном случае это дает повод микроконтроллеру думать, что питание не отключили и не переходить в режим обесточки пока эта емкость не разрядится, ну и жрать батарейку... Сам ступил и всех переполошил... Ну хоть разобрался! Теперь 4-5мка как в аптеке... Вот такая вот музыка.....

Re: Часы на газоразрядных индикаторах

Пн апр 17, 2017 16:03:21

imho вы что-то не то наблюдаете или пишете. Детектор наличия питания вывод 2 микроконтроллера. Ёмкость на выводах питания к этому отношения не имеет совершенно никакого.

Вопрос к специалистам-программистам. Как быстренько определить високосность года? год хранится в unsigned int в двоичном виде. Может, его считать в БКД?

Re: Часы на газоразрядных индикаторах

Пн апр 17, 2017 16:08:35

А вывод 2, который детектор, через 4,7к разве не вход питания проверяет?

Re: Часы на газоразрядных индикаторах

Пн апр 17, 2017 16:14:12

Ну да, об чем и речь. и где там "банка"?

Re: Часы на газоразрядных индикаторах

Пн апр 17, 2017 16:27:35

Так я выше и написал что у меня дурная привычка по входу лепить 1000мкф.....

Re: Часы на газоразрядных индикаторах

Пн апр 17, 2017 16:31:03

ну может быть прога крива писана и ждет резкой просадки ((спада) питания с 5 до 3в
еслиб там был сделан компаратор но этому выводу или ацп это не имелоб значения

Re: Часы на газоразрядных индикаторах

Пн апр 17, 2017 19:58:05

Самое смешное, что этим дело не закончилось... При батарейке 2,7в действительно все заработало, но при свежей батарейке опять не входило в режим обесточки и сажало батарею.. Добавил резистор 4,7к от 2 ноги на землю и теперь отлично срабатывает и при свежей батарее и с конденсатором по входу 1000мкф, и с ним работает даже стабильнее без скачков по току, наблюдаемых без него при переходе на батарейное питание ....:)

Re: Часы на газоразрядных индикаторах

Вт апр 18, 2017 15:49:42

uldemir писал(а): Как быстренько определить високосность года? год хранится в unsigned int в двоичном виде


Как узнать что год высокосный?

Если вы найдете быстрее, то киньте ссылку плз.

Re: Часы на газоразрядных индикаторах

Вт апр 18, 2017 16:12:44

Неее. ну это то понятно. У самого примерно так. Просто, то что делится на 4 выясняется просто ((year & 0x03) == 0). А вот что делится без остатка на 100 и 400 как бы по-быстрому узнать. на процессоре без аппаратного умножителя.

Собственно, уже переписал последние часики - добавил календарь. Сначала, хотел в прерывании весь календарь тащить, но подумал, что слишком долго будет сидеть в прерывании, что повысит потребление в дежурном режиме. Поэтому, сделал так, что в прерывании считается unixtime, а в рабочем коде этот unixtime уже преобразовывается в текущее время и с учетом "летнего" времени отображается на дисплее. Собственно, если взять стандартный epoch 01.01.1970, то 32-х бит хватает на 136 лет, i.e. до 2106-го года. И тогда можно прямо сравнивать с 2000 и 2100 годом. А если epoch назначить на 19.04.2017, то деление на 400 можно и вообще не проверять...

Но всё-равно, вычисление идёт очень долго. и чем ближе к концу - тем дольше. Не замерял, но, по ощущениям где-то под 100 миллисекунд. Еще и 8-ми битный контроллер очень тяжко работает с 32-х битной арифметикой. Этот код память съел и даже не подавился. Попросил еще. Пришлось подписаться на 60 халявных дней для XC8 PRO - тогда код стал компактнее и влез в память.

Re: Часы на газоразрядных индикаторах

Вт апр 18, 2017 16:53:10

Не знаю во что у вас "переростает" код из C, но попробую сказать по шагам как я бы сделал на asm, если в системе команд контроллера нет команды "деление" и не было бы желания делить "втупую":
За основу взял известный алгоритм Как узнать что год високосный?
Примем, что год представлен как 4-ёх значное десятичное число (в формате BCD) и позиции цифр в году от старшей к младшей от 3 до 0.
1. Проверяем на деление на 4: Берём цифру из позиции 0. Если младший бит цифры в позиции 1 равен "0" - проверяем цифру из позиции 0 на 0, 4, 8. Если младший бит цифры в позиции 1 равен "1" - проверяем цифру из позиции 0 на 2 и 6. Если совпадений не было - год обычный.
2. Проверка деления на 100: Проверяем на "0" цифры в позиции 0 и 1. Если обе равны 0 - год делится на 100. Далее делаем проверку деления на 400 аналогично предыдущей проверки на деление на 4, только берём цифру из позиции 2 и проверяем в зависимости от значения младшего бита цифры в позиции 3.

Re: Часы на газоразрядных индикаторах

Вт апр 18, 2017 17:33:07

хм.... так и знал, что есть более простые способы. с другой стороны, пока читал и размышлял - у меня возникла другая идея. :)) я же могу год хранить в бинарном формате отдельно единицы-десятки и сотни-тысячи. И на 0 проверить легко и делимость на 4 - как единиц, так и сотен.

Re: Часы на газоразрядных индикаторах

Вт апр 18, 2017 17:40:40

Можно и так, но зачем делать лишние операции?
Извините, всю тему не читал, но обычно число "год" сразу приводят к BCD для удобства отображения или ввода числа...

Re: Часы на газоразрядных индикаторах

Вт апр 18, 2017 18:00:06

А чо читать? все исходные данные на этой странице. Пишу часики. Почему двоичный а не БКД? Потому что двоичный считать иногда легче. А мне надо вычислять переход на летнее/зимнее время (у нас оно ищо есть). С другой стороны, нужно не только отображать, надо еще иметь возможность и устанавливать время, что тоже далеко не всегда в БКД удобно (плавали, знаем! чай не первые часы). Собственно, установка времени и занимает большую часть кода.

Вот что у меня получилось:
Код:
            while (epoch >= period_length) {
                epoch = epoch - period_length;
                utc.weekday = (utc.weekday + (flag.leap ? 2 : 1));
                if (utc.weekday > 6) utc.weekday -= 7;
                if (++utc.year_l > 99) {utc.year_l = 0; ++utc.year_h; }

                if (utc.year_l & 0x03) flag.leap = 0;
                else {
                    flag.leap = 1;
                    if ((utc.year_l == 0)) {
                        flag.leap = 0;
                        if ((utc.year_h & 0x03) == 0) flag.leap = 1;
                    }
                } 
                period_length 
= 86400UL * (flag.leap ? 366 : 365 );
            } 
            
            
// в остатке секунды от начала года.  

Re: Часы на газоразрядных индикаторах

Ср апр 19, 2017 00:44:27

Я бы в последней строчке вставил сразу константы 31536000 и 31622400 вместо умножения на 365 и 366. Хотя умный компилятор может и сам соптимизировать и заменить.

Re: Часы на газоразрядных индикаторах

Ср апр 19, 2017 08:57:26

Ну очень знакомая плата :) :)) :)))

Re: Часы на газоразрядных индикаторах

Ср апр 19, 2017 09:12:40

Мдааа... тяжело тем, у кого цветные лазерные принтеры :)) Ну а плата... так в интернете для того и выложена.

NotebookKiller писал(а):Я бы в последней строчке вставил сразу константы 31536000 и 31622400
о. это очень помогло. оптимизатор это не соптимизировал. Стоило 86400 внести под скобки, как всё сильно ускорилось. А то я тут уже начинал подумывать о предварительном вычислении показаний.

Re: Часы на газоразрядных индикаторах

Ср апр 19, 2017 11:14:56

Народ, вот кт 315и разрабатывали для работы с гри, у них к-э 60 вольт. Кто нить в ключах мпса42\92 пробовал что нить подобное? мп 26б аж до 70 вольт))

Re: Часы на газоразрядных индикаторах

Ср апр 19, 2017 12:44:43

почему в форумном окне нет звука в ролике ??? когда смотрищ на ютубе звук есть!!!! что за нах???
Ответить