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

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

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

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

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

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

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

 
Опции темы
Непрочитано 04.08.2007, 23:49  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Так,с переварил все выше описаное , теперь начинает проясняться . Завтра думаю выложу нечто рабочее.
Пинайте , буду благодарен любому замечанию и помощи.
Спасибо...
Реклама:
dosikus вне форума  
Непрочитано 06.08.2007, 20:14  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Вот вроде получилось
отлавливать отпускание кнопки.
Осовной цикл.

Код:
static int8 work;

 static struct key{
int8 count_key;
int8 state;
int8 temp_key;
int8 push_count;
int8 number;
int8 debounce;
int f_real:1;
int f_push:1;
int temp:1;
}key;
// пока для отладки ячейки целиком

//////////////////////////////////////////////////////////////////////////////// 
//      main loop 
//////////////////////////////////////////////////////////////////////////////// 


 void   main(){
    Initialize ();
bit_set(RES);    // иницилизация счетчика клавы
bit_clear(RES);

    while(1){
    indik();
 
     if(key.state›0x80&&key.state‹0xff){
        work=1;// нажата и отпущена кнопка, при обнаружении такого состояния
               // будем сбрасывать key.state  после проверки.
     }
     if(key.state==0xff){
        work=2;// остается нажатой
     }
       indik_eeprom(work);
          
       }
    }
Прерывание.


Код:
#int_RTCC

