10.09.2012, 18:55
|
#891
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от papa_n
|
Какие переменные в программе я могу менять из-вне? Например с помощью ком порта?
|
Как это -"из-вне"?
Можно послать байт на Com-порт МК, и если он его примет, то установится флаг RXC.
Сообщение от papa_n
|
И снова здравствуйте!!
А то что то не могу найти ни одного нормального примера)
|
Код:
|
unsigned char RxBuffer[32], RxNext;
#pragma vector=USART0_RXC_vect
__interrupt void UartRxComplete()
{
unsigned char b = UDR1;
RxBuffer[RxNext++]=b;
} |
|
|
|
|
10.09.2012, 19:23
|
#892
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от papa_n
|
Какие переменные в программе я могу менять из-вне?
|
Если речь, по-прежнему, идёт всё о той же программе, составляющей единственную начинку памяти кода меги2560, то никакие - ведь кроме этой программы другого исполняемого кода в м/к нет. С точки зрения функции или модуля, действительно, переменные могут изменяться извне, их необходимо помечать квалификатором volatile, чтобы компилятор знал, что их значения могут меняться неизвестным ему способом. Детали доступны всё в том же источнике - K&R.
__________________
There's always more than one way to skin a cat.
Последний раз редактировалось tempora; 10.09.2012 в 19:26.
|
|
|
|
11.09.2012, 12:21
|
#893
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от tempora
|
Детали доступны всё в том же источнике - K&R.
|
А поподробнее можно? Плизз
|
|
|
|
11.09.2012, 13:00
|
#894
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
__________________
There's always more than one way to skin a cat.
Последний раз редактировалось tempora; 11.09.2012 в 23:07.
|
|
|
Сказали "Спасибо" tempora
|
|
|
19.09.2012, 19:10
|
#895
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Доброго времени суток!!!
Сразу скажу спасибо, уже не раз меня здесь наводили на "дельные" мысли, но пробелы как всегда были и будут))
Так вот!
Подскажите какие идеи будут у Вас для решения такой задачи:
Есть некое устройство, оно работает по программе. При подачи питания, устройство в основном МК, должно спать и пробудится при 5 ти кратном нажатии на кнопку, причем 5 нажатий за 10 секунд, иначе снова спать!
если произошло 5 нажатий МК включает ключ и устройство полноценно работает. А еще надо что бы устройство так же и выключалось при 5 ти нажатиях! Как это отработать с основной программой?
Как бы Вы набросали такой алгоритмик? или кто сталкивался?
Благодарствую заранее
|
|
|
|
19.09.2012, 19:32
|
#896
|
Почётный гражданин KAZUS.RU
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,725
Сказал спасибо: 2,424
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
По первому нажатию просыпается и не спит, ожидая, 10 секунд.
Есоли 5 нажатий небыло, то засыпает.
|
|
|
|
19.09.2012, 20:16
|
#897
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от papa_n
|
Как бы Вы набросали такой алгоритмик? или кто сталкивался?
Благодарствую заранее
|
Алгоритмиком назвать трудно. При первом же изменении состояния пина порта (того, где "нажатия") вылетаете из сна и сбрасываете флаг таймаута. Запускаете таймер на 10 сек. Считаете то, что вы называете "нажатием" и одновременно проверяете флаг таймаута. Если насчитали 5, а флага так и не было, бегом выполнять любые задачи. Таймер сам себя остановит. А поднятый им флаг вас уже не интересует. Если же обнаружили флаг таймаута, - бегом спать. Флаг будет сброшен по пробуждению. По вектору прерывания таймера две процедурки. Остановить таймер навсегда и поднять флаг таймаута.
__________________
С уважением,
Vic / ut1wpr
Последний раз редактировалось ut1wpr; 19.09.2012 в 20:32.
|
|
|
|
19.09.2012, 21:21
|
#898
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от papa_n
|
пробудится при 5 ти кратном нажатии на кнопку, причем 5 нажатий за 10 секунд, иначе снова спать!
|
Условие какое-то нечёткое. Ну, с первым нажатием проснулись. Понятно. Если затем за 10 сек получилось только 4 нажатия - снова спать. И тут же приходит пятое нажатие. Типа, опоздали немного. Нужно ли снова просыпаться и считать это первым нажатием из новой серии нажатий ?
Если так, то перед серией нажатий нужно будет выжидать 10сек на всякий случай для очистки состояния от предыдущих неудачных попыток.
|
|
|
|
19.09.2012, 21:41
|
#899
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Если считать, что условия изложены корректно, то придется помнить время каждого нажатия и подсчитывать скользящую сумму. Но меня тоже одолевают сомнения насчет корректности.
__________________
There's always more than one way to skin a cat.
|
|
|
|
05.10.2012, 17:41
|
#900
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Доброго времени суток
Сделал кнопку в прерывании на 8-10 сек
Кому интересно вот проэкт
между контактов кнопки нужно кандёр я поставил 0,15 мФ
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:24.
|
|