Страница 1 из 2

Школьный звонок на AVR

Добавлено: Сб фев 16, 2013 21:20:03
phanis
Доброго времени суток.
Попросили написать программу для автоматической подачи звонков в школе, согласно расписанию.
И вот что на данный момент написал
zvonok.rar
(383.95 КБ) 501 скачивание
, у кого есть протеус могут посмотреть в работе..
Из железа есть мк atmega128, rtc ds1307, eeprom at 24c256 блок с оптотиристором на атмега 8. все это уже на плате промышлен контроллера паять ничего не нужно
далее жки дисплей символьный 16*2 и 6 кнопок..Компилятор си IAR AVR.
Нужны ваши советы по реализации программы. Как лучше сделать с чего начать.Что должно быть, а чего нет?
Может кто-то уже сталкивался? Буду благодарен за любые советы.

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 09:05:36
oleg110592
Ели нет ТЗ - написать ТЗ. Согласно ТЗ нарисовать схему, сделать плату (тут у вас, вроде готовое). Нарисовать алгоритм работы устройства. Тут уже, надо бы получить часть денег от заказчика - работа проведена достаточно большая. Приступить к программированию согласно алгоритму.

Лет десять назад, работая в частном вузе, делал устройство для подачи звонков на замену слепленному из электронных больших часов (постоянно сбоило). Звонки надо было подавать по двум разным расписаниям - для вуза и лицея. Применил списанный компьютер на 286 процессоре с МСДОС - управление релюшками через ЛПТ порт, звук со звуковой платы (тогда отдельные были в слот ИСА) потом на усилитель и колонки на всех этажах. За минуту до звонка был предварительны сигнал типа колокольчика (сам написал из трех нот :) ) Программу написал программист на турбо паскале. Запускался утром компьютер обычным электронным будильником, выключал вечером себя сам релюшкой через ЛПТ. До сих пор оно работает, только заменили 286 компьютер на пентиум (зря - 286 компьютеры были очень надежные).

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 11:39:20
Аlex
блок с оптотиристором на атмега 8
А зачем ещё один контроллер, Вам ног у основного мало что-ли ? :))
Делали бы уж тогда для каждой кнопки по МК :))

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 13:41:15
phanis
Халявные блоки, все спаяно и собрано уже до меня, заводское..

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 14:57:30
pyzhman
Это что за знакогенератор в дисплее? Корейский что-ли?
По сути: отслеживаем текущее время и в нужный момент выдаем сигнал на нужную лапку.

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 15:34:05
phanis
Что бы отображалась кириллица нужно заменить файл LCDALPHA.dll этим
LCDALPHA2.RAR
(48.21 КБ) 229 скачиваний
:\Program Files\Labcenter Electronics\Proteus 7 Professional\MODELS
Понятно текущее время и в нужный момент выдаем сигнал на нужную лапку. Как лучше это сделать, проверять все 100 записей в основном цикле постоянно Или например как у меня если секунды равны нулю сделать проверку записей . Или еще как то по другому.

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 16:30:47
ChipKiller
Как лучше это сделать, проверять все 100 записей в основном цикле постоянно
.. может сделать очередь и грузить в RAM структуры "ближайших событий" и проверять именно их. Хотя задержка на доли секунды вряд ли критична .... :)

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 17:48:54
phanis
Идея интересная. Попытаюсь описать как на данный момент работает, может замечания будут.
включаемся
считываем дату/время с дс1307
(здесь не мешало бы добавить проверку на текущий день недели относительно текущей даты)если что поправить день недели..
выполняем поиск среди 100-тни записей для текущего дня недели с епромки 24с256(записи по 800 байт на каждый день недели), попутно проверяя целостность структуры записи и вносим в буфер активных событий(т.е. которые включены) лишь часы и минуты увеличивая счетчик активных событий.
по прерыванию таймера которое происходит каждые 10 мсек,выставляем флаг тут же попутно опрашиваем кнопки..
Далее в основном цикле ловим это же флаг, если флаг==1 проверяем кнопки если кнопка была нажата переходим по менюшкам,
считываем дату/часы, отправляем состояние на блок с оптосимистором, обновляем текущую информацию на дисплее.,
каждую минуту когда секунды равны нулю, проверяем буфер активных событий с текущем временем, если совпало, меняем состояние переменной которая в дальнейшем уйдет в блок с оптосимистром.(включаем звонок)
далее если секунды считанные== 10 сек( ну это пока, далее можно будет менять 1..59 сек) то (выключаем звонок).
Вопрос: для определения дня недели по дате какой алгоритм используете?
Кстати добавлю, проект безвозмездный, никакой оплаты я не прошу..

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 18:41:03
radteh
Вот, может сгодиться Алгоритм_вычисления_дня_недели

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 18:47:46
russo_turisto
А искать не пытались готовый проэкт?

Заец Н.И. Радиолюбительские конструкции на PIC микроконтроллерах
стр.114 Устройсво подачи звонков по расписанию
Правда там на пике с однострочным дисплеем.

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 19:04:48
phanis
radteh писал(а):Вот, может сгодиться Алгоритм_вычисления_дня_недели
Да именно оттуда и брал пример на СИ. Просто некоторые пишут, что не всегда верно вычисляет.
russo_turisto писал(а):А искать не пытались готовый проэкт?
Не пробовал. Спасибо.

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 19:31:47
radteh
Стоп, из ds1307 можно и так извлечь день недели.

Re: Школьный звонок на AVR

Добавлено: Вс фев 17, 2013 19:33:35
phanis
Это как?Объясните пожалуйста..

Re: Школьный звонок на AVR

Добавлено: Пн фев 18, 2013 13:19:41
radteh
Вот табличка из документации, по адресу 03H можно получить день недели.
Изображение

Re: Школьный звонок на AVR

Добавлено: Пн фев 18, 2013 13:29:39
piligrim130
Надо еще вживить туда беспроводное управление и продавать ученикам приложение на мобильник для управления звонками :))

Re: Школьный звонок на AVR

Добавлено: Пн фев 18, 2013 15:56:07
phanis
radteh писал(а):Вот табличка из документации, по адресу 03H можно получить день недели.
Изображение
Так если дату поменяли например, тогда как? DS-1307 простой счетчик,и не рассчитывает день недели по дате..
Обновил проект
zvonok18_02_13.rar
(403.42 КБ) 235 скачиваний

Re: Школьный звонок на AVR

Добавлено: Пн фев 18, 2013 17:11:15
radteh
Это не простой счётчик, это 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

Re: Школьный звонок на AVR

Добавлено: Пн фев 18, 2013 17:16:40
oleg110592
Сделайте обязательным, при вводе даты, ввод недели.
делал установку времени по ком порту в терминале:

Код: Выделить всё

  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;
..........
скопипастил тут: http://www.dharmanitech.com/2009/01/sd- ... fat32.html

Re: Школьный звонок на AVR

Добавлено: Пн фев 18, 2013 18:45:54
phanis
Спасибо тоже об этом думал, но пока остановился на алгоритме с Вики.

Re: Школьный звонок на AVR

Добавлено: Пн фев 18, 2013 20:34:02
oleg110592
Посмотрел ваш проект в протеусе - вполне неплохо. Кнопки только хорошие надо поставить и жалко человека, которому набирать расписание. Может поставить микросхемку USB-COM, чтоб подойти с ноутбуком и переписать набранное расписание на ПК: http://forum.easyelectronics.ru/viewtop ... 0%B8%D1%8E