Проэкт под Attiny, "как-бы так начать програмировать"
#7

Ну наверное самое время попытатся считывать какой-нить пин.
Для этих дел у AVR микроконтроллеров есть регистры под названием PINx (PINA, PINB etc). Впринципе читать этот регистр можно в независимости от того сконфигурирован пин как вход или выход, но мы ж хотим таки вход.
Вобщем все те пины, для которых мы записали нули в DDRA регистр отсаются входами. Напомню:
#define DDRA_RESET_VALUE ( (1 << REL) + (1 << LED0) + (1 << LED1) + (0 << ADC_IN3) + (0 << ADC_IN2) + (0 << FAULT) + (0 << DC))
...
DDRA = DDRA_RESET_VALUE;

Далее, для каждого пина сконфигурированого как вход можно включить "слабую подтяжку", записав единице в соотв бит порта PORTA. Например возьмем пин под псевдонимом FAULT (он будет нашим входом на сегодня):
PORTA |= 1<<FAULT //так мы устанавливаем единственный бит в восьмибитно регистре.

Чтение из регистра PINA входа FAULT будет выглядить приблизитено вот так:
Что-то там = PINA & (1 << FAULT) // так мы наложили маску, и нам будет виден только интересующий нас бит

Для удобства делаем заготовку в .h фале:
#define READ_PIN_FAULT PINA & (1 << FAULT)

Читать пин можно по разному, "по полингу", по таймеру, по прирыванию.
В данном случае будет довольно просто вложить это в нашу обработку таймера таким образом:
int main(void)
{
DDRA = DDRA_RESET_VALUE;
PORTA |= (1 << REL) + (1 << LED0) + (1 << FAULT);

TCCR0A = TCCR0A_RESET_VALUE;
TCCR0B = TCCR0B_RESET_VALUE;
TIMSK0 = TIMSK0_RESET_VALUE;

while(1)
{
if (TIMER0_OF())
{
TIMER0_OF_RESET();
if (READ_PIN_FAULT)
PINA |= (1 << REL) + (1 << LED0);
}
}
}

"Найкраще сало то ковбаса." (с)
The following 1 user says Thank You to БендеровецЪ for this post:
  • flipper (03-14-2017)
Ответ


Сообщения в этой теме
Проэкт под Attiny, "как-бы так начать програмировать" - от БендеровецЪ - 07-11-2014, 02:59 AM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от БендеровецЪ - 07-11-2014, 05:03 AM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от БендеровецЪ - 07-11-2014, 07:22 AM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от БендеровецЪ - 07-12-2014, 05:40 AM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от БендеровецЪ - 07-12-2014, 06:33 AM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от begemot - 07-12-2014, 07:16 AM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от БендеровецЪ - 07-12-2014, 06:52 PM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от БендеровецЪ - 11-02-2014, 05:51 PM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от Black_Jack - 03-13-2017, 10:13 AM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от EDWARD - 03-13-2017, 11:01 AM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от goiihik - 03-13-2017, 12:06 PM
RE: Проэкт под Attiny, "как-бы так начать програмировать" - от Black_Jack - 03-14-2017, 02:15 AM

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)