Страница 1 из 1
LCD, кнопки и заморочка с LED
Добавлено: Чт сен 12, 2019 21:22:17
Sergbern
Всем доброго! Только начинаю писать проги в CVAVR, прошу сильно не пинать и по возможности помочь. Делаю индикацию в усилитель на LCD и mega8. Ещё нужны четыре ячейки с LED и кнопками. Кнопку нажали -- лед загорелся и после отпускания горит ещё секунду. Вместо логики задействую мегу, т.к. лсд её нагрузил совсем немного. Без секундной задержки всё путём. А с ней протеус глючит конкретно. ( В железе не пробовал). Понятно, что для сведующего задача на пол-минуты. Будьте добры, поправьте, что не так. В архиве файлы для протеуса, исходник, хекс.
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 00:35:28
Аlex
А в чём проблема то, собственно ? В том, что глючит Протез ?
Вы же понимаете, что ответ на это будет единственный. Попробуйте догадаться какой

Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 00:51:48
Sergbern
Да, что-то сумбурно получилось. Попробую исправить.
Неправильно написанная прога глючит в протеусе . В архиве есть исходник, в него нужно кое-что добавить, что бы при нажатии S5 светик загорелся и при отпускании горел 1-1,5 секунды, и, разумеется, это не мешало отображению символов на лсд от S1-S4. Без этой строчки "delay..." всё в норме. Корректно вписать задержку "образование не позволяет" , вот и прошу помочь.
Или проблема в симуляторе, а в железе будет путём?
С уважением
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 01:35:35
Аlex
Sergbern писал(а): Попробую исправить.
Не получилось. Весь смысл поста, опять же, пришёл к одному - "Глючит Протез"
Вы бы хоть написали, что-ли, что значит "Глючит".
PS: Кстати, если вся суть темы конкретно по Протезу, то по нему есть отдельная тема. Можно туда все жалобы запостить.
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 03:32:27
Sergbern
Спасибо за внимание! Проблема не в проте, а в программе. Проще испробовать. В архиве же есть всё!
1). Берём ИСХОДНИК, делаем из него хекс, запускаем в проте. Проверяем, всё в норме.То есть:
S1-S4 выдают на лсд символы, S5 зажигает лед, при отпускании -- тут же тухнет. (А мне нужно, чтобы горел ещё секунду.)
2). Берём ИСХОДНИК, делаем из него хекс со строчкой "delay_ms(1000)" (как в тексте ISXOD), и в прот. Если будет путём, значит, прога верна , и прабла у меня.
"что значит "Глючит"." -- ни одна кнопка не работает с хексом с delay_ms(1000).
Как правильно сделать задержку или ещё что, что бы после отпускания S5 лед горел ещё секунду?
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 04:41:13
Черный
Что такое прот? Как S1-S4 выдают символы на элесде? (Наверно LCD но мало ли...)
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 04:56:21
Sergbern
[uquote="Черный",url="/forum/viewtopic.php?p=3699642#p3699642"]Что такое прот? Как S1-S4 выдают символы на элесде? (Наверно LCD но мало ли...)[/uquote]Прот -- протеус. Да, LCD, символы формируются мегой.
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 07:39:03
pcb432
А в чём проблема то, собственно ? В том, что глючит Протез ?
Вы же понимаете, что ответ на это будет единственный. Попробуйте догадаться какой

Намек явный
Собирайте макет и отлаживайте программу в реале.
Лучше этого не будет, макет всегда пригодится и проще разобраться.
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 08:15:07
ПростоНуб
Sergbern, когда на PINB.7 низкий уровень Вы делаете задержку на 1 секунду не только свечения светодиода, а всего цикла опроса кнопок. То есть, для срабатывания любой кнопки ее надо удерживать больше секунды.
Заведите переменную счетчик, а в последних двух if используйте ее. Например, так:
Код: Выделить всё
#define COUNTER_DELAY_MS 1000
uint16_t counter = 0;
...
if( PINB.7 ) {
PORTC.0=1;
counter=1;
}
if ( !PINB.7 && counter ) {
if ( ++counter<COUNTER_DELAY_MS ) {
delay_ms(1);
} else {
PORTC.0=0;
counter=0;
}
}
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 21:01:46
Sergbern
Ответ по существу. Смотрю учебники, куда влепить "uint16_t counter = 0;"
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 21:27:17
ПростоНуб
Sergbern, классически - сразу после
В Вашем случае - куда угодно до первого оператора внутри блока while(1)
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 22:03:22
Sergbern
Ругается!! " Error: C:\cvavr\BIN\megalcd1.c(10): undefined symbol 'uint16_t' "
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 22:05:38
ПростоНуб
Sergbern, в начало, где остальные include, вставьте
#include <stdint.h>
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 13, 2019 22:13:29
Sergbern
Ну просто нет слов! Как доктор прописал.
Премного благодарен и крепко жму руку.
Re: LCD, кнопки и заморочка с LED
Добавлено: Пт сен 20, 2019 23:44:21
Demiurg
В вашем случае мало научиться писать на си, нужно научиться программированию. Язык не важен, важны принципы программирования. Также, нужно понимать, что это ПРОЕКТ. И исходить именно с этой позиции. Для новичка вы рано замахнулись на такой проект.
Поэтому, попунктно:
Проектирование сверху вниз. Устройство - декомпозиция на блоки, модули до атомарности.
Программирование:
Логическое разделение программы на программные блоки, модули. Кнопки отдельно, дисплей отдельно, светодиоды отдельно. Взаимодействие программных модулей. Псевдопараллельная работа программных модулей.
Автоматное программирование. Конечные автоматы.