void RTCC_isr()
{ 


   
//--------------------------------------------------------------
//       key_service (обработка кнопки)
//--------------------------------------------------------------
    int8 temp=0;
  if(key.count_key==10){
    key.count_key=0;
    bit_set(K_RES);//Cброс клавы если счетчик переполнен
    bit_clear(K_RES);
   
    }
   key.f_real=on; 
   if(PORT_D&0x30){      //
        key.f_real=off;
        if(PORT_D&0x20){ // выделяем столбец нажатой кнопки
        temp=10;
        }            
        if(key.count_key==key.temp_key){ //если нажата таже, увелич. счетчик
          key.push_count++;       
        }
          key.number=key.count_key+temp;   //сохраняем номер нажатой кнопки 
          key.temp_key=key.count_key;     //и ее строку.
          if(key.push_count==10){        //счетчик debounce
          key.push_count=0;
          key.f_push=on;
          }
       }
                
    if((key.count_key==key.temp_key)&&key.f_real){ //если номер строки 
        key.f_push=off;                           // сохранненый совпадает, 
        key.push_count=0;                        //но кнопка не нажата
        key.number=0xff;                        // сбрасываем все
    }
        key.state‹‹=1;                   // получаем "осцилограмму"
        key.state+=key.f_push;          //кнопки ,если 0x80 ‹key.state‹0xff
                                       //кнопка нажата и отпущена,если 0xff
                                      //нажата если 0 то не нажата.
                
    bit_set(K_CLK);//Cледующая строка клавы
    bit_clear(K_CLK);
    key.count_key++;  
......
...
..
Прикрепленный файл: 4700491.rar
dosikus вне форума  
Непрочитано 07.08.2007, 16:13  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Не нравится слабая защита - антидребезг. Сыграл на анализе state, игнорируя мелкие значения, согласен. Но здесь надо смотреть в железе и на плохих кнопках. Правда, китайцы нам их поставляют много, так что с ними проблем не будет.
Далее - использование прерывания приводит к тому, что при нажатии кнопки будет дергаться изображение на индикаторах. ИМХО, использовать прерывание нужно тогда, когда без него не обойтись. Возможно, здесь применение прерывания для кнопок оправдано -сильная загрузка контроллера - но алгоритма я не знаю. Но я бы где-то в основном цикле смотрел, не так уж много ресурсов потребляет.
urry вне форума  
Непрочитано 07.08.2007, 19:09  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Сообщение от urry
Не нравится слабая защита - антидребезг. Сыграл на анализе state, игнорируя мелкие значения, согласен. Но здесь надо смотреть в железе и на плохих кнопках. Правда, китайцы нам их поставляют много, так что с ними проблем не будет.
Далее - использование прерывания приводит к тому, что при нажатии кнопки будет дергаться изображение на индикаторах. ИМХО, использовать прерывание нужно тогда, когда без него не обойтись. Возможно, здесь применение прерывания для кнопок оправдано -сильная загрузка контроллера - но алгоритма я не знаю. Но я бы где-то в основном цикле смотрел, не так уж много ресурсов потребляет.
Клава пленочная , вроде работает но пересмотрю одназначно, это тестовый вариант.
В железе уже пашет вовсю .
Я одновреммено в протеусе и ICD отлаживаю.
Основная прога впереди .

В основном цикле кнопки не знаю как сделать .
Придеться постоянно вызывать функцию опроса ?
Еще больший гемморой.Хотя может ты и прав.

Счас еще в прерывание АЦП запихаю на все каналы.
И вопрос , если с 1wire работать , прерывания будут мешать?
Отключать не хотелось бы , часы нужны .
dosikus вне форума  
Непрочитано 07.08.2007, 19:12  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Сообщение от urry
Далее - использование прерывания приводит к тому, что при нажатии кнопки будет дергаться изображение на индикаторах.
Хоть частота обновления и на низшем пределе , подергиваний не наблюдал .
dosikus вне форума  
Непрочитано 07.08.2007, 19:38  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Cтранно, что в железе нет мерцаний - я в протеусе вижу... А с 1-wire все проще - вызывай по отработке секунд - если будет индикатор нервничать - переписать функцию вручную, не использовать библиотечную.
Я как-то переписывал пзу АОНа - использовал платку в своих целях, кстати -многоканальный термометр - то чтобы оно не мерцало, пришлось всталять функцию регенерации очередного символа дисплея везде буквально.

Сегодня в отпуск - ночью в Одессу !!!
urry вне форума  
Непрочитано 07.08.2007, 19:46  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Сообщение от urry
Сегодня в отпуск - ночью в Одессу !!!
Счастливый
dosikus вне форума  
Непрочитано 07.08.2007, 21:55  
DL36
Вид на жительство
 
Регистрация: 06.10.2006
Сообщений: 329
Сказал спасибо: 4
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
DL36 на пути к лучшему
По умолчанию

Сообщение от dosikus
Сообщение от urry
Не нравится слабая защита - антидребезг. Сыграл на анализе state, игнорируя мелкие значения, согласен. Н
Клава пленочная , вроде работает но пересмотрю одназначно, это тестовый вариант.
В железе уже пашет вовсю .
Я одновреммено в протеусе и ICD отлаживаю.
Основная прога впереди .

В основном цикле кнопки не знаю как сделать.
Придеться постоянно вызывать функцию опроса ?
Еще больший гемморой.Хотя может ты и прав.
Почему не использовать rtOS?
Даже на PIC16F628A у меня три задачи великолепно крутятся. Начать надо с jacOS и все проблемы с тем как это сделать в основном цикле опадут как желтые листья. Тем более, что будут еще задачи.
DL36 вне форума  
Непрочитано 07.08.2007, 23:31  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Сообщение от DL36
Почему не использовать rtOS?
Даже на PIC16F628A у меня три задачи великолепно крутятся. Начать надо с jacOS и все проблемы с тем как это сделать в основном цикле опадут как желтые листья. Тем более, что будут еще задачи.
Ссылочку можно? Что то это мимо меня пролетело , а счас
заинтересовался...
dosikus вне форума  
Непрочитано 08.08.2007, 08:25  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

А если останавливать сканирование строк , при
обнаружении нажатой кнопки и начинать обрабатывать дребезг... ????????!!!!!!!!
dosikus вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И снова терморегулятор kolbasnik3 Микроконтроллеры, АЦП, память и т.д 45 17.08.2009 16:54
И снова блютуз! Haulpak Ремонт оргтехники 0 10.03.2009 05:06
[Решено] и снова магниты:-) spilberg Отвлекитесь, эмбеддеры! 5 27.03.2008 15:59
Снова DNA1001 R666 Информация по радиокомпонентам 0 25.01.2008 16:39
И снова температура ua_gruzin Поиск схем. Делимся схемами 0 14.02.2007 01:18


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


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