Например TDA7294

Форум РадиоКот • Просмотр темы - In vino veritas
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 13:52:03

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 1081 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: In vino veritas
СообщениеДобавлено: Сб сен 07, 2013 21:18:13 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 13
Или поиск истины в спорах и на практике.
8)

Некоторые из пушистых хышников жаждут КОДА...
(ILYAUL,Kavka viewtopic.php?f=57&t=93560,
viewforum.php?f=62)... :cry:
Однако тот самый код без конкретных схемулек и железячек как-то не очень воспринимается.
Попробуем соорудить одинаковые часики на более-менее одинаково подготовленных
платформах и проанализируем, где чего получше, а где и не очень с завершающим словом по результатам мучительства макетов. :roll:
А заодно развеять некоторые мифы об исключительности и превосходстве отдельных семейств МК.

Дабы излишне не мудрствовать с динамической индикацией в качестве индикатора
воспользуемся винстаровским WH1602A-NGG-CT или
его аналогами в исполнении вида "сменный кубик". Ежли позднее понадобится чего на светиках
можно будет собрать отдельный контроллер дисплея с аналогичным применяемому в HD44780
протоколом обмена.

Чего бы выбрать для базового ядра... Так, чтоб и макеткой попользоваться, и не
слишком накладно было - ибо макетка все равно "в ящик", но без практического
испытания устройства результат считается непотвержденным.
Покопавшись в кладовке выбралось следующее:
MCS51 - классическую AT89S52... но в хламовке завалялась AT89S8252-24PI - ее и вытащим;
AVR - для меньшей заморочки с совместимостью макетки вытащим ATmega8515 (про запас ATmega162);
PIC - хотелось бы пару PIC16F877A-I/P и PIC18F452A-I/P, но таковых пока в наличии не имеется
(возможно как-нибудь ко времени удастся прикупить), но есть в наличии парочка из
PIC16F876A-I/SP и PIC18F2520-I/SP, так что первичную схемку вероятно под них делать буду.

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

Рекомендуемые программы для писания и компиляции:
AVR studio 4.19 берем здесь:
http://www.atmel.com/System/BaseForm.as ... m:26-17924

MPLAB 8.92 берем здесь:
http://www.microchip.com/Microchip.WWW. ... =SW007002#

Ассемблер для MCS51 берем здесь:
http://www.atmel.com/Images/c51asm_win_1-2.zip
кому интересно будет, добавляю бат-файл запуска в DOS-окне.
Симулятор (также ДОСовский):
Вложение:
FD51RUS.rar [27.18 KiB]
Скачиваний: 961

оболочка программатора (под железо STK200 аналогичное и для понипрога):
Вложение:
ispprog_setup_1.2.0.56.rar [573.28 KiB]
Скачиваний: 936

Текстовой редактор для написания исходнков вне IDE - DPAD v4.7.04 или v5.0.1.2
поскольку здесь не влез, а ссылки на сайт автора приводят куда-то "не туда", инсталяшку желающим пошлю на e-mail...
Относительно схемок и печаток - стандартные layout v6 и splan v7.

Совсем забыл про конопушки... Запихну поле из 16 кнопок (но использовать предполагается пяток).
Итак начнем мудрить схемусы с условием, что тактирование осуществляется
от основного, достаточно высокочастотного генератора
и все часики, для начала, тикают внутри МК. Для простоты
положим, что устройство непрерывно питается то сети 220 вольтей и имеет
дополнительную батарейку резерва 4,5 вольта.

Полезу схемкусы с печатками зломыслить... :write:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Вс сен 08, 2013 16:11:05 
Держит паяльник хвостом
Аватар пользователя

Карма: 15
Рейтинг сообщений: 70
Зарегистрирован: Ср мар 28, 2012 21:45:24
Сообщений: 904
Откуда: ВО
Рейтинг сообщения: 0
Честно говоря , я не очень понял назначение этой темы. Причём здесь платформы на которых лучше строить часы , непонятно.
В той теме , о которой Вы говорите , но ссылку на нее не привели
viewtopic.php?f=62&t=78185&start=60 народ выкладывает коды облегчающие "жизнь" при программировании .
Т.е подход к решению задач -принципы их решения с минимальными затратами памяти , циклов и прочее и независимо от платформ на которых Вы будите их реализовывать. Так как поняв принцип - перенести его на другую платформу - сложностей не составляет.
Вы в ней сообщили:
Цитата:
Гораздо эффективнее двоичный счетчик + табличный декодер...
но не для AVR ...)

Вас попросли выложить код , Вы создали целую тему о часах - зачем?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Сб сен 14, 2013 12:29:09 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Итак, первичные наброски схем испеклись. 8)
Вложение:
shems.rar [20.73 KiB]
Скачиваний: 840

