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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 03.08.2011, 22:26  
sdsrem
Почётный гражданин KAZUS.RU
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Как убрать энкодер из цикла

Энкодёр без прерываний, как его можно задействовать только тогда когда он нужен чтоб постоянно не висел в цикле.

Вот функция.

PHP код:
signed char ReadEncoder (void)
  {   
    
encoder = (~PIN_Coder 0x03); 
    if (
sts != encoder)
    {
      switch (
encoder)
      {
      case 
0:
        if (
sts == 2temp --; break;
      case 
1:
        if (
sts == 3temp ++; break;
      case 
2:
        if (
sts == 0temp ++; break;
      case 
3:
        if (
sts == 1temp --; break;
      }
      
sts encoder
    }
    return 
temp
  }

void c_ch (void)
  {   
    if (
ReadEncoder ())
    {
     
FReadEncoder (); out_reg(F);  
    }    
  } 
Это c_ch (); лежит в цикле, ну и соответственно постоянно шлёт значение в синтезатор.
Реклама:
sdsrem вне форума  
Сказали "Спасибо" sdsrem
warel (28.06.2019)
Непрочитано 03.08.2011, 22:35  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Как уибрать энкодёр из цикла

Сделать его на прерываниях и отключать прерывание
niXto вне форума  
Сказали "Спасибо" niXto
warel (28.06.2019)
Непрочитано 03.08.2011, 22:43  
Nfc
Прописка
 
Регистрация: 11.10.2008
Сообщений: 132
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 30 сообщении(ях)
Nfc на пути к лучшему
По умолчанию Re: Как уибрать энкодёр из цикла

Цитата:
Энкодёр без прерываний, как его можно задействовать только тогда когда он нужен чтоб постоянно не висел в цикле.
Добавить в цикл условие его выполнения. Всё.
Nfc вне форума  
Сказали "Спасибо" Nfc
warel (28.06.2019)
Непрочитано 03.08.2011, 22:51  
sdsrem
Почётный гражданин KAZUS.RU
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: Как уибрать энкодёр из цикла

Сообщение от Nfc Посмотреть сообщение
Добавить в цикл условие его выполнения. Всё.
Дык вроде условие там как раз и есть

void c_ch (void)
{
if (ReadEncoder ())
{
F= ReadEncoder (); out_reg(F);
}
}

или надо по другому как то?
при старте ни чего не отправляется но стоит разок отправить и всё понеслось, хотя значение не меняется, просто шлёт одно и тоже.
sdsrem вне форума  
Сказали "Спасибо" sdsrem
warel (28.06.2019)
Непрочитано 04.08.2011, 01:43  
Nfc
Прописка
 
Регистрация: 11.10.2008
Сообщений: 132
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 30 сообщении(ях)
Nfc на пути к лучшему
По умолчанию Re: Как убрать энкодер из цикла

temp обнуляйте.
Либо вот так: ... if (sts != encoder)
{
бла...бла...
sts = encoder;
return temp;} //возвращаем только, если состояние энкодера изменилось.
else return 0; //иначе 0;
} //конец функции.
Nfc вне форума  
Эти 2 пользователя(ей) сказали Спасибо Nfc за это сообщение:
sdsrem (06.08.2011), warel (28.06.2019)
Непрочитано 05.08.2011, 14:52  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
Сообщение Re: Как убрать энкодер из цикла

Сообщение от sdsrem Посмотреть сообщение
Энкодёр без прерываний, как его можно задействовать только тогда когда он нужен.
организовать управляющий бит encoder_enable. Влючать когда необходим энкодер.
Код:
void c_ch (void)
  {   
    if (ReadEncoder ())
    {
      if (encoder_enable==1)
       {
          F= ReadEncoder (); out_reg(F);  
      }    
    }    
  }
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
picavr вне форума  
Эти 2 пользователя(ей) сказали Спасибо picavr за это сообщение:
sdsrem (06.08.2011), warel (28.06.2019)
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено] Как внедрялась АСУ chermnv Отвлекитесь, эмбеддеры! 743 14.02.2010 23:11
[Решено] Третье Послание Человечеству lelkanet Отвлекитесь, эмбеддеры! 201 06.01.2010 00:33
Особенности звучания УМЗЧ с полевыми транзисторами falkonist Аудиотехника 42 22.01.2009 02:05
Подскажите как убрать выбросы на коллекторах тран-ов в ИИП jtlex Источники питания и свет 103 09.01.2008 16:29


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


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