реклама на сайте
подробности

 
 
> Структура программы, Вырабатываю хороший стиль программирования
UniBomb
сообщение Mar 18 2009, 11:33
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 148
Регистрация: 26-05-05
Пользователь №: 5 416



Добрый день. Возник у меня вопрос, который терзает моё эго и не даёт спокойно работать. Вопрос заключается в организации программы. В общем вот:

Допустим есть ТЗ: сделать прибор, который должен:

- считывать температуру с датчика по шине TWI
- считывать значение напряжения с АЦП с датчика влажности
- расчитывать значение влажности в общепринятых единицах
- выдать предупреждающие сигналы в случае превышения норм
- показать значения на дисплее

Зада просто и понятна (хоть и высосана из пальца). Реализовал бы всё это дело я так:

Код
#include <io.h>
volatile int counter;
int main()
{
//инициализирую всё и вся

for(;;) //пустой бесконечный цикл
;
}

ISR(SIG_OUTPUT_COMPARE1A)
{
switch(counter)
  {
   case 100: BeginTempConvers(); break; //посылаю запрос для начала считывания температуры
   case 200: GetADCValue(); break; //считываю значение с АЦП
   case 300: ProcessADCValue(); break; //раситываю необходимые значения
   case 400: GetTempValue(); break; //считываю температуру
   case 500: SetAlarm(); break; //проверяю значения и вывожу аварийные сигналы если надо
   case 600: DisplayValues(); break; //вывожу все данные на экран
  };

counter++;
if(counter == 601)
  counter = 0;
}


Так вот вопрос - хорошо ли я делаю? Какие есть ещё способы реализации поставленной задачи. Просто мне почему то кажется, что всю логику работы прибора нехорошо запихивать в таймер...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DpInRock
сообщение Mar 18 2009, 22:25
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Прежде чем применять (или не применять) стиль программирования следует определиться с алгоритмом. Иначе применение (равно как и не применение) стиля - занятие исключительно для развлечения.

Кстати, вполне можн все это дело разместить в прерывании от таймера, если таймер заменить на вочдог на несколько секунд, а в цикле фор зациклить слип.

Вот тогда устройство можно запитывать от батарейки. Уже какая-то польза будет.
В таймере можно запросто размещать то, что ПРОСТО ОБЯЗАНО выполнятся строго регулярно. И если это чт-то не успевает, значит задача не решаема в таком виде.

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

Сообщение отредактировал DpInRock - Mar 18 2009, 22:27


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 19:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01349 секунд с 7
ELECTRONIX ©2004-2016