Для MCS51 и AVR особых проблем не обнаружилось (старые заготовки + незначительная адаптация)
А вот с PICовыми несколько неудобный нюанс относительно размещения разъёмов при
сохранении разводки шлейфа дисплея, но это конструктивная заморочка на печатке.
Схемку под PIC18F2520 рисовать поленился - она по монтажке абсолютно иденитична тому,
что нарисовано для PIC16F876А (или PIC16F73).
НО... вот и первые "камушки" - ограниченное количество лапок потребовало перевода работы
дисплея в тетрадный режим, а вот и более серьезный камушек - для использования максимальных
возможностей по быстродействию у PIC18F2520 и PIC16F876А должны использоваться разные кварцы
и разные конденсаторы главного генератора... Пока платка под PIC16F876А (и возможна установка
PIC18F2520 в режиме генератора "PLL IN INTOSC MODES").
Чего б замудрить насчет монтажа... :roll:
Делать печатки в полном объёме как-то "вломушки"...
Попробую воспользоваться готовыми "рыбками" - заготовка crs-053 для основной (системной) платки
и crs-023 для платки клавиатуры. Модуль дисплея и модуль питания с сетевым трансформатором
возьмем из уже ранее изготовленных.
В качестве кнопок использую мембранные вот такие:
http://img.radiokot.ru/files/20529/4u1d6dobg.gif
http://img.radiokot.ru/files/20529/4u1cvn2c2.gif
хош и весьма дорогущие, зато оччень надёжно сделаны (по отношению к ширпотребным "тактовым").
Вот и платки:
at89s8252
http://img.radiokot.ru/files/20529/4u19a8k64.gif
http://img.radiokot.ru/files/20529/4u1c27lmp.gif
atmega8515/162
http://img.radiokot.ru/files/20529/4u19egmd1.gif
http://img.radiokot.ru/files/20529/4u1a5a29r.gif
pic876a
http://img.radiokot.ru/files/20529/4u1a0g2s2.gif
http://img.radiokot.ru/files/20529/4u1b8f87i.gif
дисплейчик
http://img.radiokot.ru/files/20529/4u1bc9fj0.gif
кнопы
http://img.radiokot.ru/files/20529/4u16y5mzy.gif
Жабко только, что "лобовой" монтаж для at89sxxxx получился не слишком корректным (у атмеги
выполнено более правильно), для пиков поставил кварц под PIC16F876А (прйдется попозже
делать еще одну платку под PIC18F2520 с кварцем на 10МГц ).

for ILYAUL :
Это больше как расширение темы об алгоритмах...
Или толкование разных версий ассемблера с одной общей точки зрения.
( viewtopic.php?f=20&t=68985 ).
Алгоритм независим от конкретной модели только если это обобщенный алгоритм
(древнючие графические структуры).
Если же речь идет о конкретном коде, то будут проявляться особенности структуры
соответствующего МК, его системы команд, организации ядра и модулей
СОЗУ регистрового файла, оперативной памяти, регистров специальных функций,
памяти программ, EEPROM, и минимальной аппаратной периферии.
И не всегда решение, оптимальное для одного вида будет таким же у другого,
в то же время "не очень" приятный алгоритм может превратиться в весьма перспективный.
Вот именно на эти особенности, дающие некоторое преимущество в целевом применении
каждого из семейств я и хочу рассмотреть в данной теме + практическое структурирование текстовок на ассемблере (как вариант писания). А для примера выбрано
достаточно простое (для начала) решение - легче анализировать будет.
Да и просто потренировать мозги, применив реальные макеты для отработки всяческих
садомазохистских вариаций. :cry:
Далі будє... :write:


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Чт сен 26, 2013 03:24:54 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4220
Откуда: Ижевск
Рейтинг сообщения: 0
BOB51 писал(а):
Итак, первичные наброски схем испеклись.
По мне, подачу питания на схему правильнее организовать так, чтобы узел тактирования контроллера не замечал перехода питания с основного на резервное и обратно.
Вложение:
Power_clock.GIF


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Чт сен 26, 2013 09:56:21 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
А он и так не слишком сие дело заметит - все зависит от параметров цепочки сброса. Да и излишний стабилизатор - сами МК работают в достаточно широком диапазоне питания. Возможно будет иметь место некоторое изменение частоты главного генератора при разном уровне питающих напряжений... но сие решается использованием более низковольтного основного источника (подгонка под уровень резервного).
MCP100/101 - 350xxxx и достаточно (не говоря уже о чем другом). На данный момент совершенно несущественно ибо всплывет только при целевой игрушке, а это просто макетки из подсобного материала (чего выбросить не жалко) под проработку программных выкрутасов... 8)
Пока важнее из творческого хандропофигизма выползти - на вариантах ввода/вывода приморозился ибо тяжко "с потолка" задачу выдумывать... те же менюшки, их вид, необходимое количество, возможности расширения и обработка дополнительных задачек... :roll: ... а тут осеннь... :sleep:


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Вс сен 29, 2013 21:05:01 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Начнем с макетки на основе AT89S8252.
Схемотехника.
Линии портов имеют нагрузочную способность как и у большинства общедоступных 40-лапых данной группы – в 1 ТТЛ вход… Хотя по документации максимальная допустимая частота кварца 24МГц, установим кварц ближе к типовому – 12МГц. МК допускает работу с внешней памятью программ/данных но, поскольку в данном макете такой режим без надобности, подадим на вывод /EA_vpp +5v через резистор 4,7килоом.
Выводы, работающие на внешние устройства (индикатор и кнопы) также подсоединим к шинке +5вольт через резисторные матрицы 8*4,7 килоома. Резисторные матрицы на незадействованных на данный момент выводах ставить жабо удавило. В качестве источника сигнала reset воспользуемся MCP101-450 DI. К сожалению, при таком элементе работа от батарейки в 4,5 вольта невозможна, но других номиналов в запаснике не оказалось.
Ну и по всей платке понатыкаем мелких и средних конденсаторов на линиях питания.
Вобщем по макетке вроде все.
От первоначально запланированной AT89S8252 пришлось отказаться — комплектом из ISP Programmer 1.2.0.56 + STK200 его к сожалению не удастся запрограммировать — там в ерратах у AT89S8252 по протоколу ISP заморочка есть... а параллельного программатора на 51-е еще поискать надо. Вести же разговор об устройстве, повтор которого требует спецоборудования, как-то некорректно... Ну да ладно — сунем AT89S52-24PC – эти относительно устойчиво прошиваются и на ISP Programmer 1.2.0.56 + STK200 и на AEC_ISP+ STK200 с переходничком (разводка на LPT там несколько по-другому выполняется). Надо только отметить, что вышеуказанный софт работает только с файловой системой FAT32, если дисковод NTFSный — ни читать ни записывать файлы они не смогут.
Для начала создадим заготовочку программную. Часики сами -по себе тикают, возможность менюшек разношорстных и дополнительных программных реле времени.
Оно конечно весьма и весьма сырое, но посмотреть как работает дисплей и как тикают сами часики уже можно.
Вложение:
at89s52prj.rar [45.42 KiB]
Скачиваний: 827

