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

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

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

Сообщение oleg110592 »

Ели нет ТЗ - написать ТЗ. Согласно ТЗ нарисовать схему, сделать плату (тут у вас, вроде готовое). Нарисовать алгоритм работы устройства. Тут уже, надо бы получить часть денег от заказчика - работа проведена достаточно большая. Приступить к программированию согласно алгоритму.

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

Сообщение Аlex »

блок с оптотиристором на атмега 8
А зачем ещё один контроллер, Вам ног у основного мало что-ли ? :))
Делали бы уж тогда для каждой кнопки по МК :))
Контактная информация:
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

Халявные блоки, все спаяно и собрано уже до меня, заводское..
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Это что за знакогенератор в дисплее? Корейский что-ли?
По сути: отслеживаем текущее время и в нужный момент выдаем сигнал на нужную лапку.
Docendo discimus
Контактная информация:
Реклама
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

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

Сообщение ChipKiller »

Как лучше это сделать, проверять все 100 записей в основном цикле постоянно
.. может сделать очередь и грузить в RAM структуры "ближайших событий" и проверять именно их. Хотя задержка на доли секунды вряд ли критична .... :)
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

Идея интересная. Попытаюсь описать как на данный момент работает, может замечания будут.
включаемся
считываем дату/время с дс1307
(здесь не мешало бы добавить проверку на текущий день недели относительно текущей даты)если что поправить день недели..
выполняем поиск среди 100-тни записей для текущего дня недели с епромки 24с256(записи по 800 байт на каждый день недели), попутно проверяя целостность структуры записи и вносим в буфер активных событий(т.е. которые включены) лишь часы и минуты увеличивая счетчик активных событий.
по прерыванию таймера которое происходит каждые 10 мсек,выставляем флаг тут же попутно опрашиваем кнопки..
Далее в основном цикле ловим это же флаг, если флаг==1 проверяем кнопки если кнопка была нажата переходим по менюшкам,
считываем дату/часы, отправляем состояние на блок с оптосимистором, обновляем текущую информацию на дисплее.,
каждую минуту когда секунды равны нулю, проверяем буфер активных событий с текущем временем, если совпало, меняем состояние переменной которая в дальнейшем уйдет в блок с оптосимистром.(включаем звонок)
далее если секунды считанные== 10 сек( ну это пока, далее можно будет менять 1..59 сек) то (выключаем звонок).
Вопрос: для определения дня недели по дате какой алгоритм используете?
Кстати добавлю, проект безвозмездный, никакой оплаты я не прошу..
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Сообщение radteh »

Вот, может сгодиться Алгоритм_вычисления_дня_недели
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Ср окт 07, 2009 06:45:38
Откуда: Astana KZ

Сообщение russo_turisto »

А искать не пытались готовый проэкт?

Заец Н.И. Радиолюбительские конструкции на PIC микроконтроллерах
стр.114 Устройсво подачи звонков по расписанию
Правда там на пике с однострочным дисплеем.
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

radteh писал(а):Вот, может сгодиться Алгоритм_вычисления_дня_недели
Да именно оттуда и брал пример на СИ. Просто некоторые пишут, что не всегда верно вычисляет.
russo_turisto писал(а):А искать не пытались готовый проэкт?
Не пробовал. Спасибо.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Сообщение radteh »

Стоп, из ds1307 можно и так извлечь день недели.
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

Это как?Объясните пожалуйста..
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Сообщение radteh »

Вот табличка из документации, по адресу 03H можно получить день недели.
Изображение
Поставщик валерьянки для Кота
Сообщения: 2433
Зарегистрирован: Пт дек 03, 2010 10:52:25

Сообщение piligrim130 »

Надо еще вживить туда беспроводное управление и продавать ученикам приложение на мобильник для управления звонками :))
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

radteh писал(а):Вот табличка из документации, по адресу 03H можно получить день недели.
Изображение
Так если дату поменяли например, тогда как? DS-1307 простой счетчик,и не рассчитывает день недели по дате..
Обновил проект
zvonok18_02_13.rar
(403.42 КБ) 235 скачиваний
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Сообщение 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
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение 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
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

Спасибо тоже об этом думал, но пока остановился на алгоритме с Вики.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

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

Вернуться в «AVR»