укажите пожалуйста на ошибки
attiny13
cvavr
язык Cи
pb0 вход
pb1 вход
pb2 выход (0)
pb3 выход (1)
pb4 вход
pb5 вход
к pb0 подключена кнопка;к pb2 и pb3 светодиоды
нужно что бы после нажатия кнопки светодиоды меняли индикацию на противоположную
у меня получилось так:
while (PINB.0==0)
{ if (PORTB.2=0)
{ PORTB.2=1;
PORTB.3=0;
delay_ms (1000)
}
else { PORTB.2=0;
PORTB.3=1;
delay_ms (1000)
};
скомпилировалось,в камень залил,но на кнопку не реагирует и в портах pb2=1;pb3=0
1. yopopolo - 22 Апреля, 2013 - 16:46:23 - перейти к сообщению
2. Роботов - 22 Апреля, 2013 - 23:24:20 - перейти к сообщению
Кнопки как подключены? К плюсу или к минусу? Подтяжка есть?
И потом, у вас бесконечный цикл выполняется пока на входе PB0 держится ноль, как только станет 1 прога из цикла вывалится.
(Добавление)
Может так?
while (1)
{
if(PINB.0==0)
{
PORTB.2=0;
PORTB.3=1;
}
else
{
PORTB.2=1;
PORTB.3=0;
}
}
И потом, у вас бесконечный цикл выполняется пока на входе PB0 держится ноль, как только станет 1 прога из цикла вывалится.
(Добавление)
Может так?
while (1)
{
if(PINB.0==0)
{
PORTB.2=0;
PORTB.3=1;
}
else
{
PORTB.2=1;
PORTB.3=0;
}
}
3. yopopolo - 22 Апреля, 2013 - 23:43:41 - перейти к сообщению
так тож пробовал. и подключал по разному.
заработало,только когда ,при создании проекта указал attiny13a , вместо attiny13.до этого думал что разницы никакой (
заработало,только когда ,при создании проекта указал attiny13a , вместо attiny13.до этого думал что разницы никакой (
4. yopopolo - 23 Апреля, 2013 - 09:14:47 - перейти к сообщению
и еще вопрос:
какой delay_ms можно максимально выставить?
можно ли для увеличения задержки написать две строки подряд с delay_ms? или в таком варианте лучше воткнуть какую нибудь бесполезную функцию между двумя delay?
какой delay_ms можно максимально выставить?
можно ли для увеличения задержки написать две строки подряд с delay_ms? или в таком варианте лучше воткнуть какую нибудь бесполезную функцию между двумя delay?
5. Роботов - 23 Апреля, 2013 - 10:29:17 - перейти к сообщению
yopopolo пишет:
можно ли для увеличения задержки написать две строки подряд с delay_ms?
Можно, хоть десять.

yopopolo пишет:
или в таком варианте лучше воткнуть какую нибудь бесполезную функцию между двумя delay?
Можно delay в цикле использовать.
(Добавление)
На мой взгляд, delay_ms() не очень хорошая функция, пока она работает, МК ничего делать не сможет. Лучше для длительных задержек использовать аппаратный таймер.
6. yopopolo - 23 Апреля, 2013 - 13:17:24 - перейти к сообщению
спасибо за ответы.
программирование МК ,у меня пока в процессе изучения.до аппаратного таймера еще не дошел )) но для общего понимания "delay" пока хватает.
еще вопрос: существует ли функция для реализации данной задачи? или как такое можно сделать?
например две фиксируемые кнопки,каждая подключена к свей ноге МК(PB0 и PB1). и ,допустим, один светодиод подключен,тоже, к своей ноге МК(PB2)
логика кнопок простая: при появлении "1" на кнопке,на светодиод подаём тоже "1".
но! необходимо,чтобы программа реагировала на последнее изменение любой кнопки.
если мы одной кнопкой включили светодиод и она осталась во включенном положении,а потом второй выключили,соответственно программа должна среагировать на команду второй кнопки.и наоборот.
всё познаю,изучением примеров программ.такого еще не встречал.может кто нибудь объяснит?
программирование МК ,у меня пока в процессе изучения.до аппаратного таймера еще не дошел )) но для общего понимания "delay" пока хватает.
еще вопрос: существует ли функция для реализации данной задачи? или как такое можно сделать?
например две фиксируемые кнопки,каждая подключена к свей ноге МК(PB0 и PB1). и ,допустим, один светодиод подключен,тоже, к своей ноге МК(PB2)
логика кнопок простая: при появлении "1" на кнопке,на светодиод подаём тоже "1".
но! необходимо,чтобы программа реагировала на последнее изменение любой кнопки.
если мы одной кнопкой включили светодиод и она осталась во включенном положении,а потом второй выключили,соответственно программа должна среагировать на команду второй кнопки.и наоборот.
всё познаю,изучением примеров программ.такого еще не встречал.может кто нибудь объяснит?
7. Роботов - 23 Апреля, 2013 - 13:56:53 - перейти к сообщению
yopopolo пишет:
логика кнопок простая: при появлении "1" на кнопке,на светодиод подаём тоже "1".
но! необходимо,чтобы программа реагировала на последнее изменение любой кнопки.
если мы одной кнопкой включили светодиод и она осталась во включенном положении,а потом второй выключили,соответственно программа должна среагировать на команду второй кнопки.и наоборот.
но! необходимо,чтобы программа реагировала на последнее изменение любой кнопки.
если мы одной кнопкой включили светодиод и она осталась во включенном положении,а потом второй выключили,соответственно программа должна среагировать на команду второй кнопки.и наоборот.
Вам надо реагировать на передний фронт нажатия кнопки. Удобно делать на внешних прерываниях. Тогда не важно будет, нажата кнопка в данный момент или нет, важен будет только факт момента нажатия.
8. yopopolo - 23 Апреля, 2013 - 14:07:03 - перейти к сообщению
уже сложновато пошло ))
написал в личку
написал в личку