Пока буду конопушки-менюшки долизывать. :write:

Кроме того испеклась макетка для PIC18F2520
http://img.radiokot.ru/files/20529/5bz3g7j2x.gif
http://img.radiokot.ru/files/20529/5bz46i5bi.gif
– практически то же самое, что и для PIC16F876A, но кварц на 10МГц и конденсаторы на 15pF в главном генераторе.
И схемка
Вложение:
PIC18F2520.GIF [41.38 KiB]
Скачиваний: 1063


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Вс окт 13, 2013 17:24:44 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Движемся потихонечку к развитию программки.
Вложение:
at89s52prj.rar [18.31 KiB]
Скачиваний: 698

В данной версии реализован (хош и весьма коряво) механизм установки заданного времени. :dont_know:
На недельке погляжу как сие сыроваренное творенье
обработать и остальные заявленные в менюшках функции оживить.
Надо по распечатке за литровичем валерианки покумекать,
да и на "отлежку" первого варианта время потребно.
По мере работы выплыла мелкая пакость от излишне длинного свободнотелипающегося
провода в шлейфе клавиатуры - пришлось даже просечку делать для устранения паразитной емкости.
http://img.radiokot.ru/files/20529/thum ... tec28z.jpg
Дефект неявный, но пакостный - при работе в режиме индикации текущего времени (с секундами)
при нажатии кнопки s4 возникало самопроизвольное заполнение всяким мусором нижней строки дисплея. :cry:
Просечки данное зло устранили (пробиты незадействованные нигде провода, которые одним из концов
присоединялись к линиям E, R/W и RS МК).
По кнопам
http://img.radiokot.ru/files/20529/thum ... th196h.jpg
<< и >> гоняют курсор (или названия менюшек) по горизонтали, кнопы +/- выполняют или функции
ввод(+)/отмена(-), если находятся в позиции с символом "?", или гоняют значение выбранного знакоместа
в разумных для данного знакоместа пределах. :)
Продолжение следует...
:write:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Сб окт 26, 2013 13:27:13 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Итак первичная часть сыроваренной задачи завершена -
система работает как часы реального времени и имеет пока 4 субрежима
1. ввод параметров главных часов;
2. ввод параметров коррекции хода;
3. секундомер с старт/стоп сброс функциями
и перезаписью результата в качестве уставки таймера обратного отсчета;
4. таймер обратного отсчета с функциями установка начального значения уставки,
старт/стоп, перезапуск с текущей уставкой,
перезапись уставки по фактически отработанному интервалу,
выдача сигнала на линию Р1.2 по завершению отсчета и его деактивация
Все режимы управляются 4мя кнопами при подведении курсора в соответствующую позицию,
а там или коррекция текущих данных или команда в соответствии с примитивной иконкой.
Думал на том завершить... да жабо удавило... решил добавить еще два будильника
и ручное управление выходом, как в древнем наборчике на К145ИК1901 ...
А поскольку писание одного устройства с его отладкой (все данное делается без всяких суперсимуляторов
- текст-компиляция-макет - коррекция ошибок ранее написанного) в свободное время где-то неделька,
то вероятнее всего окончательно "шкелет" программы появится где-то к середине ноябру.
Вот тогда уже можно будет поизголяться с усовершенствованиями и оптимизациями, а затем и на другие МК
переделывать.
Внешний буззер прицеплю на недельке и выложу фотку готового недодела.
В архивчике схемка с подключением пищалки/релюшки, весьма сырой исходник
и скомпилированные файлы прошивки t7b.hex и t7b.bin для заливки из программатора...
Вложение:
ЧКСТ стабильная.rar [35.12 KiB]
Скачиваний: 729

:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Ср окт 30, 2013 22:33:27 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Ммнньяааа... :sleep:
Пришлось несколько поуродовать исходник... :cry:
Вложение:
t7d.rar [26.56 KiB]
Скачиваний: 672

Первое отличие - генератор секунды главных часов пересажен на Т/С2,
как результат - исчезло лишнее лаподрыгание на Р3, увеличена возможность
более плавно корректировать ход главных часов,
а также использовать данные корректора и для секундомер/таймера (пока не реализовано).
устранен дефект "короткого" интервала между маркером для возможности вставить пакет передачи микроLAN
- теперь допустимый интервал ~0,04секунды. Также более "живыми" стали кнопы.
Второе отличие - генератор секунды секундомера/таймера обратного отсчета выполнен на Т/С0,
что позволяет при некоторой доработке программы выполнять управление счетом помимо кнопы "старт/стоп"
еще и при помощи внешнего устройства по выводу Р3.2.
Также несколько изменено содержание файла определения констант/данных/бит (dfn_t7d.txt) 8) для более свободного оперативного корректирования при внесении каких-либо изменений.
Будилки пока " в ожидании" очередного свободного часика.
:write:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Ср ноя 06, 2013 21:08:50 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Вот наконец примитивчик вида «лампочки-кнопочки» испекся. В полном заданном объёме функционала древней микрухи. :oops:
Вложение:
mode145_mcs51.rar [38.19 KiB]
Скачиваний: 746

