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

Самый просто способ "поморгать" пинами выглядит как-то так:

#define REL PA0
#define LED0 PA5
#define LED1 PA4

#define DDRA_RESET_VALUE ( (1 << REL) + (1 << LED0) + (1 << LED1) )
#include <avr/io.h>

unsigned int counter = 0;

int main(void)
{
DDRA = DDRA_RESET_VALUE;
PORTA |= (1 << REL) + (1 << LED0);
while(1)
{
counter++;
if (!counter)
{
PINA |= (1 << REL) + (1 << LED0);
}
}
}

Что было сделано
Была создана беззнаковая переменная типа интеджер, 16 бит, максимально значение которой равно 65535
Програма "крутится" в главном цикле, и каждый оборот добавляет к переменной единицу.
Запись counter++; эквивалентна counter = counter + 1;
потом в if происходит проврека условия когда counter == 0
! является логическим отрицанием, которое вернет единицу только в одном случае когда counter равен нулю. Можно было записать иначе

if (counter == 0)
{
}

Главное помнить что сравнение это ==, а = это присвоение значения. В данном случае надо использовать ==

Далее, когда мы попадаем внутрь if мы устанавливаем две еденицы в регистре PINA
Если обратится в DS то там написано что такая операция изменяет значение соотв пина на противоположное, что и дает нам мигание. Впринципе это можно было сделать и несколькими другими способами, но так получается достатоно компактно и без лишних операций.

По поводу частоты мигания. В таком случае она задается коственно, ее можно узнать поделив тактовую частоту МК на количество инструкций в цикле, домножив на количество тактов на операцию. Правда не все операции могут занимать одинаковое количество команд, так что может прийдется считать индивидуально.

Ну а вобще надо делать это с помощью таймера, завтра попробую набросать.

"Найкраще сало то ковбаса." (с)
The following 2 users say Thank You to БендеровецЪ for this post:
  • EDWARD (09-03-2014), 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 Гость(ей)