Тини13 трудно спалить порты 2,5в на выходе !!!!

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
artmasterpro
Прорезались зубы
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Тини13 трудно спалить порты 2,5в на выходе !!!!

Сообщение artmasterpro »

есть некое устройство на Attiny13 плавно зажигающее светодиоды по очереди. схему прикрепляю.
shema.jpg
(179.53 КБ) 477 скачиваний


Как видно из схемы только 1 красный светодиод включен через резистор, а остальные без резисторов.

Проблема в том что изначально светодиоды горели ярко, но потом (после очередного запуска) стали гореть ели ели заметно.
при питании 3-4В напряжение на выводах порта составляет 2,5В. При этом ШИМ работает и светодиоды плавно загораются (но не ярко).

Уважаемые гуру скажите в чём дело ????
Если включил светодиоды без резисторов и спалил порты, тогда они или должны постоянно гореть или не гореть, НО они управляются программным ШИМом. т.е. получается порты целые ?
И как так выходит что порт на котором изначально светодиод был с резистором сейчас тоже тускло горит ????
Пробовал заливать другую программу PORTB.4=1; - всеровно тускло светиться !!!

Прилагаю текст программы:

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


#include <tiny13.h>
#include <delay.h>
#include <sleep.h>
             

// Declare your global variables here
            unsigned char i,j,k;
           
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{     
delay_ms(10);

  if (k==1) {
    k=0;

    }
  else
   {
   k=1;
 
    }
 
}           
           
           
void main(void)
{

GIMSK=0b01000000;
MCUCR=0b00000000;
GIFR=0b00000000;

DDRB=0b0000000;
PORTB=0;

// Global enable interrupts
#asm("sei")
         k=1; 
                         
while (1)     
 {

    if (k==0)
    {            PORTB=0;   
     sleep_enable();
     // powerdown ();
     #asm ("sleep");
    }
    else
    {   //      PORTB.0=0;       
      sleep_disable();
    }


            for(i=0; i<=60; i++)
          {   
         
                PORTB.0=1;
                 PORTB.4=0;
                       j=60-i;
            while (1<=j)
           {  j=j-1;;
             delay_us(80);
           }   
                 PORTB.0=0;
                  PORTB.4=1;
               j=0;
           while (j<=i)

           {       j=j+1;
             delay_us(80);
           }
           
           
          }       
             delay_ms(600);
   
             
               for(i=0; i<=60; i++)
          {   
         
                PORTB.4=1;
                 PORTB.2=0;
                       j=60-i;
            while (1<=j)
           {  j=j-1;;
             delay_us(80);
           }   
                 PORTB.4=0;
                  PORTB.2=1;
               j=0;
           while (j<=i)

           {       j=j+1;
             delay_us(80);
           }
           
           
          }       
             delay_ms(800);
       
              for(i=0; i<=60; i++)
          {   
         
                PORTB.2=1;
                 PORTB.3=0;
                       j=60-i;
            while (1<=j)
           {  j=j-1;;
             delay_us(80);
           }   
                 PORTB.2=0;
                  PORTB.3=1;
               j=0;
           while (j<=i)

           {       j=j+1;
             delay_us(80);
           }
           
           
          }       
             delay_ms(800);
           
             
                                for(i=0; i<=60; i++)
          {   
         
                PORTB.3=1;
                 PORTB.0=0;
                       j=60-i;
            while (1<=j)
           {  j=j-1;;
             delay_us(80);
           }   
                 PORTB.3=0;
                  PORTB.0=1;
               j=0;
           while (j<=i)

           {       j=j+1;
             delay_us(80);
           }
           
           
          }       
             delay_ms(800);   
               };
 }

Главная заповедь электронщика:- Не крути две ручки сразу
Saadov
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Вт авг 19, 2008 23:39:59
Откуда: г.Смоленск

Re: Тини13 трудно спалить порты 2,5в на выходе !!!!

Сообщение Saadov »

artmasterpro писал(а):Уважаемые гуру скажите в чём дело ????
Если включил светодиоды без резисторов и спалил порты, тогда они или должны постоянно гореть или не гореть, НО они управляются программным ШИМом. т.е. получается порты целые ?
И как так выходит что порт на котором изначально светодиод был с резистором сейчас тоже тускло горит ????


Тьфу пока писал увидел! У вас как порт сконфигурирован?? На вход??!!
по идее для вашей схемы должно быть так

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

// Input/Output Ports initialization
// Port B initialization
// Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x3F;
Аватара пользователя
artmasterpro
Прорезались зубы
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Re: Тини13 трудно спалить порты 2,5в на выходе !!!!

Сообщение artmasterpro »

Блин чувак ты Гуру !

Согласен затупил нереально !

Все загорелось ка нужно !

Вопрос номер 2.

По нажатию кнопки МК должен впадать в sleep и по внешнему прерыванию INT0 той же кнопки должен выходить из sleep;

Так вот sleep вроде работает, но как побороть дребезг контактов на INT0 ?? тут не спасешься конденсатором ?
Главная заповедь электронщика:- Не крути две ручки сразу
Аватара пользователя
Fasterpast
Мучитель микросхем
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва
Контактная информация:

Re: Тини13 трудно спалить порты 2,5в на выходе !!!!

Сообщение Fasterpast »

Кнопки в прерываниях - вообще вещь такая... Вроде бы кроме большой задержки пока больше ничего не придумали...
Saadov
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Вт авг 19, 2008 23:39:59
Откуда: г.Смоленск

Re: Тини13 трудно спалить порты 2,5в на выходе !!!!

Сообщение Saadov »

artmasterpro писал(а):Так вот sleep вроде работает, но как побороть дребезг контактов на INT0 ?? тут не спасешься конденсатором ?

Помимо внешней объвязки, сбрасывайте флаг этого прерывания в самом прерывании на всякий случай. Хотя если прерывание очень короткое, не сильно поможет, но как вариант имеет место быть.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Тини13 трудно спалить порты 2,5в на выходе !!!!

Сообщение GP1 »

Fasterpast писал(а):Кнопки в прерываниях - вообще вещь такая... Вроде бы кроме большой задержки пока больше ничего не придумали...

кнопки в прерываниях - это как раз то что надо, чтобы проц не простаивал а занимался делом.
Чем дальше, тем больше становлюсь занудой...
Изображение
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»