Перейти к содержанию

Как описать прерывание в блок-схеме?


Рекомендуемые сообщения

Всех исключительно приветствую!

Пишу программу для МК (AtTiny2313, Си, AtmelStudio 6.2), программа обещает быть достаточно сложной, много if-else, прерывания от таймера-счётчика, внешние прерывания. Я решил составить блок-схему, так как алгоритм такой программы в голове уже не держится. И вот не могу никак найти информацию, а как же описать внешние прерывания и прерывания по переполнению от таймера-счётчика в блок-схеме?

 

P.S. Правильно ли я принял решение рисовать блок-схему вообще?

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Мозг человека устроен так, что не может запоминать более семи или восьми сюжетов при их параллельно- последовательном изложении. Этот эффект известен давно и в фильмах всегда не более шести или около того героев. Поэтому Ваше решение верное.

  Программа в виде блок-схемы и в виде строк описания работы куска схемы в функциональном виде идентичны. 

  Начать нужно со словесного описания алгоритма со всеми мелкими подробностями. 

ДОГОВОР НТП 3.doc

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

Я всегда советую (и, разумеется, сам следую этому совету) начинать от крупного и постепенно нисходить к детальностям. Поэтому не совсем соглашусь с предыдущим оратором

Только что, _VN_ сказал:

Начать нужно со словесного описания алгоритма со всеми мелкими подробностями

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

В общих чертах моё понимание процесса разработки программ я описал в статье: http://www.simple-devices.ru/articles/7-soft/208-2014-05-20-16-40-05

Изменено пользователем ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1 минуту назад, ARV сказал:

Программа на Си для attiny2313 не может быть архисложной. Если вы на этапе проектирования чувствуете, что программа будет сложной - хорошо подумайте: правильно ли вы решили решать задачу?

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

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Ссылка на комментарий
Поделиться на другие сайты

45 минут назад, -=FISHER=- сказал:

Правильно ли я принял решение рисовать блок-схему вообще?

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

6 минут назад, ARV сказал:

Программа на Си для attiny2313 не может быть архисложной.

@ARV , согласитесь, смотря для кого. :)
На первом этапе освоения практически любая задача может казаться архисложной.

По поводу вышесказанного ("исходники с обязательными комментариями") - где-то до сих пор валяется тетрадка тридцатилетней давности с подобными росписями. Тогда еще для МК51 писано было. :) 
На другие так и не перешел. Не было потребности. Но тетрадка - как ностальжи! И все в ней понятно.

Ссылка на комментарий
Поделиться на другие сайты

Только что, mvkarp сказал:

согласитесь, смотря для кого

Заявление о том, что архисложностей не будет, я сделал специально, чтобы исключить сомнения в собственных силах у начинающего. Сложности - да, архисложности - нет. :)

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

54 минуты назад, -=FISHER=- сказал:

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

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

8 минут назад, -=FISHER=- сказал:

мне всегда кажется что у других кода всегда меньше, не смотря на то что задачи зачастую сложнее, всё очень хорошо структурировано и компактно записано. 

Правильно, вы же только начали. Потренируетесь, и ваш код тоже станет компактным. Кроме этого не забывайте про то, что часть когда, иногда большую, можно вынести в отдельные библиотеки. А использование #define повышает читаемость кода в целом. Не надо каждый раз лезть в схему и вспоминать, какой вывод за что отвечает. Также не забывайте оставлять комментарии в коде, по прошествии времени будет гораздо проще разобраться в коде.

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, ARV сказал:

Заявление о том, что архисложностей не будет, я сделал специально, чтобы исключить сомнения в собственных силах у начинающего.

Спасибо! :)

У меня есть заветная мечта, это научиться правилам хорошего тона при написании программы. У меня уже получается решать лёгкие задачи, но их описание на Си выглядит по моему мнению коряво, громоздко и состоит из великого множества if-else... Думаю что Ваш метод нисходящего программирования поможет мне в этом.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Ссылка на комментарий
Поделиться на другие сайты

24 минуты назад, -=FISHER=- сказал:

У меня есть заветная мечта, это научиться правилам хорошего тона при написании программы. У меня уже получается решать лёгкие задачи, но их описание на Си выглядит по моему мнению коряво, громоздко и состоит из великого множества if-else

чем у Вас обусловлен выбор языка программирования для МК Attiny 2313?

Ссылка на комментарий
Поделиться на другие сайты

Только что, ttt222 сказал:

чем у Вас обусловлен выбор языка программирования для МК Attiny 2313?

Наверное тем, что это современный, мощный язык, по которому я уже нашел и освоил определенное количество уроков.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Ссылка на комментарий
Поделиться на другие сайты

@-=FISHER=- , при написании любого кода нужно исходить из некоторых начальных соображений.
Вам нужно быстро написать?
Вам нужно минимизировать объем кода?
Вам нужно получить максимальное быстродействие работы кода?
...

