Страница 1 из 1

Яркость светодиодов на Tiny2313 и не только

Добавлено: Пн мар 10, 2014 23:45:25
radioPROfan
Здравствуйте Коты! Вот собрал схему на плате беспаячной. Решил изучать программирование контролеров AVR. Все подключил - программатор и все такое, все шьет. Написал первую маргалку

Код: Выделить всё

#include <tiny2313.h>
#include <delay.h>

void main (void)
{

DDRB = 0x01;

    while(1)
    {    
        
        PORTB.0 = 1;
        delay_ms(25);
        PORTB.0 = 0;
        delay_ms(25);
        PORTB.1 = 1;
        delay_ms(25);
        PORTB.1 = 0;
        delay_ms(25);
        PORTB.2 = 1;
        delay_ms(25);
        PORTB.2 = 0;
        delay_ms(25);
        PORTB.3 = 1;
        delay_ms(25);
        PORTB.3 = 0;
        delay_ms(25);
        PORTB.4 = 1;
        delay_ms(25);
        PORTB.4 = 0;
        delay_ms(25);
        PORTB.5 = 1;
        delay_ms(25);
        PORTB.5 = 0;
        delay_ms(25);
        PORTB.6 = 1;
        delay_ms(25);
        PORTB.6 = 0;    
        delay_ms(25); 
        
        PORTB.5 = 1;
        delay_ms(25);
        PORTB.5 = 0;
        delay_ms(25);
        PORTB.4 = 1;
        delay_ms(25);
        PORTB.4 = 0;
        delay_ms(25);
        PORTB.3 = 1;
        delay_ms(25);
        PORTB.3 = 0;
        delay_ms(25);
        PORTB.2 = 1;
        delay_ms(25);
        PORTB.2 = 0;
        delay_ms(25);
        PORTB.1 = 1;
        delay_ms(25);
        PORTB.1 = 0;
        delay_ms(25);  
    }
}

 
на нулевом пине порта B светодиод ярко горит, на всех остальных тускло. Хотя все светодиоды яркие. Может что то в коде надо прописать или как? Заранее спасибо. Сейчас работаю над тем как од уменьшить.

Re: Яркость светодиодов на Tiny2313 и не только

Добавлено: Пн мар 10, 2014 23:48:31
BCluster
А чего бы им ярко гореть :) Им бы вообще гореть не следовало из-за этого:

Код: Выделить всё

DDRB = 0x01;
вы только младший (нулевой) бит на выход настроили

Re: Яркость светодиодов на Tiny2313 и не только

Добавлено: Пн мар 10, 2014 23:49:08
radioPROfan
Вот немного подсказали куда копать. Написал вот это:

Код: Выделить всё

#include <tiny2313.h>
#include <delay.h>

void main (void)
{
char i = 1;
DDRB = 0x01;

    while(1)
    {    
        PORTB = i;
        delay_ms(50);
        i = i << 1;
        delay_ms(50);
            if (i==64)
            {
                 PORTB = i;
                 delay_ms(50);
                 i = i >> 1;
                 delay_ms(50); 
                    
            }
        
    }
}
Но в одну сторону диоды проходят, а когда обратно, зацикливаются на двух последних диодах. И по прежнему горит ярко только один светодиод.

Re: Яркость светодиодов на Tiny2313 и не только

Добавлено: Пн мар 10, 2014 23:51:58
radioPROfan
Поменял на

Код: Выделить всё

DDRB = 0xFF;
все стало отлично. Так правильно?

Re: Яркость светодиодов на Tiny2313 и не только

Добавлено: Пн мар 10, 2014 23:55:16
BCluster
А для того чтобы код уменить, надо отказаться от кодвиженовского представления портов. Оно для таких вещей неудобно. Ну вы уже написали почти правильно.

Код: Выделить всё

for (;;)
{
for (int i = 1; ( i!=(1<<7)); i<<=1)
{
PORTB = i;
delay_ms(25);
PORTB = 0x00;
delay_ms(25);
}

for (int i = (1<<6);  i!=0; i>>=1)
{
PORTB = i;
delay_ms(25);
PORTB = 0x00;
delay_ms(25);
}


}
где-то так

Re: Яркость светодиодов на Tiny2313 и не только

Добавлено: Пн мар 10, 2014 23:56:49
BCluster
radioPROfan писал(а):Поменял на

Код: Выделить всё

DDRB = 0xFF;
все стало отлично. Так правильно?
Да, если все 8 пинов порта надо настроить на выход. В вашем случае используется семь - можно было бы написать 0x7F

Re: Яркость светодиодов на Tiny2313 и не только

Добавлено: Вт мар 11, 2014 00:00:08
radioPROfan
Спасибо. Буду разбираться.
Не посоветуете ли книгу по программировании микроконтролеров для новичков на Си?

Re: Яркость светодиодов на Tiny2313 и не только

Добавлено: Вт мар 11, 2014 00:06:31
BCluster
Если есть базовые знания по Си вообще - то даташит. Смысла в книгах по МК при знании Си - ноль. Если знаний нет, рекомендую озадачится их получением на ПК :)
По Си хороший труд у Богатырева. http://lib.ru/CTOTOR/starterkit.txt
Просто и понятно написано.

На AVR есть переведенные даташиты на гаве. К тому же, AVR вообще простой как три копейки. Успехов в изучении, если что пишите

Re: Яркость светодиодов на Tiny2313 и не только

Добавлено: Вт мар 11, 2014 00:10:52
radioPROfan
Улыбнуло название книги) Спасибо большое. Если что то будет не ясно, буду отписывать в этой теме :beer:

Re: Яркость светодиодов на Tiny2313 и не только

Добавлено: Вт мар 11, 2014 00:14:36
radioPROfan
И последнее на сегодня? А где это русские даташиты нормальные? Забиваю "Гава даташит" ни че нет.

Re: Яркость светодиодов на Tiny2313 и не только

Добавлено: Вт мар 11, 2014 00:18:04
BCluster
:)))
http://www.gaw.ru/html.cgi/txt/ic/Atmel ... /about.htm
где-то тут. Но есть и еще источники вроде