, у кого есть протеус могут посмотреть в работе..
Из железа есть мк atmega128, rtc ds1307, eeprom at 24c256 блок с оптотиристором на атмега 8. все это уже на плате промышлен контроллера паять ничего не нужно
далее жки дисплей символьный 16*2 и 6 кнопок..Компилятор си IAR AVR.
Нужны ваши советы по реализации программы. Как лучше сделать с чего начать.Что должно быть, а чего нет?
Может кто-то уже сталкивался? Буду благодарен за любые советы.
Последний раз редактировалось phanis Вс фев 17, 2013 21:11:05, всего редактировалось 1 раз.
Ели нет ТЗ - написать ТЗ. Согласно ТЗ нарисовать схему, сделать плату (тут у вас, вроде готовое). Нарисовать алгоритм работы устройства. Тут уже, надо бы получить часть денег от заказчика - работа проведена достаточно большая. Приступить к программированию согласно алгоритму.
Лет десять назад, работая в частном вузе, делал устройство для подачи звонков на замену слепленному из электронных больших часов (постоянно сбоило). Звонки надо было подавать по двум разным расписаниям - для вуза и лицея. Применил списанный компьютер на 286 процессоре с МСДОС - управление релюшками через ЛПТ порт, звук со звуковой платы (тогда отдельные были в слот ИСА) потом на усилитель и колонки на всех этажах. За минуту до звонка был предварительны сигнал типа колокольчика (сам написал из трех нот ) Программу написал программист на турбо паскале. Запускался утром компьютер обычным электронным будильником, выключал вечером себя сам релюшкой через ЛПТ. До сих пор оно работает, только заменили 286 компьютер на пентиум (зря - 286 компьютеры были очень надежные).
:\Program Files\Labcenter Electronics\Proteus 7 Professional\MODELS
Понятно текущее время и в нужный момент выдаем сигнал на нужную лапку. Как лучше это сделать, проверять все 100 записей в основном цикле постоянно Или например как у меня если секунды равны нулю сделать проверку записей . Или еще как то по другому.
Идея интересная. Попытаюсь описать как на данный момент работает, может замечания будут.
включаемся
считываем дату/время с дс1307
(здесь не мешало бы добавить проверку на текущий день недели относительно текущей даты)если что поправить день недели..
выполняем поиск среди 100-тни записей для текущего дня недели с епромки 24с256(записи по 800 байт на каждый день недели), попутно проверяя целостность структуры записи и вносим в буфер активных событий(т.е. которые включены) лишь часы и минуты увеличивая счетчик активных событий.
по прерыванию таймера которое происходит каждые 10 мсек,выставляем флаг тут же попутно опрашиваем кнопки..
Далее в основном цикле ловим это же флаг, если флаг==1 проверяем кнопки если кнопка была нажата переходим по менюшкам,
считываем дату/часы, отправляем состояние на блок с оптосимистором, обновляем текущую информацию на дисплее.,
каждую минуту когда секунды равны нулю, проверяем буфер активных событий с текущем временем, если совпало, меняем состояние переменной которая в дальнейшем уйдет в блок с оптосимистром.(включаем звонок)
далее если секунды считанные== 10 сек( ну это пока, далее можно будет менять 1..59 сек) то (выключаем звонок).
Вопрос: для определения дня недели по дате какой алгоритм используете?
Кстати добавлю, проект безвозмездный, никакой оплаты я не прошу..
Заец Н.И. Радиолюбительские конструкции на PIC микроконтроллерах
стр.114 Устройсво подачи звонков по расписанию
Правда там на пике с однострочным дисплеем.
Это не простой счётчик, это Real-Time Clock (RTC) Counts Seconds, Minutes, Hours, Date of the Month, Month, Day of the week, and Year with Leap-Year Compensation Valid Up to 2100
uputs((unsigned char*)"\nEnter Date (dd/mm/yy):");
data = ugetc(); //receive date
uputc(data);
if(data < 0x30 || data > 0x33)
return DATE_ERROR;
..........
uputs((unsigned char*)"\nEnter Day (Sunday:0, Monday:1...) (0-6):");
data = ugetc(); //receive Day of the week
uputc(data);
if(data < 0x30 || data > 0x36)
return DATE_ERROR;
..........
Посмотрел ваш проект в протеусе - вполне неплохо. Кнопки только хорошие надо поставить и жалко человека, которому набирать расписание. Может поставить микросхемку USB-COM, чтоб подойти с ноутбуком и переписать набранное расписание на ПК: http://forum.easyelectronics.ru/viewtop ... 0%B8%D1%8E