Jump to content

brusel

Members
  • Posts

    5
  • Joined

  • Last visited

Электроника

  • Стаж в электронике
    Не связан с электроникой

brusel's Achievements

Newbie

Newbie (1/14)

  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

-1

Reputation

  1. может и не мое... и нахера такое советовать. Я и без вас знаю что мое, что не мое. Мне этот проект нада на один раз. Не хочешь помогать - лучше промолчи. одновременно нажмают "Старт" и "Стоп"  только дебилы, я для их обработчик этого события писать не буду? Вопрос к BARS. Помоги с таймером. мне некогда сейчас читать книжки, нада запускать станок.
  2. Пришлось добавить еще одну кнопку "СТОП". Код ниже. Прошил тиньку, на макетке вроде работает, пауза 8 сек. #define F_CPU 1200000UL #define OUT PB2 #define OUT10 PB0 #define BUT_Start PB4 #define BUT_Stop PB3 #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> // Обработчик прерывания PCINT0 ISR(PCINT0_vect) { _delay_ms (60); // антидребезг (использовать задержки в прерываниях некошерно, но пока и так сойдёт) if ((PINB & (1<<BUT_Stop)) == 0) // если нажата кнопка { PORTB &= ~((1<<OUT)|(1<<OUT10)); //выкл. } } int main(void) { // Пины кнопок DDRB &= ~((1<<BUT_Start)|(1<<BUT_Stop)); // входы PORTB |= (1<<BUT_Start)|(1<<BUT_Stop); // подтянуты // Пин светодиода DDRB |= (1<<OUT)|(1<<OUT10); // выход PORTB &= ~((1<<OUT)|(1<<OUT10)); // выключен GIMSK |= (1<<PCIE); // Разрешаем внешние прерывания PCINT0. PCMSK |= (1<<BUT_Stop); // Разрешаем по маске прерывания на ногах кнопки sei(); // Разрешаем прерывания глобально while (1) { _delay_ms (60); // антидребезг if ( (PINB & (1<<BUT_Start)) == 0 ) // если нажата кнопка { PORTB |= ((1<<OUT)|(1<<OUT10)); //вкл _delay_ms (8000); // пауза } PORTB &= ~(1<<OUT10); //выкл } } Что нужно: кнопка "Стар"т сразу включает 2 реле, одно из которых отключается через 8-10 сек. Второе остается включено пока не нажата кнопка "Стоп". Если кто-то подскажет как улучшить код, чтобы не было сбоев, буду очень благодарен.
  3. Привет, помогите сделать так, чтобы по нажатию кнопки на несколько секунд появлялся высокий уровень на выходах LED и OUT. #define F_CPU 1200000UL #define OUT PB2 #define LED PB0 #define BUTTON1 PB4 #include <avr/io.h> #include <util/delay.h> int main(void) { // Пины кнопок DDRB &= ~((1<<BUTTON1)); // входы PORTB |= (1<<BUTTON1); // подтянуты // Пин светодиода DDRB |= (1<<LED)|(1<<OUT); // выход PORTB &= ~((1<<LED)|(1<<OUT)); // выключен while (1) { _delay_ms (50); // антидребезг if ( (PINB & (1<<BUTTON1)) == 0 ) // если нажата кнопка { PORTB |= ((1<<OUT)|(1<<LED)); //вкл } _delay_ms (1000); // пауза PORTB &= ~((1<<OUT)|(1<<LED)); //выкл } }
×
×
  • Create New...