Ну да только это не включить, а именно выключить цифровой вход. Вы ведь используете АНАЛОГОВЫЙ. Для того, чтобы цифровой вход не влиял на показания аналогового и придуманы эти галки.
Потрудились бы взять словарик и перевести- disable это деактивировать.
Аналоговый вход может получать значения от 0 до 255 при 8 битах точности и от 0 до 1024 при 10 битах точности.
А цифровой это 0 и 1 зачем вам это, если вы используете аналоговые сигналы?
Теперь понятно?
Здравствуйте!
Подскажите пожалуйста ,как поправить прошивку где кнопка №1.
при нажатии один раз,
светодиод моргал через паузы 500ms(постояно)
при нажатии второй раз
выключался.
Здесь получилось 8* триггеров* раз on два off но два триггера надо задействовать для моргания.
Есть в протеусе проект.
Спойлер#include <tiny2313.h>
#include <delay.h>
void main(void)
{
PORTA=0x07;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTD=0x3F;
DDRD=0x40;
while (1)
{if (PIND.0==0) // ==== №1 кнопка поворотники (если нажата на корпус то вкл...
{
PORTB ^= 1<<7;
delay_ms(500);
PORTB ^= 1<<7;
delay_ms(500);
PORTB ^= 1<<7;
delay_ms(500);
PORTB ^= 1<<7;
delay_ms(500);
PORTB ^= 1<<7;
delay_ms(500);
PORTB ^= 1<<7;
delay_ms(500);
PORTB ^= 1<<7;
delay_ms(500);
PORTB ^= 1<<7;
delay_ms(500);
PORTB ^= 1<<7;
delay_ms(500);
PORTB ^= 1<<7; //как только дошло до конца выключилось
}
{if (PIND.1==0) // ==== №2кнопка ближний свет
{
PORTB ^= 1<<6; // раз нажали вкл раз нажали выкл
delay_ms(100);
}
Импульс писал(а):Подскажите пожалуйста ,как поправить прошивку где кнопка №1.
опиши потробнее ТЗ, что должно происходить при нажатии каждой кнопки(что загорается, как долго и т.п.)
и желательно выложи схему в виде картинки
код надо полностью переделывать
Как бы не хотелось всю программу переделывать
Не могу пока зделать для кнопки, функцию повтора куска программы-зациклить его.
И простой алгоритм преодаления дребезга.
Т.З.
Вообщем в машине будет !!!
Буду управлять поворотниками,дальним ближним светом фар ,аварийкой ,светом в салоне.
Схемотехника пока ждёт,или реле или п/п(полевики или транзисторы),самый мощный потребитель это HEllA фары передние (не ксенон).
Но если в первую очередь вкл например поворотники ,то пока они не отморгают ни чего другого не вкл(тоже головная проблема).
Тоже самое с аварийкой.
Как сделать чтоб при вкл поворотников или аварийки можно всё другое включать свет фар ?
Не отговаривайте пожалуйста меня даже если в машину не поставлю всё равно урок будет отличный !
Спасибо за содействие!
Последний раз редактировалось Импульс Вт авг 13, 2013 09:28:44, всего редактировалось 1 раз.
выругался на перемеенную
unsigned char flag = 0;------------must declare first in block(долно заявится сначала в блоке)
поставил до главной функции
Спойлер#include <tiny2313.h>
#include <delay.h> unsigned char flag = 0;void main(void)
void main(void)
{
PORTA=0x07;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTD=0x3F;
DDRD=0x40;
не , не хорошая программа получилась, постояно поворотники моргают не реагируя на нажатие кнопок...
Надо переделывать
Последний раз редактировалось Импульс Вт авг 13, 2013 09:37:03, всего редактировалось 2 раза.
а что ты хотел? ты на кнопки ничего не повесил. только ddr задал
нормально опиши чего ты хочешь.
например так: есть 3 кнопки.
кнопка#1: что должно происходить по её нажатию.
кнопка#2: что должно происходить по её нажатию.
и.т.д.
Если возникнут вопросы - посмотрите на мой аватар.
Импульс, выражения внутри программы типа delay_ms(500); - вообще не должно быть.
Заведи таймер на миллисекунду в прерывании, в мейне его обрабатывай и делай анализ клавиатуры.
По изменению режима - выставь счетчик на 500 - и по нему мигай, чем хочется.
urry писал(а):Импульс, выражения внутри программы типа delay_ms(500); - вообще не должно быть.
Заведи таймер на миллисекунду в прерывании, в мейне его обрабатывай и делай анализ клавиатуры.
По изменению режима - выставь счетчик на 500 - и по нему мигай, чем хочется.
эта программа некритична по времени исполнения и задержкам, так что можно обойтись без прерываний и таймеров
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
unalex писал(а):эта программа некритична по времени исполнения и задержкам, так что можно обойтись без прерываний и таймеров
Дело не в критичности, а в проблеме
Как сделать чтоб при вкл поворотников или аварийки можно всё другое включать свет фар ?
, которую человек не может решить. И понятно почему - он глупо зацикливает программу на длительное время, когда в это время, процессор может заниматься другими более нужными делами.
Как вариант - распараллеливать процессы, а все задержки считать в прерывании таймера, с установкой соответствующих флагов.
А что разве совать в макрос переменную это хороший тон?
Как же будет работать ваш код? Чувствую ничего из этого не получится.
И ваша функция обновления не более чем фикция.
Для использования вашего макроса нужно будет писать CALLFUNCY(2) вместо y2() в чем выгода?
urry писал(а):Угу. Я специально не написал код, чтобы человек сам разобрался.
Тема - многозадачные процессы - ему еще понадобится. Пусть помучится пока.
А как лучше будет тайммер настроить, на прерывание или переполнение .
Думаю что таймер будет крутить бесконечный цикл поворотников и аварийки,тем самым не нагромождая процессор.
Но поворотники и аварийка раздельно должны включатся и не мешать другим кнопкам вкл.(свет фар ,салона,габаритов).
Прерыванием по переполнению.
Очень легко считать требуемое значение таймера
Например, на вход 1 таймера поступает 8 мег, нужно снять с него 1 килогерц (1 мс период)
vitalik_1984 писал(а):
А что разве совать в макрос переменную это хороший тон?
Как же будет работать ваш код? Чувствую ничего из этого не получится.
И ваша функция обновления не более чем фикция.
Для использования вашего макроса нужно будет писать CALLFUNCY(2) вместо y2() в чем выгода?
1 нормальный тон
2 будет работать, не чувствуйте, а проверяйте
3 аргументируйте, в чем фикция
3 посмотрите код на предыдущей странице, вся эта простыня заменяется двумя строчками, которые я написал
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...