Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Как программно отследить появление логического нуля на входе /Reset?

Непрочитано 11.01.2014, 02:50  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Как программно отследить появление логического нуля на входе /Reset?

Единственный вариант - выходить из прерывания как положено.
Строить алгоритм в соответствии с этим, исходя из решаемой задачи и параметров быстродействия.
Скажем, в прерывании (при первом входе) запускать таймер, скажем, на 5 мс и по прерыванию от него определять состояние (нажата или отпущена). Это так, навскидку...
Прерывание должно обрабатываться максимально быстро и устанавливать "семафоры" для ветвления программы.
Реклама:
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.

Последний раз редактировалось akegor; 11.01.2014 в 02:53.
akegor вне форума  
Сказали "Спасибо" akegor
Fraktal (11.01.2014)
Непрочитано 11.01.2014, 02:55  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как программно отследить появление логического нуля на входе /Reset?

Сначала вынуть оттуда адрес возврата(2 байта), а потом положить адрес main.
После уже reti.
omercury вне форума  
Сказали "Спасибо" omercury
Fraktal (11.01.2014)
Непрочитано 11.01.2014, 02:58  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Как программно отследить появление логического нуля на входе /Reset?

omercury, похоже на медвежатничество в грубой форме...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
Fraktal (11.01.2014)
Непрочитано 11.01.2014, 03:02  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как программно отследить появление логического нуля на входе /Reset?

Ога, особенно если прерывание произошло не в main.
Посему в прерываниях только флаги. Накрайняк что-то оч срочное.
omercury вне форума  
Сказали "Спасибо" omercury
Fraktal (11.01.2014)
Непрочитано 11.01.2014, 04:42  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Как программно отследить появление логического нуля на входе /Reset?

Сообщение от Fraktal Посмотреть сообщение
В итоге пришел к этому:
Опишите задачу. Что нужно и для чего.
Godzilla82 вне форума  
Непрочитано 11.01.2014, 04:58  
Fraktal
Временная регистрация
 
Регистрация: 21.02.2013
Сообщений: 87
Сказал спасибо: 70
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Fraktal на пути к лучшему
По умолчанию Re: Как программно отследить появление логического нуля на входе /Reset?

Godzilla82, нужно разработать микропроцессорное устройство (ничего серьезного - курсовой проект) на любом микроконтроллере , я выбрал AVR.
которое будет обрабатывать данные и выводить их на индикатор.
Данные представляют из себя уравнение : 3 * AVG + min ,где AVG - это среднее значение в массиве чисел а min - это минимальный элемент массива.
МК-лер должен иметь кнопки пуска/паузы и сброса. Я уже код преподу показал теперь схему переделываю (схемы в протеусе ни катят ) буржуи тут не в авторитете нуна под наши госты.
Препод нормальный ,за не которые косяки по коду в три шкуры не дерет а просто на них указывает. Вот кстати ниже и сама схема с этим кодом.
Миниатюры:
Нажмите на изображение для увеличения
Название: Снимок1.PNG
Просмотров: 52
Размер:	55.4 Кб
ID:	57304  
Fraktal вне форума  
Непрочитано 11.01.2014, 07:34  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Как программно отследить появление логического нуля на входе /Reset?

Сообщение от Fraktal Посмотреть сообщение
Данные представляют из себя уравнение : 3 * AVG + min ,где AVG - это среднее значение в массиве чисел а min - это минимальный элемент массива.
То есть, на входе у нас 3 числа, на выходе - одно число.

Числа вводятся кнопками, как я понял. Или просто ПУСК/СТОП?

Вопрос: зачем здесь прерывания?
Godzilla82 вне форума  
Непрочитано 11.01.2014, 07:42  
Fraktal
Временная регистрация
 
Регистрация: 21.02.2013
Сообщений: 87
Сказал спасибо: 70
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Fraktal на пути к лучшему
По умолчанию Re: Как программно отследить появление логического нуля на входе /Reset?

не это : три умноженное на AVG + min
а так мыслите логически правильно три числа на входе.
"Числа вводятся кнопками, как я понял. Или просто ПУСК/СТОП?"
числа я заношу в массив программно максимальное значение = 255
и одна кнопка выполняет функцию ПУСК/СТОП.
А разве можно без прерывания?
Fraktal вне форума  
Непрочитано 11.01.2014, 09:06  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Как программно отследить появление логического нуля на входе /Reset?

Сообщение от Fraktal Посмотреть сообщение
А разве можно без прерывания?
В вашем случае - нужно.
Я же вам дал рабочий кусок с программным обработчиком дребезга.

PHP код:
void main(void)
{
init();
...
begin:
if(PINA.0 == 0)  {
                 //действия или установка флагов для кнопки на PINA.2
                 start();
                 delay_ms(50);
                 while(PINA.0 == 0);
                 }
delay_ms(50);
goto begin;
} 
при нажатии на кнопку вызовется функция start().

Сделайте сначала старт/стоп. А потом (по хорошему) - чтобы все три элемента массива вводились кнопками.

Четырёх кнопок достаточно. Можно и тремя обойтись.
Godzilla82 вне форума  
Непрочитано 12.01.2014, 00:16  
Fraktal
Временная регистрация
 
Регистрация: 21.02.2013
Сообщений: 87
Сказал спасибо: 70
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Fraktal на пути к лучшему
По умолчанию Re: Как программно отследить появление логического нуля на входе /Reset?

Godzilla82, я пробовал сделать через метку как Вы посоветовали , но что то студия у меня ругается на эти метки и пробовал объявлять как глобальные и как локальные - испробовал разные варианты но что то студии не нравится эти метки. В ассемблере их проще объявить чем в 5-й студии , думал может нужно какой то файл инклудировать чтобы компилятор знал как работать с этими метками все как об стену горох. в делфях и асме с метками работал без проблем тут ни в какую. только понял что в AVR studio5 метка объявляется как :"labs ‹имя метки›". А так Ваше решение оптимально , я как увидел пример подумал как я сразу не догадался.
Fraktal вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49
[Решено] Всем эмбеддерам посвящается... Decan Отвлекитесь, эмбеддеры! 0 24.10.2005 14:43


Часовой пояс GMT +4, время: 23:57.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.