Например TDA7294

Форум РадиоКот • Просмотр темы - концепция программы системы управления
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб сен 20, 2025 13:07:47

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 19:16:33 
Встал на лапы

Зарегистрирован: Ср фев 05, 2014 18:54:39
Сообщений: 118
Рейтинг сообщения: 0
здравствуйте, вообщем я человек молодой, неопытный, самоучка, если кто подкинет мне статью и подскажет как и что буду очень благодарен, интересует след концепция:
у меня есть дисплей, есть клавиатура, и есть некое устройство с n кол-вом плат. Мне надо написать систему управления данным устройством ( CAN интерфейс ), скажем так, на данном этапе я освоил сам интерфейс (уже связал 2 платы, разобрался с идентификаторами, данными), написал свой API для работы с дисплеем, с CAN шиной, с клавиатуров. Интересует следующее -
у меня есть функция, которая возвращает в глобальную переменную код символа нажатой клавиши, или код отсутсвия нажатия.
У меня есть таймер, который каждую 1мс генерирует прерывание, в теле этого прекрывания я вызываю эту функцию т.е. каждую 1 мс я переписываю содержимое кода клавиши. Какой вид всё это будет иметь?

я вижу это примерно так:
Код:
unsigned char key=0xff; // глобальная переменная с кодом клавишы 0xff - отсутсвие нажатия клавишы
interrup timer
{
code_keys();   // здесь я вызываю функцию сканирования клавиатуры
}

int main()
{
initialization(); // допусти тут инициализация всякой перефирии итп
// отсюда я начинаю выводить на дисплей меню и соответвенно обрабатывать нажатия клавиш
// как я это представляю себе
 while(1)
{
switch(key)
{
case 1:
// вызов менюшки 1 - графика + новые реакции на нажатия клавиш - т.е.  аналогичная данной конструкции, т.е. while содержит // такой же switch итж
break
case 2:
// вызов менюшки 2
break;
key=0xff;  // по идее я должен обнулять здесь нажатие клавиши и точно так же должен его обнулять при каждом вызове функции // сканирвоания клавишы...
}
}
}


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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 19:21:06 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
уточните: на кой ляд раз миллион раз в секунду определять код клавиши, если клавишу по определению нажимать может человек, который даже если он Брюс Ли и Джеки Чан в одном флаконе не сумеет нажать кнопку чаще, чем 100 раз в секунду?!

и еще, чисто из опыта: вы почему-то присвоили отсутствию нажатия ненулевой код... не смотря на то, что программе все равно, для человека 0 - это аналог отсутствия чего-либо. советую при написании программы, а тем более при обдумывании ее концепции, придерживаться традиционной человеческой логики - тогда и проблем с переделками с нуля будет меньше навеняка.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 19:28:57 
Встал на лапы

Зарегистрирован: Ср фев 05, 2014 18:54:39
Сообщений: 118
Рейтинг сообщения: 0
ARV писал(а):
уточните: на кой ляд раз миллион раз в секунду определять код клавиши, если клавишу по определению нажимать может человек, который даже если он Брюс Ли и Джеки Чан в одном флаконе не сумеет нажать кнопку чаще, чем 100 раз в секунду?!

и еще, чисто из опыта: вы почему-то присвоили отсутствию нажатия ненулевой код... не смотря на то, что программе все равно, для человека 0 - это аналог отсутствия чего-либо. советую при написании программы, а тем более при обдумывании ее концепции, придерживаться традиционной человеческой логики - тогда и проблем с переделками с нуля будет меньше навеняка.

вот об этом я и говорю, я не знаю как лучше делать)

допустим буду я это делать каждые 200мс, а в обработчике буду просто counter++ какой-нибудь считать до 200 - нормально?

про отсутсвие нажатия и 0 - там это связанно с аппаратным подключением мк к клавишам и опросом клавиатуры, вообщем так сделать проще и так уже было сделано до меня, и в др устройствах сделано у нас так же, поэтому тут лучше оставить, сам опрос я поменял - добавил проверок и т.п.


Последний раз редактировалось jazz393 Пт апр 18, 2014 19:33:31, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 19:33:16 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
чтобы мои ответы не были пустословием, мне недостаточно информации о том, какую конечную цель вы хотите достичь - это раз.
неизвестно, как и на какой элементной базе вы построили схемотехнику: что за клава, сколько кнопок, как она подключена к МК и т.п. - это два

это минимум вопросов, без ответов на которые все советы будут пустым звуком.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 19:35:18 
Вымогатель припоя
Аватар пользователя

Карма: -2
Рейтинг сообщений: 105
Зарегистрирован: Ср июн 19, 2013 08:10:48
Сообщений: 577
Откуда: Москва, СПб, Липецк, Рязань
Рейтинг сообщения: 0
ARV, #define NULL 57

;)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 19:45:27 
Встал на лапы

Зарегистрирован: Ср фев 05, 2014 18:54:39
Сообщений: 118
Рейтинг сообщения: 0
ARV писал(а):
чтобы мои ответы не были пустословием, мне недостаточно информации о том, какую конечную цель вы хотите достичь - это раз.
неизвестно, как и на какой элементной базе вы построили схемотехнику: что за клава, сколько кнопок, как она подключена к МК и т.п. - это два
это минимум вопросов, без ответов на которые все советы будут пустым звуком.

