|
|
  |
светодиоды мигающие одновременно с разым интервалом, ввв |
|
|
|
Nov 8 2010, 12:03
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 8 2010, 12:30
|

Профессионал
    
Группа: Свой
Сообщений: 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
|
|
|
|
|
Nov 8 2010, 15:51
|
Участник

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

|
спасибо,немножко не понятно,не подскажите что почитать по этой теме и без долгих теоретических отступлений,больше практических примеров?
|
|
|
|
|
Nov 9 2010, 04:39
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(xxxdarksxx @ Nov 8 2010, 22:51)  спасибо,немножко не понятно,не подскажите что почитать по этой теме и без долгих теоретических отступлений,больше практических примеров? пример Вам уже привели. а если почитать, то вот
___________________.rar ( 342.13 килобайт )
Кол-во скачиваний: 142
|
|
|
|
|
Nov 9 2010, 17:58
|
Участник

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

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

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

|
еще такой вопрос,когда подключаю несколько светодиодов они горят менее ярко чем когда один или два, тоесть есть какой то предел тока? что нужно делать чтобы этого не было? использовать внешний источник тока? как правильно подключать светодиоды и кнопки к контроллеру?спасибо)
|
|
|
|
|
Nov 10 2010, 01:09
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 6-11-09
Пользователь №: 53 453

|
Цитата(xxxdarksxx @ Nov 10 2010, 03:13)  еще такой вопрос,когда подключаю несколько светодиодов они горят менее ярко чем когда один или два, тоесть есть какой то предел тока? что нужно делать чтобы этого не было? использовать внешний источник тока? как правильно подключать светодиоды и кнопки к контроллеру?спасибо) Конечно, есть ограничения по току, они указаны в DataSheet. Читайте от начала и до конца: http://easyelectronics.ru/podklyuchenie-mi...era-likbez.html .
|
|
|
|
|
Nov 10 2010, 18:52
|
Участник

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

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

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

|
Цитата(tazik @ Nov 9 2010, 09:39)  пример Вам уже привели. а если почитать, то вот
___________________.rar ( 342.13 килобайт )
Кол-во скачиваний: 142спасибо, добавил себе в библиоткеу.
|
|
|
|
|
Mar 1 2011, 13:40
|

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

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