Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 07:45:17

Драсьте! Помогите плиз. Не получается сделать так, чтоб с помощью одной кнопки зажигать\гасить светодиод. Нажал - горит, нажал ещё - погас. Кнопка - PINB.3, светодиод PORTB.4. Пробовал так:
if ((PINB.3==0)&&(PORTB.4=1))
{PORTB.4=0;
delay_ms(200);}
if ((PINB.3==0)&&(PORTB.4=0))
{PORTB.4=1;}

Включает, но не выключает)

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 08:11:37

или так ("==" вместо "="):
Код:
if ((PINB.3==0)&&(PORTB.4==1))
{PORTB.4=0; delay_ms(200);}
else if ((PINB.3==0)&&(PORTB.4==0))
{PORTB.4=1; delay_ms(200);}
или так:
Код:
if(PINB.3==0){PORTB.4 ^= 1; delay_ms(200);}

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 08:41:39

if(PINB.3==0) {
PORTB.4 = ~PINB.4;
delay_ms(200);
}

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 08:45:06

А если даташит очень внимательно почитать...
Код:
if(PINB.3==0) {
PINB.4 = 1;
delay_ms(200);
}

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 08:45:35

PORTB.4 = ~PORTB.4; правильнее :)

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 08:51:31

Engineer_Keen писал(а):А если даташит очень внимательно почитать...
Код:
if(PINB.3==0) {
PINB.4 = 1;
delay_ms(200);
}
спасибо, не знал :-) , по крайне мере в меге8 этого нововведения нет.

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 08:54:30

Это в основном фишка тинек, хотя в 48-88 мегах тоже встречается.

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 08:56:02

Эта фишка новых серий. В классической восьмой нет, в 8А уже есть, если память не изменяет. В 48-88-168 есть во всех.

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 08:57:23

так что в плане переносимости не стоит так делать :)

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 09:12:09

Спасибо за оперативность) Бум пробовать)

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 18:01:13

Код:
#include <tiny13.h>
#include <delay.h>

#define kn_sel PINB.0
#define led PORTB.1

char mod;

void selekt()
  {   
      if (!kn_sel)
      { mod ^=1;
       do { } while(!kn_sel);
       if (mod==1)
              led=1;
         else led=0;
      }     
  }

void main(void)
{
{
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
 
PORTB=0x01;
DDRB=0x06;
}
 //mod=0;

while (1)
  {
    selekt();
  }
}

Re: Attiny13. Проблема с кнопкой.

Пт июн 01, 2012 19:55:24

Даже лень читать всё, что написали. Загляни в датащий по этой микросхеме. В частности на I/O Ports.
Из личного опыта помню, что на порте Б нету аналогового сингала. На него можно вешать кнопки. А вот диоды надо на портА и то, не на все! :dont_know:

Re: Attiny13. Проблема с кнопкой.

Сб июн 02, 2012 21:53:39

Во–первых. Если не ошибаюсь, на любой порт можно и кнопки кидать и диоды подключать. Главное, правильно сконфигурировать)
Во–вторых, чувак, открой даташит. В Tiny13 нет порта А) Если лень читать, то не советуй. Тут не 40 страниц.
Тема закрыта