реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> светодиоды мигающие одновременно с разым интервалом, ввв
xxxdarksxx
сообщение Nov 8 2010, 12:03
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 11-02-10
Пользователь №: 55 414



как реализовать сие?просто пока из обвязки только пару светодиодов и пару кнопок, попробывал мигать, выходит только одновременно с определенной задержкой или по очереди, как сделать чтобы мигали одновременно но с разной скоростью(пока что постоянной)?

Код
Chip type           : ATmega8515
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 128
*****************************************************/

#include <mega8515.h>  
#include <delay.h>

// Declare your global variables here

int main(void)
{
DDRC.0=1;
DDRC.1=1;


while (1)
      {
      // Place your code here

PORTC.0=0;
PORTC.1=1;
delay_ms(200);

PORTC.0=1;
PORTC.1=0;
delay_ms(200);
      };
      return 0;
}


это мигание двух светодиодов по очереди

Сообщение отредактировал xxxdarksxx - Nov 8 2010, 12:05
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 8 2010, 12:30
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Заведите таймер на милисекундные прерывания.
В основном цикле опрашивайте флаг. Если он установлен то манипулируйте с таймерами для каждого светодиода.
Если сложно сделать прерывания от ТС просто ставте задержку на 1 мС в основном цикле и и опять же ведите для каждого светодиода свой таймер милисекунд.

Код
volatile unsigned char msk_flag; //флаг устанавливается в прерывании от ТС
unsigned int led_1_timer, led_2_timer; //таймеры для каждого светодиода
if(msk_flag)
{
  msk_flag = 0;
  if(led_1_timer>0) led_1_timer--;
  else
  {
     led_1_timer = 1000;
     inv_led(LED_1);
  }

  if(led_2_timer>0) led_2_timer--;
  else
  {
     led_2_timer = 417;
     inv_led(LED_2);
  }
}



Без прерываний

Код
#include <mega8515.h>  
#include <delay.h>

// Declare your global variables here
#define LED_1_TIMEOUT 1000
#defien LED_2_TIMEOUT 417

#define LED_1_MSK (1<<0) //PC0
#defien LED_2_MSK (1<<1) //PC1


int main(void)
{
DDRC = LED_1_MSK|LED_2_MSK; //настройка порта на вывод

unsigned int led_1_timer = LED_1_TIMEOUT, led_2_timer = LED_2_TIMEOUT; //таймеры для каждого светодиода

while (1)
{

  delay_ms(1);

  if(led_1_timer>0) led_1_timer--;
  else
  {
     led_1_timer = LED_1_TIMEOUT;
     PORTC ^= LED_1_MSK; //инверсия пина
  }

  if(led_2_timer>0) led_2_timer--;
  else
  {
     led_2_timer = LED_2_TIMEOUT;
     PORTC ^= LED_2_MSK; //инверсия пина
  }

}


Сообщение отредактировал mempfis_ - Nov 8 2010, 12:32
Go to the top of the page
 
+Quote Post
xxxdarksxx
сообщение Nov 8 2010, 15:51
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 11-02-10
Пользователь №: 55 414



спасибо,немножко не понятно,не подскажите что почитать по этой теме и без долгих теоретических отступлений,больше практических примеров?
Go to the top of the page
 
+Quote Post
tazik
сообщение Nov 9 2010, 04:39
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Цитата(xxxdarksxx @ Nov 8 2010, 22:51) *
спасибо,немножко не понятно,не подскажите что почитать по этой теме и без долгих теоретических отступлений,больше практических примеров?

пример Вам уже привели. а если почитать, то вот
Прикрепленный файл  ___________________.rar ( 342.13 килобайт ) Кол-во скачиваний: 142
Go to the top of the page
 
+Quote Post
xxxdarksxx
сообщение Nov 9 2010, 17:58
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 11-02-10
Пользователь №: 55 414



Цитата(tazik @ Nov 9 2010, 06:39) *
пример Вам уже привели. а если почитать, то вот
Прикрепленный файл  ___________________.rar ( 342.13 килобайт ) Кол-во скачиваний: 142

спасибо, это то что мне нужно
Go to the top of the page
 
+Quote Post
xxxdarksxx
сообщение Nov 9 2010, 20:13
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 11-02-10
Пользователь №: 55 414



еще такой вопрос,когда подключаю несколько светодиодов они горят менее ярко чем когда один или два, тоесть есть какой то предел тока? что нужно делать чтобы этого не было? использовать внешний источник тока? как правильно подключать светодиоды и кнопки к контроллеру?спасибо)
Go to the top of the page
 
+Quote Post
DTF
сообщение Nov 10 2010, 01:09
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 6-11-09
Пользователь №: 53 453



Цитата(xxxdarksxx @ Nov 10 2010, 03:13) *
еще такой вопрос,когда подключаю несколько светодиодов они горят менее ярко чем когда один или два, тоесть есть какой то предел тока? что нужно делать чтобы этого не было? использовать внешний источник тока? как правильно подключать светодиоды и кнопки к контроллеру?спасибо)

Конечно, есть ограничения по току, они указаны в DataSheet.
Читайте от начала и до конца: http://easyelectronics.ru/podklyuchenie-mi...era-likbez.html .
Go to the top of the page
 
+Quote Post
xxxdarksxx
сообщение Nov 10 2010, 18:52
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 11-02-10
Пользователь №: 55 414



Цитата(DTF @ Nov 10 2010, 03:09) *
Конечно, есть ограничения по току, они указаны в DataSheet.
Читайте от начала и до конца: http://easyelectronics.ru/podklyuchenie-mi...era-likbez.html .


огромное спасибо, нашел ответы на многие вопросы, ладно пока ушел изучать теорию)
Go to the top of the page
 
+Quote Post
yurmala
сообщение Mar 1 2011, 10:22
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 9-02-11
Из: Трехгорный
Пользователь №: 62 814



Цитата(tazik @ Nov 9 2010, 09:39) *
пример Вам уже привели. а если почитать, то вот
Прикрепленный файл  ___________________.rar ( 342.13 килобайт ) Кол-во скачиваний: 142

спасибо, добавил себе в библиоткеу.
Go to the top of the page
 
+Quote Post
Marto
сообщение Mar 1 2011, 13:40
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 17-05-09
Из: Ижевск
Пользователь №: 49 190



Цитата(xxxdarksxx @ Nov 10 2010, 02:13) *
еще такой вопрос,когда подключаю несколько светодиодов они горят менее ярко чем когда один или два, тоесть есть какой то предел тока? что нужно делать чтобы этого не было? использовать внешний источник тока? как правильно подключать светодиоды и кнопки к контроллеру?спасибо)


чтобы не сдохла линия порта контроллера, светодиоды следует подключать через транзисторный ключ.


--------------------
Шизоидный холерик
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01445 секунд с 7
ELECTRONIX ©2004-2016