Хотелось еще парочка-тройку наворотов прилепить, да то уже будет уход от темы – как-нить на досуге доканаю, ежли буду конкретный кухонный таймерок лепить. Да и пока еще не слишком ясно, какой из выбранных МК поинтереснее в данном приложении окажется. :sleep:
Итак:
МК группы MCS52 - AT89S52-24PU;
Кварц 12МГц, один машинный цикл равен 0,000001S (1uS) ;
Дисплейный модуль двустрочник WH1602A-NGG-CT ;
Клавиатура – 5 кнопок ;
Внешний сигнал на буззере (самогенерирующем) и светодиодике ;
Питание от внешнего импульсника на MC34063A 5 вольт 0,013А
Функционал:
Главные часы
показывает текущее время часы:минуты:секунды, возможно смещение окна показаний в пределах нижней стороки дисплея (влево/вправо) и «закрытие» окна индикации секунд.
Старший незначащий нуль в позиции десятков часов автоматически гасится.
Настройка/ввод параметров главных часов. Отдельная вкладка с вводом параметров по каждому знакоместу. Ввод защищен контролем правильности значений по каждой позиции.
Настройка значения константы досчета (корректор хода). Данная величина используется и генератором главных часов и генератором секундомера/таймера.
Выводится в виде четырехзначного значения в hex формате. Изменение путем инкремента/декремента (S2/ S3 в позиции с пиктограммкой «%»).
Будилки
Всего два (возможно четыре). У каждого независимая настройка времени сработки и активного выходного уровня (могут также работать на различные выходные лапки – запас на вырост, в данном исходнике не реализовано). Работают только при активном индикаторе главных часов.
При открытых окнах других режимов контроль совпадения текущего времени и уставок будильников не производится.
Сброс сигнала сработки нажатием кнопки «вниз» (S3) в статусе индикации текущего времени только в случае, если имелась сработка хотя-бы одного из бодунов, иначе данная конпа игнорируется.
На всяк случай имеется ручное управление линией сигнала при помощи кнопы S4 – если не имела место сработка по бодуну каждое нажатие S4 меняет состояние сигнального вывода на противоположное.
Настройка бодунов
Сначала выбор соответствующего устройства в менюшке, далее набор параметров в часах и минутах плюс про уровень не забыть (0 или 1). Затем в позиции с «?» нажать или S2 (подтверждение активации) или S3 – выход с деактивацией.
Текущий статус показывается в виде пиктограммки «колокольчик» рядышком с «?».
Если значения и статус «включен» надо сохранить то жмем S2 и выходим в вышестоящее меню, если статус надо изменить на «отключен» выходим через кнопу S3.
Секундомер
Считает часы:минуты:секунды.
Запускается/останавливается кнопкой S2, выход в вышестоящее меню = нажатию S3 (оба варианта при курсоре в позиции с пиктограммкой «?» ). Если при остановленном секундомере подвести курсор в позицию с пиктограммкой «С» то нажатие S2 приведет к сбросу показаний секундомера и записью имевшего место значения в качестве предварительной уставки таймера обратного отсчета, а нажатие S3 просто очистит табло.
Ни одна комбинация кнопок не будет активна, пока включен отсчет врамени.
Отсчет времени главных часов не прекращается. Заложена возможность управления счетом секундомера и таймера от внешнего сигнала (в данном варианте исходника не реализовано).
Таймер обратного отсчета
Считает часы:минуты:секунды.
Запуск двухэтапный – на первом этапе выдается окно настройки параметров, где выводится ранее установленное время. Можно согласится с предложенным (S2 в позиции «?») или установить свое (при положении курсора под текущим знакоместом +/- = S2/ S3).
Или вернуться в верхнее меню (S3 в позиции «?»).
Затем в открывшемся окне текущего счета S2 в позиции «?» запускает/останавливает отсчет.
Со сбросом похитрее. По завершению отсчета курсор автоматически установится в позицию с пиктограммкой «сброс». Нажатие конпки S3 или S2 в этом случае приведет к установке исходных значений уставки. Если таймер остановить, а затем перевести курсор в позицию сброса у кнопы S2 появится возможность перезаписать уставку по значению фактически отработанного времени (S3 значения уставки не изменяет – возвращает то, что иначально было).
Возврат в вышестоящее меню стандартный - S3 в позиции с пиктограммкой «?».
Ни одна комбинация кнопок не будет активна, пока включен отсчет врамени.
Отсчет времени главных часов не прекращается.
Все действия организованы в виде менюшек.
Доступ к главному меню производится при одновременном нажатии кнопок S0 и S1.
Переход между устройствами кнопками S0 («влево») и S1 («вправо»), выборка кнопкой S2 («вверх»/»ввод»), возврат в вышестоящее меню кнопкой S3 («вниз»/»отмена»).
На вкладках настройки/работы нажатие S0 («влево») и S1 («вправо») приведет к соответствующему перемещению курсора в пределах текущей строки дисплея.
При удержании кнопки нажатой несколько более длительное время в тех участках, где имеется необходимость более быстрого перебора значений автоматически включается режим «многократного нажатия».
Контроль на «зажатие/залипание» и таймер автовозврата не применяются.
Программный исходник нашкрябан в виде «черновика» - пока не оптимизировался и не подчищался, достаточно много и «дыр», которые так и просят «заполни меня».
Бинарный объём полученного кода 4402 байта из имеющихся в AT89S52 8192 байт ПЗУ.
Несколько изменена схемка ключа буззера/светодиода.
Уфф… :cry: Вроде все описал… :dont_know:
Теперь займемся «пересадкой» проекта на базу МК ATmega8515 и анализом особенностей оного процесса (и самих МК). :write:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Сб ноя 09, 2013 19:03:26 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Переходим к АВРкам.
Первая головная боль - отсутствие приоритетного контроллера прерываний...
Прийдется поднапрячь мозги над взаимоперекрывающимися прерываниями - у MCS51
эти вопросы решались на аппаратном уровне. :cry:
Второй ммняа...
АВРка работает с ОЗУ только на чтение/запись,
прямые операции с регистрами ОЗУ невозможны. ( Зато сколько того ОЗУ! Да и EEPROMка имеется. )
MCS51 так работает только с внешней памятью данных,
( да и то там возможно совмещение памяти программ с памятю данных).
С основным набором СОЗУ возможно выполнять операции даже без участия акумулятора.
Кроме того есть аж 8 индексных регистров по два в каждом банке для ОЗУ для косвенной адресации
в пределах ОЗУ 256 байт (аналогия АВРки X,Y и Z, но тот уже зарезервирован
для работ с ПЗУ и косвенных переходов/вызовов подпрограмм)
и два DPTR (аналогия Z у АВРки для LPM) для работы с памятью программ как источником данных
плюс хитрая команда MOVC A,@A+PC для чтения коротких табличек индексов
относительно текущего счетчика команд.
Преимущество АВРок возможность использования каждого из регистров R0-R31 как в
качестве источника, так и в качестве приемника в различных операциях...НО...
Полноценных с точки зрения универсального использования регистров не так уж и много:
резервируем
R31:R30 (Z) работа с таблицами в ПЗУ, косвенные ijmp/icall
R29:R28 (Y) указатель данных в ОЗУ
R27:R26 (X) указатель данных в ОЗУ
R25:R24 - индекс для Z,Y,X в пределах +/-63
R1:R0 - используются в LPM/SPM и командах умножения
R15:R2 - не могут работать с командами, использующими непосредственно указанные данные
остается только R16,R17,R18,R19,R20,R21,R22 и R23 - всего-то 8!!! :shock:
Тошноватенько после полной свободы в AT89S52... Это не говоря уже о "битовом процессоре"...
Добавим что у MCS51 все регистры специальных функций доступны всем командам как
прямоадресуемые ячейки ОЗУ. У АВРок и тут не все гладко:
для доступа к регистрам специальных функций как к памяти необходимо писать макрос
(пресловутое смещение +0x20), но тогда их можно только читать в регистр файла СОЗУ или
записать содержимое регистра файла СОЗУ в область регистров специальных функций.
Есть и команды, оперирующие напрямую с регистрами специальных функций
как с устройством ввода/вывода... Однако они вновь неравноценны!
Все эти команды работают только с портами(РСФ) в диапазоне адресов 0x00-0x1F
(cbi port,bit, sbi port,bit, sbic port,bit, sbis port,bit) и только IN Rd,Port
и OUT Port,Rr работают со всеми портами... но не со всеми регистрами специальных функций
ибо есть еще и "расширенный" набор сих регистров, доступный только как память...
Приятное исключение разве что доступ к содержимому SREG - уж это и вывернуть и завернуть
как пожелаете!
Есть некая анология битовому процессору с использованием бита Т SREG - весьма
полезная штука и действует относительно всего поля регистрового файла R0-R31.
Туда же стоит отнести команды SBRC Rr,b и SBRS Rr,b.
Отдельно злобный ФФЫРРШШШ по поводу невозможности сложения
с непосредственными данными более +127 даже для группы R16-R31!!! :kill:
И даже так это надо делать как вычитание отрицательного числа...
О заморочках при посторении таблиц разговор особый - нудотно, но вполне решаемо.
Тудыть же стоит отнести операции "самопрограммирования"
и модификацию размещения таблиц векторов прерываний с вектором аппаратного сброса.
Особливо приятно при самодельном загрузчике вариантов ПО. Одначе и тут не обошлось без подвоха-
для ATmega8515 заявленый объём ПЗУ в 8 килобайт есть не что иное
как длина программного кода не более 4 кило слов...
Особая "прелесть" АВРок - необходимость начальной двухуровневой инициализации - сначала фуз-битами,
затем регистрами специальных функций в полном объёме, независимо используется данное
аппаратное устройство в конкретной схемке или нет,
обусловлена их более обширной начиненностью и вполне компенсируется при более-менее полном
использовании их аппаратной начинки.
Так что буду пробовать переделку под новый МК. Только для начала
проанализирую возможности аппаратной части и необходимые из-за разной структуры
обмена с ПЗУ/ОЗУ, портами и набором команд изменения в программных алгоритмах.
:write:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Пн ноя 11, 2013 13:09:45 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Аппаратная часть...
Вложение:
AVR.GIF [41.27 KiB]
Скачиваний: 1289