а зачем эта инфа? у меня есть рабочий опрос клавиш, который выдает мне код , опрос сделан как-то хитро - код клавишы обязательно содержит 6 единиц, что собственно я и проверяю.
Какая там клава - беспонятия, работает и слава богу. Мк - at90can128 16MHz - врядли вам это что-то даст..
..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 19:52:00 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
jazz393 писал(а):
а зачем эта инфа?

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

и вообще, все решения зависят от условия задачи.

с вашим МК я работал, кстати. и с клавой тоже :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 20:12:55 
Встал на лапы

Зарегистрирован: Ср фев 05, 2014 18:54:39
Сообщений: 118
Рейтинг сообщения: 0
ARV писал(а):
да хотя бы затем, что лично мне обращаться к функции опроса клавиатуры в прерывнии по таймеру, да еще миллион раз в секунду, никогда бы и в голову не пришло даже с перепою! но вы почему-то так сделали - я хочу знать вашу мотивацию. я ведь не исключаю, что теоретически такое может быть необходимо... ща я начну вам рассказывать, как надо работать с клавой и заведу вас в тупик...

я не знаю как лучше и почему, с этой целью я и создал данную тему...
и источников которые бы адекватно описывали данную информацию я тоже не имею


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 20:14:36 
Вымогатель припоя
Аватар пользователя

Карма: -2
Рейтинг сообщений: 105
Зарегистрирован: Ср июн 19, 2013 08:10:48
Сообщений: 577
Откуда: Москва, СПб, Липецк, Рязань
Рейтинг сообщения: 0
Прям как у меня на работе: Сделайте мне что-нибудь, не знаю что...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 21:02:39 
Встал на лапы

Зарегистрирован: Ср фев 05, 2014 18:54:39
Сообщений: 118
Рейтинг сообщения: 0
ИС-пытатель писал(а):
Прям как у меня на работе: Сделайте мне что-нибудь, не знаю что...

ну простите что я пытаюсь разобраться, чтобы не быть быдлокодером)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Пт апр 18, 2014 22:31:34 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
вот лично я из множества реализованных проектов задействовал прерывания для клавиатуры буквально в одном или двух случаях, во всех остальных все делал исключительно методом поллинга, сиречь опроса.

если ваша функция опроса возвращает код нажатых кнопок - почему бы вым не использовать ее именно для опроса? почему хотите сунуть ее в прерывания?
Код:
static uint8_t get_key(void);

int main(void){
   initialization();
   while(1){
      switch(get_key()){
      case K_NONE: break;
      case K_ENTER : // что-то там
      }
   }
}
чем плох этот подход в вашем случае?

далее, пусть ваша функция возвращает 0xFF, если кнопки не нажаты. могу ли я предположить, что если нажать какую-то кнпку, придет один или несколько нулевых битов в возвращаемом значении? т.е. у вас как бы инверсное кодирование кодов. ну и скажите, где логика: не нажато (т.е. ничего нет) - НЕ НОЛЬ, нажато (т.е. что-то есть) - выдаем НУЛИ... разве человек привык про пустой карман говорить - в нем лежит много пустоты, а про полный - в нем лежит не много пустоты? это ведь не по-человечески! кто мешает вам в вашей функции вместо return keykode; сделать return ~keykode; и получить коды кнопок в соответствии с логикой человека: 0 если не нажато, не ноль - если нажато?

далее, обработка меню (заметил в вашем коде). меню - это не совсем основной режим, поэтому обработку перемещений по меню я никогда не делаю в основном цикле - выношу это в отдельную функцию:
Код:
static uint8_t get_key(void);
static uint8_t do_menu(void);

int main(void){
   initialization();
   while(1){
      switch(get_key()){
      case K_NONE: break;
      case K_ENTER : // что-то там
                            break;
      case K_MENU: switch(do_menu()){
                                case MNU_HELP: do_help(); break;
                                case MNU_MODE1: set_mode(1); break;
                                case MNU_PWR_OFF: sleep();
                            }
                            break;
      }
   }
}
как-то так для начала...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: концепция программы системы управления
СообщениеДобавлено: Сб апр 19, 2014 23:51:43 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 12
Зарегистрирован: Пт дек 07, 2007 11:17:40
Сообщений: 134
Откуда: г. Екатеринбург
Рейтинг сообщения: 0
Ну, если действительно серьёзно и на долго хотите освоить комплексный подход к проектированию программной части такой системы, то нужно двигаться в сторону работы с сообщениями. Пример организации меню, основанного на сообщениях можно посмотреть тут: Организация древовидного меню. Также автор недавно выложил исходники в этой теме: PinBoard и древовидное меню.

Смысл в том, что при объединении многих частей в систему, нужно как-то единообразно и одновременно со всем этим хозяйством общаться. Для этих целей используются операционные системы, но их трудно применить, когда точно сам не знаешь что нужно или нет большого опыта в этой части. Поэтому можно сделать упрощённую модель ОС, основанную на сообщениях и менеджере сообщений, который доставляет их куда нужно.

Чтобы понять концепцию, нужно загрузить исходник в Proteus, поставить везде точки останова и изучать работу алгоритма. Скажу ещё, что я лично этот код не пробовал, я просто на него взглянул по-диагонали. Для себя я написал похожий код, но он выглядит куда сложнее и на C++.

_________________
Россия навсегда!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 56


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y