Отсюда и будете решать, как и на чем писать. Будете использовать Си или прямо в ассемблере строчить.
Лично я писал в Асме. Меня по времени никто не гнал, код я хотел получить минимальный и максимально быстродействующий. Потому и просчитывал такты и байты.
К примеру, дай Бог памяти, нужно мне было делать умножение на 10. Как решать? 
Просто! Три сдвига в сторону старшего разряда и два суммирования. Это занимало минимум времени и минимум объема для кода программы. :) Более точных данных теперь не скажу, если в ближайшем времени попадутся на глаза, приведу.

 

 

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, mvkarp сказал:

@-=FISHER=- , при написании любого кода нужно исходить из некоторых начальных соображений.
Вам нужно быстро написать?
Вам нужно минимизировать объем кода?
Вам нужно получить максимальное быстродействие работы кода?
...

Отсюда и будете решать, как и на чем писать.

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

-Ну минимизировать объем кода наверное стремятся все программисты на любом языке, поправьте если ошибаюсь.

-На счёт быстродействия, мне пока нужно добиться хотя бы просто его действия :)

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Ссылка на комментарий
Поделиться на другие сайты

@-=FISHER=-  если для Вас это хобби, и Вы хотите действительно научиться программировать под AVR, как писали об этом, обратите внимание на ассемблер

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

чтобы программы под мк были красивыми и эффективными писать их надо на ассемблере,  где то  используя более высокий абстрактный уровень языка Си, но не писать на нем самом

и относиться к программированию как к решению ребусов и прочих головоломок, ( Вы же от решения их по определению должны испытывать удовольствие) если это не работа

не надо гнаться за быстрым результатом, лучше концентрироваться на глубине знаний получаемых  в процессе работы с мк

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, ttt222 сказал:

чтобы программы под мк были красивыми и эффективными писать их надо на ассемблере, 

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

Ссылка на комментарий
Поделиться на другие сайты

45 минут назад, -=FISHER=- сказал:

У меня есть заветная мечта, это научиться правилам хорошего тона при написании программы. У меня уже получается решать лёгкие задачи, но их описание на Си выглядит по моему мнению коряво, громоздко и состоит из великого множества if-else... Думаю что Ваш метод нисходящего программирования поможет мне в этом.

правила хорошего тона при написании программы это что то субъективное и абстрактное, при оценке эффективности кода надо ориентироваться на математические критерии, которые могут быть выражены числом, например,

время затраченное на добавление функциональности или добавления параметров конфигурации. Нагляднее будет, если по отношению ко времени на написание исходной программы - проценты получатся;

количество багов выгребаемое после условного завершения разработки программы (когда она уже заработала, а потом оказывается что не совсем так как хотелось, или не всегда так как хотелось...)

...

Еще хочется заметить, что любая попытка переписать программу, в каком угодно виде, хоть блоксхема, хоть псевдо код (я предпочитаю) полезна!!!

Вообще, что бы понять насколько эффективна программа (как реализация решения некоторой задачи) надо иметь как минимум две таких реализации разными методами, потому что оценка эффективности не может проводиться без сравнения. Эффективность всегда предполагает ответ на вопрос по сравнению с чем?!!!

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, BARS_ сказал:

Но опять же, непонятно, что в этом случае мешает отказаться от морально и физически устаревших МК AVR.

А какие МК сейчас на "гребне волны"? А мешает отказаться кстати малое количество уроков на русском, например по STM.

Изменено пользователем -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, -=FISHER=- сказал:

А какие МК сейчас на "гребне волны"?

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

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

Ну как минимум те же STM8 имеют гораздо более широкие возможности настройки, чем AVR. Хотя тоже 8 бит. Например, ту же тактовую можно менять на лету прямо из программы и никаких фьюзов. Единственно у STM корпуса недружелюбные для начинающих любителей, мелкие сильно. Зато они дешевле AVR.

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, BARS_ сказал:

Эффективной программа будет и на Си, и на Бейсик

Извините, @BARS_ . Но вот это Ваше выражение и есть чушь!

Об подобном я уже упомянул

 

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, BARS_ сказал:

Ну как минимум те же STM8 имеют гораздо более широкие возможности настройки, чем AVR. Хотя тоже 8 бит. Например, ту же тактовую можно менять на лету прямо из программы и никаких фьюзов. Единственно у STM корпуса недружелюбные для начинающих любителей, мелкие сильно. Зато они дешевле AVR.

А среда разработки для них бесплатная есть? - я не знаю просто, интересно стало!

Я про систему ассемблерных команд, переферия это дело маркетинга, раз производитель ее не добавляет, ститает что не пользуется спросом - не окупится.

Изменено пользователем ruhi

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, BARS_ сказал:

Не смешите. Пока что они худшие.

Товарищи! Я всё больше путаюсь и пугаюсь :D Вы мне предлагаете бросать AVR (а я считай только начал получать первые плоды от их изучения) и скорее бросаться на STM? Или если я освою AVR до некого уровня, перейти потом на STM не составит большого труда?

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, mvkarp сказал:

Но вот это Ваше выражение и есть чушь!

Это с какой радости? Эффективность это что такое? Программа выполняет возложенные на нее задачи и работает стабильно, не используя при этом излишне мощное железо. Эффективна такая программа? Более чем. А на чем она написана, вообще не имеет значение, хот в машинных кодах. Важен результат. Так что мое утверждение далеко не чушь.

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, BARS_ сказал:

А красота им даром не нужна, это не картина

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

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...