Начнем с дурной конфигурации фузов.
Конечно можно и различными программками-подсказками воспользоваться, но
предпочтение самостоятельно (по-старинке) мозгами шевелить осталось.
Я эту памятку обычно в текст заголовка исходника вставляю (аналогия с ПИКами,
только вот все равно вручную на программаторе вводить надо):

; выбрана текущая конфигурация проэкта:
;
; S8515C=1 режим совместимости с AT90S4414/8515 отключен
; WDTON=1 WDT может быть выключен программно
; SPIEN=0 последовательное программирование разрешено
; CKOPT=1 для частот 3-8МГц (возможно CKOPT=0 при низкой стабильности генератора)
; EESAVE=0 стирание EEPROM разрешено
; BOOTSZ1:BOOTSZ0=0:0
; BOOTRST=1 размещение вектора сброса и таблицы прерываний с адреса 0x0000
; BODLEVEL=1
; BODEN=1 схема BOD отключена
; SUT1:SUT0=10 (умолч.max) определяет длительность задержки сброса
; CKSEL3:CKSEL2:CKSEL1:CKSEL0 = 1:1:1:1 внешний кварцевый генератор с частотой 3-8МГц

С портами весьма приятно - независимые регистры управления направлением шины,
регистры данных и выводов, выходные каскады, позволяющие выдавать без особых проблем
до 15мА что в 0, что в 1, возможность внутренней "подтяжки"
(правда она включаетсяЭотключается для всех портов одновременно).
С таймерами похуже - их всего два (AT89S52 - 3 16-ти разрядных), предделитель у них общий
с единой управляющей линией сброса...
А в конструкции заложены два независимых генератора секунд-интервала,
для главных часов и для таймер/секундомера. Прийдется один таймер от clk_io кормить,
а другой с предделителем гонять.
При сем использование единой константы плавной коррекции хода есть весьма проблематичное дело...
А самое неприятное - если у MCS51(AT89S52) внешнее аппаратное управление ходом таймеров
есть обычное дело, то таймеры АВРок "заточены" больше под выдачу сигнала наружу (генераторы, ШИМ).
Если бы в прототипе на AT89S52 я реализовал опцион внешнего аппаратного управления секундомером/
таймером обратного отсчета в "накопительном" по внешнему событию режиме, повторить то же самое на АВР
с аналогичной точностью отсчета было бы весьма заморочно - потребно или программный опрос внешней линии
параллельно со сканером клавиатуры организовывать или еще одно прерывание добавлять с соответствующими
добавками в программной обработке. Хоша в обычном бытовом варианте это не столь уж существенно.
Поползу программку шкарябать...
:write:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Пт ноя 29, 2013 12:43:51 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Ой не мало менi клопоту, та влiз до AVR... :facepalm:
Памяти то вроде много, а на деле продлема на проблеме.
Работа с ОЗУ проводится исключительно или через указатели или непосредственной адресацией.
Даже у таких древних монстров как I8080 или Z80 позволялось делать практически все операции
с ячейками ОЗУ и акумулятором при размещении результата в акумуляторе, не говоря уже о MCS51
(где доступ "только перемещение в СОЗУ" касается исключительно внешней памяти данных,
а регистры ОЗУ доступны для всех команд МК) и PICах...
Указателей в обрез - всего два, ежли Z не трогать, прямая адресация = -1
слово из и так не очень-то большого ПЗУ. "Пушепопить" весь блок СОЗУ (регистровый файлR0-R31)
по каждому прерыванию/подпрограмме еше более некорректно, а простое перемещение также
один индекс как минимум захавает.
Потребна жесткая планировка всей программы на начальном этапе проектирования...
... :cry:
Вот и испекся программный "шкелет" для схемки с АВРкой.
Вложение:
mode145_atmega.zip [152.73 KiB]
Скачиваний: 703

