Страница 1 из 1
Медленная работа кнопок.
Добавлено: Вс ноя 30, 2008 16:24:57
sachok
Проблема заключается в очень медленой роботе кнопок. Например:
Код: Выделить всё
if (PINC.5==0){c1=(b1++);delay_ms(50);}
if (PINC.4==0){c1=(b1--);delay_ms(50);}
если нажать и удерживать кнопку то изменение параметра происходить 1 раз в 1,5 секунди

Хотелосьбы что бы быстрее это всё происходило. Чип у меня ATmega8, частота 4 МГц. В программирование я ёщо ламер. Что то в глубене души мне подсказивает что нужно использовать таймер для обработки состояния конопок, но я не уверен. Подскажите как ускорить этот процес.
Добавлено: Вс ноя 30, 2008 17:14:15
ARV
ваш участочек кода, что вы показали, никак не может создавать задержку в 1,5 секунды - проблема не в нем! без всяких таймеров прекрасно реализуется работа с кнопками (хотя, если охота извратиться - можно и с таймером не менее успешно сделать все), это факт, так что смотрите, что там у вас до и после этой пары операторов.
Добавлено: Вс ноя 30, 2008 17:21:14
sachok
У меня потом ёщо несколько таких же операторов и всё. Возможно общаю нагрузка процессора. потому как он с задержкой выводит показания термодатчиков. Всего 3 датчика и он поочереди выводит показания
Добавлено: Вс ноя 30, 2008 17:29:45
ARV
sachok писал(а):Возможно общаю нагрузка процессора. потому как он с задержкой выводит показания термодатчиков. Всего 3 датчика и он поочереди выводит показания
ну, возможно - так возможно. сходите к гадалке.
Добавлено: Вс ноя 30, 2008 21:32:25
Aheir
Что за датчики? У многих цифровых время преобразования более 300..500 мс, вот Вам и задержка на трех-то датчиках..
Добавлено: Вс ноя 30, 2008 22:22:50
sachok
Датчики ds18b20 ёщо работает 3 канала ШИМ
Добавлено: Пн дек 01, 2008 00:51:19
Krik99
Код определения состояний кнопок можно сунуть в таймер, только если не используете стандартную либу Code Vision для работы с ds18b20, так как надо будет править код для работы с ds18b20. Можно кнопки повешать на внешние прерывания, тогда всё будет быстро обробатываться.
Добавлено: Пн дек 01, 2008 12:18:37
ARV
да все уже понятно - каждый датчик для замера требует минимум 0,7 секунды, вот втроем они и дают задержку. безе отказа от стандартных библиотечных кодвижных функций, как мне кажется, вряд ли что-то получится... с разрешенными прерываниями, если я не путаю, они не работают, так что обработка кнопок по прерыванию тоже не поможет.
Добавлено: Пн дек 01, 2008 18:15:43
sachok
Понятно. Спасибо за ответы!