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

Порты ввода и вывода

Добавлено: Пт мар 14, 2014 08:26:05
kotriks
Народ обясните почему так, делаю по таймеру включение портов чтобы подключить бт модуль чтобы он включался всё включается порт мерю напряжение выдаёт как и на акуме 3.9в при подключении модуля напряжение падает до 2.2в в чём может быть проблема?

вот код как делал

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

#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <string.h>
#include <string.h>
#include <util/delay.h>

volatile unsigned char  hours,minutes,seconds; 
volatile unsigned int time; 

#define PORT 6
#define PORT_ON PORTB|=1<<PORT
#define PORT_OFF PORTB&=~(1<<PORT)

ISR(TIMER0_OVF_vect) {

time++;

   if (time==488)     {asm("wdr");time=0;seconds++;}
   if (seconds==60)   {seconds=0; minutes++;  }
   if (minutes==60)   {minutes=0; hours++;    }

}


ISR(TIMER1_OVF_vect) {
   if(minutes==01){
PORT_ON;
}
   if(minutes==02){
PORT_OFF;
}
   if(minutes==03){
PORT_ON;
}
   if(minutes==04){
PORT_OFF;
   } 
}   

int main(void)
{
// Input/Output Ports initialization
PORTB=0xFF;
DDRB=0x00;

// Port C initialization
PORTC=0xFF;
DDRC=0x00;

// Port D initialization
PORTD=0xFF;
DDRD=0x00;

DDRB|=(1<<6); PORT_OFF;


// External Interrupt(s) initialization
// INT0: On
EICRA=0x00;
EIMSK=0x00;
EIFR=0x00;
PCICR=0x00;


// Clock value: 31.250 kHz
TCCR0A=0x00;
TCCR0B=0x02;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
TCCR1A=0x00;
TCCR1B=0x02;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
ASSR=0x00;
TCCR2A=0x00;
TCCR2B=0x00;
TCNT2=0x00;
OCR2A=0x00;
OCR2B=0x00;


 // Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x01;
// Timer/Counter 1 Interrupt(s) initialization
TIMSK1=0x01;
// Timer/Counter 2 Interrupt(s) initialization
TIMSK2=0x00;

UCSR0A=0x00;
UCSR0B=0x00;
UCSR0C=0x00;
UBRR0H=0x00;
UBRR0L=0x00;


// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;

sei();

  while (1){ 	 
  }
}



Re: Порты ввода и вывода

Добавлено: Пт мар 14, 2014 09:24:50
ИС-пытатель
так проблема скорее всего не в программе, а в источнике питания. ;) Скорее всего он у Вас либо очень слабый (мощная нагрузка для него), либо разряжен. Попробуйте запитать от блока питания и посмотрите результаты. Это первое.
порты имеют определенную максимальную нагрузку по току. (смотрите в даташите) причем для разных портов и разных ног одного порта она может отличаться. обычно это не более 40 мА. При этом учитывайте, что ток через вывод Vcc контроллера также не должен быть больше определенного значения. (обычно 100мА для Tiny и 200мА для Mega). Т.е. Если вы на 6 ног повесили по 40 мА - у Вас уже превышение и контроллер может выйти из строя. Превышение на конкретной ноге может вывести из строя либо ногу (как правило), либо весь порт. Реже - может сдохнуть сам контроллер. Это второе.

Re: Порты ввода и вывода

Добавлено: Пт мар 14, 2014 09:26:31
ИС-пытатель
Либо еще вариант - где-то неправильно подключаете и у Вас получается КЗ или близкое к тому. Поэтому сильно падает напряжение.

Re: Порты ввода и вывода

Добавлено: Пт мар 14, 2014 09:42:29
Kavka
Вы питание на блю-туз модуль подаёте с ножек МК?
Если да, то модуль потребляет много больше 20-40мА. Да и при 40мА просадка напряжения будет существенной.
Вот это (просадка напряжения под нагрузкой) у вас и наблюдается.
Ставьте ключ на транзисторе.

Re: Порты ввода и вывода

Добавлено: Пт мар 14, 2014 10:47:10
kotriks
код у меня для меги168, а модуль HC-05 он вроде как по даташиту хавает 27-30ма.

Re: Порты ввода и вывода

Добавлено: Пт мар 14, 2014 10:59:17
ИС-пытатель
Ооооо! ))) Мега 168! ))) Моя любимая тема! ))))))) Kavka вон в курсе! ;)

В любом случае, если ты запитываешь через контроллер может быть просадка. Ставь промежуточный транзистор, как советовали выше.

P.S. Не верьте даташитам на все 100%. ;)

P.P.S. Проверь от блока питания.

Re: Порты ввода и вывода

Добавлено: Пт мар 14, 2014 11:34:40
urry
вы запитываете не светодиод, а целую электронную схему с встроенными конденсаторами, с разным током в момент излучения и приема и так далее - в момент включения ток на миллисекунды, но превышает допустимые нормы для порта в разы. средний ток - это не то, на что нужно ориентироваться а данном случае.
:)

Re: Порты ввода и вывода

Добавлено: Пт мар 14, 2014 12:36:16
ИС-пытатель
Ну... я не совсем согласен с последним постом.. У каждой схемы (и контроллер не исключение) есть пиковая нагрузочная способность, которая больше, и есть, как Вы говорите, "средняя". Я бы все-таки ориентировался на среднюю, но скажем для режима передачи.

Re: Порты ввода и вывода

Добавлено: Пт мар 14, 2014 15:57:59
kotriks
а какой такой промежуточный транзистор он разве не понизит ток.

Re: Порты ввода и вывода

Добавлено: Пт мар 14, 2014 16:27:49
ИС-пытатель
транзистор Вы ставите в режиме ключа. управлять транзистором будете при помощи контроллера. А транзистор будет управлять питанием Вашей схемы (ну, или чем там еще)

вбейте в гугл : транзистор. режим работы.

Вас интересует ключевой режим.

Пользуйтесь поисковиками. Они ответят гораздо быстрей и подробней.

Re: Порты ввода и вывода

Добавлено: Сб мар 15, 2014 13:22:06
kotriks
спасибо ребята получилось с ключём из транзистора.