Свежие обсуждения
Микроконтроллеры

Ликбез по программированию PIC

1 35 99

SAK: Шютка?

Воистину правда.

 

А вот и первый, черновой, вариант графа. Будет над чем поразмыслить. А то, смотрю, в Чемберленовской ветке уже нарисовали. А мы что, хуже?
http://www.pic16.nm.ru/likbez1/graf3_01.gif

Кому что неясно? Прошу задавать вопросы. Честно говоря, я надеялся, что уважаемые участники нарисуют граф сообща. Но вижу, что возникло много неясностей. Поэтому рискну предложить свой черновой вариант для обсуждения.

 

picmaniac, нарисовано красиво! Вопросы конечно есть. Наверное было бы плохо, если бы их не было?
Ну во-первых, что-то этот граф больно смахивает на укрупненный алгоритм. Т. е., если заменить круги квадратами и расположить картинку вертикально, то получится графический алгоритм работы ус-ва. Другими словами, круги, я так понимаю, должны символизировать состояния, а они символизируют действия, т. е. являются частью программы, например, 3 - повторная проверка кнопок, 4 - бегущий огонь, и т. д. А посему, зачем тогда "это" называть таким страшным и отпугивающим словом "граф", уж давайте будем "это" называть просто укрупненным алгоритмом. А дальше, будем его детализировать, т. е. круги превращать в какую-то последовательность команд. Честно говоря, я думал, что граф это нечто другое. Пытался вот тут почитать http://www.intuit.ru/department/algorithms/gaa/ Нихрена не понял. Точнее понял, что это жуть страшная, требующая особого подхода, длительного изучения и еще более длительного осмысления. Там, на этом сайте, кстати несколько курсов по графам. Так, что я в полной растеренности.
Теперь по сути. Если все-таки считать картинку алгоритмом, а не графом, то вот стрелочки с 4 кружка на 3 не обозначены, и с 5 на 3 тоже. Но дело не в этом. Почему после "огня" мы делаем только повторную проверку кнопок? Как это возможно? Вы хотите сказать, что мы должны делать проверку кнопок без задержки? Может это как-то по-другому должно выглядеть?

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

 

Zandy: Я вот, пока суть да дело с основным заданием, накалякал программочку, работающую по алгоритму Vlad_Petrовича, правда с двумя кнопками.
Так вот хочу выложить, так сказать на суд общественности. Пришлось основательно "попотеть". Я там сделал подробные комментарии, думаю спецы разберутся. Если что, дам описание, или нарисую алгоритм.
В симуляторе гонял - работает. Хотелось бы выложить весь проект, но он весит около 100 кбайт. Там у меня и регистры нужные и стимулюсы и пр. Пока выкладываю асм файл. Очень хотелось бы, чтобы посмотрели, зря что-ли старался?! Vlad_Petrович вроде бы обещал, его ведь идея.

 

Пи-ил, пи-ил, а файл-то и забыл выложить.

60823.asm

 

Вопрос про дребезг и помехи прошу повторить. Как-то он, видимо, ускользнул от моего внимания.

Честно говоря, я и сам толком не знаю, как эти самые графы по всем правилам строить. Поэтому нарисовал так, как себе его представляю. Может быть и не по всем "канонам" и "законам жанра". ИМХО всё же лучше так, чем вообще никак. Постепенно будем разбираться далее.

круги, я так понимаю, должны символизировать состояния, а они символизируют действия Я пытался по возможности наглядно сделать. Наверное, состояние 2 и соответствующий кружок лучше будет назвать "выдержка времени 100 мс". Как я различаю для себя состояния и действия? Состояние по моему пониманию может длиться достаточно долго. Положение кнопок мы можем раз за разом проверять хоть до посинения. Выдержка времени тоже не один миг длится. А вот повторная проверка - да, это краткое событие, но оно у нас одно из ключевых, имеет много связей - поэтому выделил его. Ну и бегущий огонь - это тоже достаточно продолжительное состояние. Действие - это непродолжительное событие, происходящее при переходе из одного состояния в другое. Ещё раз скажу - так я понимаю это для себя, могу оказаться не совсем прав, или совсем не прав. Посмотрю в литературе ещё.

вот стрелочки с 4 кружка на 3 не обозначены, и с 5 на 3 тоже Условие перехода в данном случае - просто окончание определённого состояния по времени. Можно написать - истекло время "бегущего огня". Какие действия при этом переходе происходят? Да вроде никаких не вижу.

Коллективный разум рулит! Сообща веселее процесс освоения идёт. И разбираться легче.

А вот и подправленный граф:
http://www.pic16.nm.ru/likbez1/graf3_02.gif


 

picmaniac, а может все-таки того, на начальном этапе без графов? Ну, будем рисовать хороший красивый графический алгоритм. Ну а в дальнейшем перейдем к графам. А то ведь я в этом програмировании вообще ни бум-бум. Ну хоть представление поиметь, что за штука такая, программирование, ну всякие стандартные или часто повторяющиеся процедуры изучить, ну там работу с памятью, с внешними ус-вами и т. д. Просто понимаешь, сейчас зациклимся на графах, время уйдет. Мне бы хоть на уровне ПТУ представление получить. Я трезво мыслю и знаю, что спецом в любом случае не стану, возраст не тот, а немного разбираться в вопросе хотелось бы. Фундаментальное изучение конечно хорошо, и я это всячески приветствую, но сначала хотелось бы просто немного "въехать". Вот Splav56, решил одну задачку и ему хватило. А мне не хватает. Хочется побольше тренинга.
Вон у Чемберленов, посмотрел программку и граф, составленные chav1961, аж жуть берет! Даже написанное и нарисованное не понятно. Одно слово - проффи.

 

OK. По просьбам трудящихся перейдём к написанию ассемблерного кода.
Я когда мотоцикл купил - тоже не до теорий было. Скорее за руль! А потом уже, накатавшись, можно и спокойно к теории вернуться.
Будем писать код по предложенному графу, или иначе?

 

picmaniac: Будем писать код по предложенному графу, или иначе?
Даете добро? Отлично!

 

Да. "Зелёный свет!"

...важно, чтоб устройство правильно работало - если кнопка до 100 мс нажата - не запускать, свыше 100 мс - запускать.
Так я об этом и толкую. Что именно таково желание заказчика, а к подавлению дребезга или помех каких это имеет косвенное отношение, а вопрос дребезга (мозгов ) пока открытый и мы им займемся позже. Так?

Вопрос имелся ввиду этот? Я его, признаться, не совсем понял. Поэтому и попросил повторить более доходчиво.
Проглядел я программу, в 22.11 выложенную. Пока только "по диагонали". Что могу сказать - написано аккуратно, стиль мне понравился. Позже посмотрю подробнее, мне уже интересно.