Полная копия по функционалу тому, что для MCS51(AT89S52) сделано было, даже ошибку
ввода "2Х" при вводе часов (ввод параметров главных часов/ввод параметров бодунов)
пока не правил.
Объективно ATmega8515 по аппаратной начинке не конкурент AT89S52...
Возможность внешнего аппаратного управления пуском/остановом счета таймера полностью
отсутсвует, да и таймеры не соответствуют - один 8 и один 16-разрядные против трех
16-разрядных. Это вызывает "ущербность" в отношении корректора хода - и намного
"грубее" и только для главных часов. Более корректным было бы применение ATmega162...
Но то "в ящик" пока отложим...
Вторая пакость - "двуличье" трактовки содержимого указателя Z при обращении
к памяти программ - для чтения данных это адрес*2 с выборкой старшего/младшего байт слова
по содержимому Z.0, с другой стороны - полный адрес слова при ijmp/icall.
Да и счетчик программ оперирует словами. Тут при отладке без штатного симулятора/дебаггера
IDE не обойтись.
Третья, и самая существенная разность - ОЗУ доступно только для чтения/записи в/из
ячейки регистрового файла (СОЗУ), что создает весьма жесткий дифицит ресурсов СОЗУ
даже для такой простенькой задачи. Компенсацией является повышенное быстродействие
и наличие гораздо большего объёма стека.
Отношение объёмов программ пока оценить сложно - для АВР применялись несколько иные
алгоритмы и решения, использование которых для MCS51 позволит сократить объём кода
минимум на 10%.
Энергопотребление у макетки в пределах 13,5-14мА (у макетки на AT89S52 порядка 15мА).
Разница... Весьма невелика...
Чувствительность кноп повыше - но то дело поправимое изменением интервала сканера.
Далее ждем оппонентов - АВР вроде более распространена, чем MCS51 (хоша и там
"очепятку" в исходнике никто не приметил, благо данный глюк на работе устройства
абсолютно не сказывается).
:beer:
Мал передых и приступим к замурочке с ПИКами. 8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Сб ноя 30, 2013 22:24:24 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Чей-то мне примерещилось, что при длительной работе секундомера/таймера АВРкины часики отстают... :roll:
На всяк случай подредактировал файл обработчика секундомера/таймера разрешив вложенное прерывание...
Вложение:
sektim.txt [7.41 KiB]
Скачиваний: 703

Время покажет, чего там получилось... :facepalm:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Вс дек 01, 2013 17:48:00 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4220
Откуда: Ижевск
Рейтинг сообщения: 0
BOB51 писал(а):
Энергопотребление у макетки в пределах 13,5-14мА (у макетки на AT89S52 порядка 15мА).
Разница... Весьма невелика...
Подозрительно много. Решил проверить на своей подходящей платке. Схема и программа выдраны из давно действующего проекта, естественно, что функционал максимально урезан.
(ATmega8515L, кварц 8000000, индикатор микротипс 16х2). Ток потребления без SLEEP IDLE 11,5мА, со слипом 5,5мА.


