Перейти к содержанию

Часы На Pic


maks2008

Рекомендуемые сообщения

Здравствуйте! Я не давно начал интерисоваться pic - микрконтролерами, и решил попробовать сделать часы вот схема :

01.gif

И возникла вот такая проблема : здесь программа написана на два индикатора а я поставил один все работает, только две последние цифры перевернуты вверх дном .

Я не хочу чтобы вы мне переписали программу, а подсказали где что изменить .

Вот программа

Заранее спасибо :)

Изменено пользователем maks2008
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

То что у вас приклеплено, это код (прошивка). Показывать надо исходник.

Никто не будет что-то вам писать, вот исправить или заметить косяки это да.

Так что показывайте исходник.

Пишу на Си CCS PICC для PIC, CVAVR для AVR, и иногда IAR для NEC. Особенно привык к SIM300dz.

ICQ: 288449055

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Для начала надо сделать функцию динамического димической индикации. Что бы можно было отображать данные.

Пишу на Си CCS PICC для PIC, CVAVR для AVR, и иногда IAR для NEC. Особенно привык к SIM300dz.

ICQ: 288449055

Ссылка на комментарий
Поделиться на другие сайты

:) Странно... Тогда он хочет что-бы вы этому научился :) В этом случае будет не спрортивно подсказывать :) В этом случае это ваш бой и вам его выигрывать... Боюсь что не будет это так просто... Возможно будет быстрее написать снова с нужным розположением... Ну или если всёже - рекомендую найти кусок кода который выводит данные на дисплей и вместо него поставить джамп на свободное место в памяти и написать свой кусочек...
Ссылка на комментарий
Поделиться на другие сайты

Если человек хочет научиться - то надо подсказывать ему, но не писать код. А просто направлять.

Пишу на Си CCS PICC для PIC, CVAVR для AVR, и иногда IAR для NEC. Особенно привык к SIM300dz.

ICQ: 288449055

Ссылка на комментарий
Поделиться на другие сайты

Блин, кто бы меня направил :) Сколько я уже с этой индикацией мучаюсь! Алгоритм часов я составил, да там ничего сложного-то нет, но вот как заставить циферки бегать, я ума не приложу (точнее, как заставить МК гонять эти циферки). Господа модераторы, может направите толпу новичков на путь истинный, хотя бы скажите, где копать :) Давно хочу собрать часы, схем куча, но ведь гораздо интересней придумать самому, разобраться как работает.

Изменено пользователем Данила

Экономьте электричество, выключайте Num Lock!

Ссылка на комментарий
Поделиться на другие сайты

Надо разабратся что такое динмическая нидикация. Динмическая - значит подвижная. Это в свою очередь означает, что в еденицу времени горит только 1 сегмент. То что мы видим картинку, в виде нескольких символов, это илюзия. Вызвано это инертностью нашего зрения. Сейчас вам необходимо продумать как заставить гореть именно те пины которужны, в определеной последовательности. Возьмите ваш семисегмегметный индиватор, посмотрите на него. Возьмите батарейку, резистор и помучайте. Зажгите последовательно элементы цифр от 0 до 9. Запишите это дело на бумагу. Далее создайте таблицу, а затем функцию вывода данных.

Пишу на Си CCS PICC для PIC, CVAVR для AVR, и иногда IAR для NEC. Особенно привык к SIM300dz.

ICQ: 288449055

Ссылка на комментарий
Поделиться на другие сайты

Это-то мы знаем, нам бы с программой помочь... Lexi, как это вообще делается, что бы цифры менялись каждую секунду, в зависимости от алгоритма программы? Хотя бы в двух словах :rolleyes:

Для тех кто не знает, что такое динамическая индикация:

post-50124-1217835543_thumb.png

Изменено пользователем Данила

Экономьте электричество, выключайте Num Lock!

Ссылка на комментарий
Поделиться на другие сайты

Саму индикацию осилили??

если да то все остальное давольно тупо...

у вас есть часы и минуты, так?

если да то далее, у вас есть таймеры и генератор тактовых импульсов (для пика) на кварце.

вот если так настроить таймер2 setup_timer_2(T2_DIV_BY_16,255,1);

то прерывание будет прерыване будет присходить каждые 4мс.

