Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.07.2010, 17:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: Прерывания в прерываниях ATmega8
baiderin,
Цитата:
|
while(1)
{
if(!mode) progr_mode();
else
if(!more) progr_more();
else
if (!less) progr_less();
};
|
Вы читать умеете? прерывание, нужно прерывание.
Для бронетанковых войск "Евстегнеев Микроконтролеры AVR семейства MEGA руководство пользователя" стр307 стр 308 глава Внешние прерывания. Прерывания первого и второго типа.
|
|
|
|
06.07.2010, 17:26
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Прерывания в прерываниях ATmega8
Сообщение от baiderin
|
Мал мал перепутал герцы с миллисекундами.
|
Цитата:
|
Опрос кнопок в динамической индикации позволяет избавиться от антидребезговых задержек- что очень хорошо.
|
А еще уменьшить количество потребных пинов под кнопки - например, кнопки последовательно с диодом, и от сегментов индикации на один вход МК. Если индикаторов 4, то 4 кнопки - расход 1 пин. Сложность кода увеличивается на капельку...
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
06.07.2010, 17:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: Прерывания в прерываниях ATmega8
baiderin,
Цитата:
|
Я луше посижу, поковыряюсь в программе, но сделаю сам то, что смогу.
Чего и Вам желаю.
|
Так этож и делаю.
Цитата:
|
Цитата:
|
Просто прерывания в прерываниях- это плохо прогнозируемая вещь.
|
как правильно оформить
void main(void)
{
while (1)
{
if (mode==0){//ВЫБОР РЕЖИМА
delay_ms (50);//выдержка времени 0,05 сек для подавления дребезга
Чтото сюда написать чтоб возникло прерывание
};
}
mode- это та самая злая кнопка.
и мне откровенно начхать что в конечном счете delay будет 55мс. значит дребезга и тем более не замечу.
|
Вы гдето здесь видите прерывани в прерывании. Нужно сделать прерывание по состоянию пина. Я хочу узнать это возможно или нет. Если не возможно то тема закрыта вопрос снят. Если возможно то как.
И мне начхать какие там диоды куда подключаются. Я знаю как это делается.
Мне нужно знать как сделать то о чем спросил и точка.
Последний раз редактировалось 7Fantomas7; 06.07.2010 в 17:33.
|
|
|
|
06.07.2010, 17:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,725
Сказал спасибо: 2,424
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
|
Re: Прерывания в прерываниях ATmega8
Поставьте кнопки на входы внешних прерываний.
|
|
|
|
06.07.2010, 17:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: Прерывания в прерываниях ATmega8
baiderin,
Для водителей бронепоезда, танкистов, водителей броневиков, водителей бронированых мотоциклов, водителей бронированых велосипедов, бронированых самокатов.
Цитата:
|
Поставьте кнопки на входы внешних прерываний.
|
Меня не интерисуют предложения об изменении схемы.
Меня интерисует как правильно оформить
void main(void)
{
while (1)
{
if (mode==0){//ВЫБОР РЕЖИМА
delay_ms (50);//выдержка времени 0,05 сек для подавления дребезга
Чтото сюда написать чтоб возникло прерывание
};
}
mode- это та самая злая кнопка.
Как сделать прерывание по изменению состояния пина.
Если такая конструкция не возможна то и точка тема закрыта.
Если такая конструкция возможна то как ее правильно сделать.
|
|
|
|
06.07.2010, 17:54
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Re: Прерывания в прерываниях ATmega8
Фантомасу, я тебя и здесь достану. Проще самому расписать.
Вот чего я от тебя добивался - посмотри вложение. Нету делеев а задержка есть и можно выставить любую до 255 циклов отработки таймера 0 и опрос кнопок в прерывании. Туда же запихнешь и индикацию свою. А уж обработку кнопок можно и в основном цикле оставить, а можно и функциями сделать, это как соль и перец - по вкусу.
|
|
|
Сказали "Спасибо" Halex07
|
|
|
06.07.2010, 17:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,725
Сказал спасибо: 2,424
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
|
Re: Прерывания в прерываниях ATmega8
Кнопка LESS подключена к пину, который может вызывать внешнее прерывание INT0.
MODE- прерывание не сделать,третья кнопка, если сильно извратиться-то можно.
|
|
|
|
06.07.2010, 18:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,725
Сказал спасибо: 2,424
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
|
Re: Прерывания в прерываниях ATmega8
Ему нужны только прерывания- и ничего больше.
|
|
|
|
06.07.2010, 18:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,725
Сказал спасибо: 2,424
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
|
Re: Прерывания в прерываниях ATmega8
"BUTTON.rar"- любопытно.
|
|
|
|
06.07.2010, 18:15
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Прерывания в прерываниях ATmega8
Я не умею водить бронепоезд, танк и бронированный самокат. Я только еще раз скажу вам, что
Код:
|
void main(void)
{
while (1)
{
if (mode==0){//ВЫБОР РЕЖИМА
delay_ms (50);//выдержка времени 0,05 сек для подавления дребезга
Чтото сюда написать чтоб возникло прерывание
};
} |
вот это принципиально неверно. Если вы проверяете пин и по изменению на нем хотите что-то сделать - ЭТО НЕ ПРЕРЫВАНИЕ. Прерывание не возникает "вот здесь". Оно на то и прерывание, что может возникнуть (прервать работу программы) где и когда угодно.
Хотя, если очень захотеть, можно вызвать прерывание и "вот тут" - например, создать условие для него (выставить флаг" и после этого разрешить это прерывание. Запрещено прерывание INT0, INT0 настроено на спад, линию INT0 перевести в 0, и разрешить INT0.
Но, простите, зачем такой изврат? Не проще ли вызвать нужную процедуру?
__________________
[ жизнь приятна и красива, если выпить литр пива ]
Последний раз редактировалось nml; 06.07.2010 в 18:19.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Прерывания ATMega8
|
7Fantomas7 |
Микроконтроллеры, АЦП, память и т.д |
21 |
03.07.2010 10:41 |
ATMega8 VS USB
|
SkyProc |
Микроконтроллеры, АЦП, память и т.д |
28 |
28.04.2010 17:01 |
Вложенные прерывания HITECH PIC16
|
picavr |
Микроконтроллеры, АЦП, память и т.д |
17 |
07.03.2010 17:39 |
Вход в прерывания для PIC микроконтроллеров
|
dimmich |
Микроконтроллеры, АЦП, память и т.д |
4 |
06.12.2009 17:17 |
Котроллер дисплея на Atmega8
|
kosant |
Микроконтроллеры, АЦП, память и т.д |
24 |
30.11.2009 20:57 |
Часовой пояс GMT +4, время: 18:17.
|
|