Последний раз редактировалось akl Пн дек 02, 2013 11:45:08, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Вс дек 01, 2013 20:23:54 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Я делаю замер по своей программе и по своей макетке...Разница и в МК (используется ATmega8515-16PI с кварцем на 8МГц при малоамплитудном генераторе) и в режимах эксплуатации. :)
Даже на более точном цифровом приборе (а не на аналоговом) 12,78-12,8мА и при том, что не используется никаких энергосберегающих выкрутасов - система постоянно находится в режиме сканера клавиатуры (фон- часы реального времени или часики без модуля индикации+секундомер/таймер с индикацией): при разнице в 0,5 вольта в источниках (4,5-5,1В) отклонение в 1-2мА считаю несущественным и возможным по ошибкам применяемых измерительных приборов ... Применение других программных решений с "урезанным" функционалом как основу для сравнения по энергопотрелению считаю некорректным ибо весь смысл в сравнении аналогично исполняемых задач (можно конечно менять алгоритмы, но общие функции устройства должны оставаться неизменными)...
8)
P.S.
Прпошу извинить за поздний ответ - имею на данное время проблемы и мобильным инетом (майд ин юкрейн.. :kill: :kill: :kill: )

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Пн дек 02, 2013 03:43:14 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4220
Откуда: Ижевск
Рейтинг сообщения: 0
BOB51 писал(а):
...не используется никаких энергосберегающих выкрутасов - система постоянно находится в режиме сканера клавиатуры (фон- часы реального времени...
В этом Ваша основная ошибка. В часах именно отсчет временных интервалов является главной задачей; все остальное (создание и обслуживание кнопочного мюню, дополнительные режимы - секундомеры, таймеры обратного счета, будильники, календари) - надуманные рюшечки и функционалом называться, по большому счёту, не могут. Единственное, пожалуй, это программная коррекция хода часов.
BOB51 писал(а):
... Применение других программных решений с "урезанным" функционалом как основу для сравнения
по энергопотрелению считаю некорректным ибо весь смысл в сравнении аналогично исполняемых задач
Хорошо, приведите параметр для сравнения. Со своей стороны предлагаю сравнивать по точности хода часов. Только, если можно, без малоубедительных заявлений типа
BOB51 писал(а):
Чей-то мне примерещилось, что при длительной работе секундомера/таймера АВРкины часики отстают...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Пн дек 02, 2013 11:27:21 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
akl
Ваше представление о конструктиве верно относительно схемок вида "исключительная однозадачность".
Я ставлю вопрос иначе - нет смысла дублировать специализированную ИС часов только для задачи простых часов. Измерение времени должно быть частью устройства (равноценной, но лишь частью общей задачи). Иначе зачем городить самоделку? - Лучше взять готовое изделие.
В компьютерах также имеются элементы RTC, однако никто не скажет, что основная задача ПК - отсчет текущего времени. 8)
А насчет сравнений - выше уже приведены две схемки (два макета) с однотипным ПО. Так вот это и сделано для взаимосравнений именно однотипного схемотехнического решения при выполнении однотипных задач. Вопрос о других схемных и программных решениях не ставится. Ежли есть реальный интерес - можете собрать макетки, залить прошивку и проверить все вышеизложенное самостоятельно.
На данный момент мне более интересно проверить удобство систем команд, организации ядра и распределения ресурсов в четырех различных системах МК на с одной стороны, достаточно простой задаче, а с другой - с необходимым минимумом возможных расширений и взаимообогащения конспектика алгоритмов.
Ну не на "кнопочках-лампочках" же конструкции тестиь, а так, чтоб где-нибудь еще пригодились. :)))
Насчет точности хода...
По основному режиму проблем никогда не будет, а вот по режимам с взаимогоняющимися прерываниями уже "повылазило", хотя теоретически быть не должно было - интервал для обработки даже двух подряд (таймера/секундомера и главных часов) значительно короче даже самого короткого интервала отсчета по таймерам. Однако накапливаемая ошибка потребовала разрешить прерыванию по генератору главных часов врезаться в обработчик скеундомера/таймера. :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Пн дек 02, 2013 11:42:55 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4220
Откуда: Ижевск
Рейтинг сообщения: 0
Многозадачностей мне и без Вас хватает. Жаль, что разговора не получилось. Удачи.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: In vino veritas
СообщениеДобавлено: Вт дек 03, 2013 12:07:35 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Мня-мня-мня... :cry:
Приношу извенения за несвоевременно обнаруженные очепятки в файле генератора секундомера/таймера приводящие к отсутствию учета часов в режиме секундомера...:oops:
Новая редакция файла с исправлениями:
Вложение:
sektim.txt [7.37 KiB]
Скачиваний: 669

и архивчик всего проекта в целом , с учетом данных изменений:
Вложение:
rev2.rar [77.81 KiB]
Скачиваний: 763

На данный момент все обнаруженные очепятки.
Хоша могут быть еше - макет на AT89S52 я тестировал по каждому модулю, а программу для АВР просто модифицировал под данный кристалл с внесением некоторых необходимых для АВРкиной структуры и системы команд изменений, а на проверку поставить... народ дома гоняет... 8)

akl
Зря Вы так о "многозадачности". :)
Чисто однозадачными можно считать только часики с алгоритмом ввода уставок при включении, и то условно. Ведь все равно, как минимум, выполняются две задачи - собственно подсчет текущих "тиков" от таймера с нормированием результата (*60,*24) и задача вывода/обслуживания дисплея.
Правда в простом варианте эти задачи бегут друг за другом не перекрываясь во времени (и то если это не динамическая индикация на светодиодных матрицах).
Если вести речь о самых простых часиках - то здесь явное преимущество за ПИКами в 16-лапом варианте + МЭЛТовский МТ-10Т7-7 и по аппаратным возможностям и по энергопотреблению в том числе. Даже автономный RTC можно на ПИКе 8-лапкином сварганить, заложив туда самоделкин интерфейс связи и множество дополнительных вкусностей.
:beer:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 1081 ]  1, , , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y