Вот отсюда надо плясать далее, продумать как на сонове этого сделать изменение всех ваших переменных, касающиеся именно времени, по прерыванию. А вывод (индикацию) в бесконечном цикле.

Кажеться я маскимально разжевал, остаеться прошивку написать. Но этого я делать не буду. Да кстати, если внимательно пошарить на форуме, я там приводил пример как делать отсчет временых интервалов.

Пишу на Си CCS PICC для PIC, CVAVR для AVR, и иногда IAR для NEC. Особенно привык к SIM300dz.

ICQ: 288449055

Ссылка на комментарий
Поделиться на другие сайты

Так значит прошивка именно часов есть? пройдись дизасемблером, да впрочем даже вручную это сделать будет не так сложно. получишь исходный текст... точки в которые осуществляется безусловный переход с нескольких мест - скорее всего это процедуры, и заканчиваются они обычно командой возврата. Исключение составляет лишь псевдопроцедура табличного выбора, там за командой возврата следует массив констант.

Значит как огрганизовать вывод? составляешь таблицу какие пины контроллера нужно устанавливать для отображения ан индикаторе каждой цифры, с запасом(авось пригодится для спец-символов типа тире) записываешь это в табличном виде и небольшую процедурку по "переворачиванию" этих данных, чтобы привести их в соответствие с перевернутыми индикаторами или делать такую же таблицу только для перевернутых если простым переворачиванием не обойтись.

Далее. настраиваешь таймер на генерацию прерывания каждые скажем 10мс, иил 1мс - это не очень важно, важно лишь что с этого можно было бы получить цифру ровно в 1с умножением на целое число.

так же тебе надо организовать из отсчетов таймера примерно 20мс - это получается обычным счетчиком который прибавляет 1 каждое срабатывание прерывания и достигнув некого значения сбрасывается и вызывает процедуру обновления индикатора в которой...

прибавляем номер текущего знакоместа (0-3 если оно больше 3 - сбрасываем в ноль) выбираем с памяти значение отображаемых данных (4 байта, в которых хранятся состояния сегментов индикаторов) соотв. знакоместу - устанавливаем это сочетание на выходе порта - сегмент горит. До этого нужно выключить все сегменты и переключить знакоместо на нужное, если не выключить - будет наблюдаться эффект тени на следующем знакоместе от предыдущего.

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

ну, как считать время и переводить его в 7-сегм. код говорить не буду - это чересчур тривиальная задача. скажу лишь что для минут, которые перевернуты дополнительно перед занесением в ячейку памяти нужно перевернуть 7-сегм. код или взять его с другой таблицы.

Одновременно с процедурой динамической индикации можно обрабатывать и нажатия кнопок, если ты будешь считывать их состояние лишь раз в начале очередного такта динамической индикации это избавит тебя от дребезга контактов. ну а если хочешь чтобы совсем просто - считывай их когда будет происходить приращение секунд, тогда тебе достаточно проверить какая кнопка нажата и просто прибавлять минуты или часы - это будет происходить лишь раз в секунду пока нажата кнопка.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

в коде прошивки автор прописал адрес своего сайта,на нем можно посмотреть еще парочку проэктов.

Загрузил прошивку для эмуляции и наглядного просмотра, стало видно, что таблица символов часов расположена с адреса 046H по 04FH, таблица символов минут расположена с адреса 03СН по 045Н. По адресу 026Н происходит загрузка порта А, как раз тут и переключается динимическая индикация, по адресу 027H хранится символ загружаемый в порт В. Нужно разобратьсяс включением запятой, да и еще с кучей всего.

post-59513-1217916180_thumb.jpg

Изменено пользователем maks2008
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
    • А что нить из ассортимента активных щупов производства СССР..))
    • Типа такого: https://aliexpress.ru/item/2044864227.html?sku_id=58855020183
    • поняли неправильно. У ТЛ494 никакой защиты нет, усилители ошибки не защита, они не должны приводить к ложным импульсам. Причем тут "микруха" ?  надо нагружать ВСЁ. До сих пор вообще непонятно о каком ИИП идет речь и сколько у него каналов. Бесполезно схему рисовать? - Помогать так бесполезно. Картина кривая по самое "немогу" продолжаются картинки, снятые через ногу и без цены деления.
×
×
  • Создать...