|
|
  |
ATmega16 + PT2322 + PT2323, Пишем программу в Code Vision AVR... |
|
|
|
Mar 13 2013, 17:10
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894

|
("state machine") - вообще не понимаю! Поправил, все компилируется.
|
|
|
|
|
Mar 13 2013, 17:29
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Дмитрий(846) @ Mar 13 2013, 20:10)  ("state machine") - вообще не понимаю! Так я же вам ссылки дал. Синонимы - "машина состояний", иногда говорят "цифровой автомат". ("state machine") - один из подходов к разработке ПО, в частности, для МК. Допустим, вы разрабатываете кодовый замок, у него есть 10 кнопок от 0 до 9 , и он должен открываться числом 729. (Возьмите бумажку, карандашик и рисуйте): В состояние С1 замок попадает после включения питания. В этом состоянии он ждет нажатия любой из кнопок. Если нажата только одна кнопка, и это "7", то замок переходит в состояние С2, во всех прочих случаях он остается в состоянии С1. В состоянии С2 замок опять ждет нажатия любой из кнопок. Если нажата только одна кнопка, и это "2", то замок переходит в состояние С3, во всех прочих случаях он переходит в состояние С1. В состоянии С3 замок опять ждет нажатия любой из кнопок. Если нажата только одна кнопка, и это "9", то замок переходит в состояние С4, во всех прочих случаях он переходит в состояние С1. В состоянии C4 замок открывается (втягивает защелку) и ждет три секунды, а затем отпускает защелку и переходит в состояние C5. В состоянии С5 замок ждет отпускания всех кнопок (остается в нем, если не все кнопки отпущены). Если же все кнопки отпущены, то замок переходит в состояние С1, после чего все повторяется сначала. Понятно ? Попробуйте сделать такой замок сами, только предусмотрите подавление дребезга от кнопок ... А, вот еще есть книжка Лобанова. Там не совсем про МК, но суть та же: http://lord-n.narod.ru/walla.htmlЛадно, пока Лобанова не читайте, а то запутаетесь ...
|
|
|
|
|
Mar 13 2013, 18:33
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894

|
Честно говоря я уже запутанный.
Я понял что ничего не получиться самостоятельно.
|
|
|
|
|
Mar 13 2013, 18:55
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Дмитрий(846) @ Mar 13 2013, 22:33)  Честно говоря я уже запутанный.
Я понял что ничего не получиться самостоятельно. Нет, наоборот, тут все просто, как песня. Вы просто сходу за слишком сложную задачу взялись. Начните с двух простых задач. Реализуйте в виде цифровых автоматов: -Светофор. Пусть он переключается в каждое следующее состояние по нажатию кнопки. Предусмотрите (обязательно) в том же автомате в виде доп. состояний механизм подавления дребезга -Кодовый замок. Блок-схему алгоритма я набросал выше, но это только набросок. Подойдите к нему творчески. В обоих случаях для отсчета временных интервалов пользуйтесь прерыванием от таймера P.S. А вообще, я вам указал на книги по программированию для МК. Читали ? Смотрели ? Ничего непостижимого там нет, программирование МК доступно даже старшеклассникам
|
|
|
|
|
Mar 13 2013, 19:17
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894

|
Но зачем? Ведь есть уже готовое, осталось только подкорректировать, не без вашего участия. Может давайте поможете мне разобрать код, дополнить его, оптимизировать его работу
Сообщение отредактировал Дмитрий(846) - Mar 13 2013, 21:20
|
|
|
|
|
Mar 13 2013, 22:52
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Дмитрий(846) @ Mar 13 2013, 23:17)  Но зачем? Да нет у меня времени разбираться в чужом коде, тем более, что этот проект - не самый простой проект на свете. В него нужно вникать, и вникать глубоко. Да и разбирательство это мне ни к чему, ничему новому я там не научусь. Ладно. Не хотите учиться - не нужно. Я умываю руки. Проект-то ваш. Вы сами не дотите ничего сделать cамостоятельно, чтобы он заработал, так я должен хотеть ? Вам говоришь, как надо, а вы "но зачем ? ...". Ну, тогда, если вы знаете лучше меня, сами и разбирайтесь ...
|
|
|
|
|
Mar 14 2013, 18:59
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894

|
Цитата(kovigor @ Mar 14 2013, 00:52)  Да нет у меня времени разбираться в чужом коде, тем более, что этот проект - не самый простой проект на свете. В него нужно вникать, и вникать глубоко. Да и разбирательство это мне ни к чему, ничему новому я там не научусь. Ладно. Не хотите учиться - не нужно. Я умываю руки. Проект-то ваш. Вы сами не дотите ничего сделать cамостоятельно, чтобы он заработал, так я должен хотеть ? Вам говоришь, как надо, а вы "но зачем ? ...". Ну, тогда, если вы знаете лучше меня, сами и разбирайтесь ... Помоги разобраться почему ребутиться!
|
|
|
|
|
Mar 15 2013, 17:19
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894

|
Цитата(XVR @ Mar 15 2013, 09:18)  Во первых маловат массив text (и пишут в него из прерывания и основной программы) Во вторых - у вас общение с LCD идет из прерываний и из основного цикла программы - на LCD будет каша С I2C то же самое
А ребутится может из за использования в прерываниях и основной программе всего, чего только можно. А так же из за использования функции sprintf - ей нужен довольно большой стек (насколько я помню) Ох? реально не учел текста + %Vol глюков стало меньше!
|
|
|
|
|
Mar 15 2013, 22:18
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894

|
Подскажите после нажатия кнопки на пульте Power, атмега перезагружается
|
|
|
|
|
Mar 18 2013, 14:19
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894

|
Подскажите значения, не могу рассчитать значения делителей.
if (key_adc <= 3) return KEY_ if ((key_adc >= 50) && (key_adc <= 108)) return KEY_ if ((key_adc >= 130) && (key_adc <= 178)) return KEY_ if ((key_adc >= 180) && (key_adc <= 198)) return KEY_ if ((key_adc >= 200) && (key_adc <= 248)) return KEY_ if ((key_adc >= 248) && (key_adc <= 255)) return KEY_
НА ноге атмеги с плюсом кинул 4,7 кОм а на кнопках последовательно кинул по 1кОм
|
|
|
|
|
Mar 18 2013, 21:18
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894

|
Спасибо за помощь
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 19 2013, 14:21
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 14-09-10
Из: Уфа
Пользователь №: 59 479

|
Как-то уж слишком мудрено у Вас... Предлагаю привести схему к виду, как в приложенном файле, тогда о уровнях напряжения на входе АЦП можно будет просто догадаться, не прибегая даже к закону имени Ома ))))
Эскизы прикрепленных изображений
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|