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

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

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

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

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

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

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

 
Опции темы
Непрочитано 11.01.2014, 02:50  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,543
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Как программно отследить появление логического нуля на входе /Reset?

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

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

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

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

Ога, особенно если прерывание произошло не в main.
Посему в прерываниях только флаги. Накрайняк что-то оч срочное.
omercury вне форума  
Сказали "Спасибо" omercury
Fraktal (11.01.2014)
Непрочитано 11.01.2014, 04:42  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,443
Сказал спасибо: 99
Сказали Спасибо 315 раз(а) в 231 сообщении(ях)
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.RU
 
Регистрация: 29.10.2006
Сообщений: 1,443
Сказал спасибо: 99
Сказали Спасибо 315 раз(а) в 231 сообщении(ях)
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.RU
 
Регистрация: 29.10.2006
Сообщений: 1,443
Сказал спасибо: 99
Сказали Спасибо 315 раз(а) в 231 сообщении(ях)
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, время: 20:25.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot