Ви не увійшли.
Коллеги
начинаю делать свои первые шаги.
Простая схема (см. приложение)
есть код
#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>
#define Port_c PORTC
#define RegC0 PC0
int main(void)
{
//initial setting port D (connect button)
DDRD = ~(1 << PD0); //enable input
PORTD |= _BV(PD0);
//initial setting port C (connect led)
DDRC |= _BV(PC0); //on eixt
Port_c &= ~ _BV(PC0);
while(1)
{
if((PIND & _BV(PD0)) == 1)
{
_delay_ms(25); //leveling press button
Port_c ^= (1<<PC0); //led on/off
}
}
}
При нажати лед должне включиться при последующием выключиться
В виртуальной модели (в протеусе) работает, а в физической, лед просто быстро мерцает. Реакция на кнопку- замирает не надолго или вообще никак. На вид все логично, но..., Помогите разобраться где косяк?
Остання редакція MadHorse (2016-12-25 12:46:07)
Неактивний
Первые шаги в чем?
Если в Ардуино, то к чему физика? Она ж, как раз, от физики и отвязывает. Вы же пишете на чистом Си.
Но, если определили RegC0, то какого бэна Вы к нему затем напрямую обращаетесь?
Кнопку Вы жмёте сколько по времени? А цикл за сколько у Вас проскакивает?
Включайте голову в первую очередь.
Неактивний
Первые шаги в чем?
Если в Ардуино, то к чему физика? Она ж, как раз, от физики и отвязывает. Вы же пишете на чистом Си.
Но, если определили RegC0, то какого бэна Вы к нему затем напрямую обращаетесь?
Кнопку Вы жмёте сколько по времени? А цикл за сколько у Вас проскакивает?
Включайте голову в первую очередь.
Вы заголовок читали?
Ардуино Нано это не Ардуино?
по сути как разница как определил я переменную или обращаюсь к пину на прямую, это что влияет на функционал?
Написали глупости и по сути ничего не сказав
Остання редакція MadHorse (2017-02-24 22:07:56)
Неактивний
У вас не хватает <детектора фронтов>, вкратце нужно запоминать предыдущее состояние и не реагировать если оно не изменилось.
тут есть правильный код, посмотрите https://www.arduino.cc/en/Tutorial/Debounce
Неактивний
MadHorse, реальность очень сильно отличается от идеала: в протеусе нет дребезга контактов, нет наводок от соседних проводников, нет паразитных индуктивностей и емкостей, нет нестабильностей питания и т. д. Это конечно все можно добавить для приближения к реальности, но в вашем случае модель идеальна, а реальность - нет.
По сути. Есть такое понятие как "дребезг контактов", подробно описано везде: дядя гугл дает полный комплект информации по данной теме. Пока не освоите данный вопрос - дальнейшая работа с кнопками у вас будет вызывать тяжело вылавливаемые глюки. Именно освоите, а не возьмете первый попавшийся рабочий пример.
Неактивний