|
Диагностика через светодиод, 1 диод, много состояний |
|
|
|
Feb 26 2008, 23:53
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Вопрос в следующем: - есть один LED загорающийся подачей 0 в порт - пусть имя порта определено типа #define LED_PORT PORTx - и маска пина диода типа #define LED_MASK (1<<Pxx) - есть прерывание(функция) вызывающаяся допустим раз в миллисекунду - нужно выводить много различных состояний(диагностика) на этот LED - примеры: 0,5c горим; 0,5 не горим 0,25c горим; 1c не горим; 0,25 горим, ..... 0,25c горим; 0,25c не горим, 0,25 горим, 1c не горим,.... ну и т.д. - количество состояний ограниченно чем-нить разумным, типа 4-6 вариантов последовательностей.
вопрос в том как эфективнее(и по коду и по скорости) это организовать...
P.S. крайние варианты типа горим полгода а потом не горим 1мс не рассматриваем P.P.S должен присутствовать и вариант просто горим непрерывно P.P.P.S. как это сделать в принципе, я знаю, интересны просто варианты сделать это оптимально.
|
|
|
|
|
 |
Ответов
|
Feb 28 2008, 23:43
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Когда-то особо не заморачиваясь написал мигалку на 10 состояний для 4x светодиодов, ARM  Код //--------------------------------------------------------------------------- #define MAX_LED_MODES 10 static const ulong led_const[MAX_LED_MODES] = { 0x00000000, // 0 Off 0x11111111, // 1 On 0x11110000, // 2 Slow Blink 0x11001100, // 3 Normal Blink 0x10101010, // 4 Fast Blink 0x10000000, // 5 Single Flash 0x10100000, // 6 Two Flash 0x10101000, // 7 Tree Flash 0x01111111, // 8 Single Blackout 0x01011111 // 9 Two Blackout }; ulong ledstat = 0; // 4 LEDS processor //--------------------------------------------------------------------------- void led_prosess( int counter ) { ulong curstat; curstat = ((ledstat >> ((counter & 0x07 )<<2)) & 0x0F)<<BIT_LED0; if( curstat ) IO1CLR = curstat; curstat = (~curstat)&(0x0F<<BIT_LED0); if( curstat ) IO1SET = curstat; }
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 29 2008, 00:10
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Feb 29 2008, 02:43)  Когда-то особо не заморачиваясь написал мигалку на 10 состояний для 4x светодиодов, ARM  Спасибо. Нечто подобное я обдумывал, но у такого варианта есть один недостаток, все циклы(время одного прохода) имеют одинаковую длительность, а это не всегда удобно, правда зато по памяти не накладно.
|
|
|
|
|
Feb 29 2008, 07:47
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(singlskv @ Feb 29 2008, 02:10)  Нечто подобное я обдумывал, но у такого варианта есть один недостаток, все циклы(время одного прохода) имеют одинаковую длительность, а это не всегда удобно, правда зато по памяти не накладно. Ну и что? Всё равно очень тонких различий в длительности на глаз нельзя заметить - выбираете подходящий квант времени и останавливаетесь на различии Т и 2Т, а 1,5Т всё равно будет мало отличимо от обеих. Зато очень просто реализуется, "хочется вааще цветомузыку устроить" - дайте 16 бит маску на светодиод. У меня с не помню каких времён так и светодиоды сделаны (загружается маска, в прерывании по старшему биту светим/не светим и циклический сдвиг маски влево) и пискунчики (только там маска в прерывании сдвигается логическим сдвигом, а не циклическим - отпищали и затихли).
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Feb 29 2008, 09:21
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(ReAl @ Feb 29 2008, 10:47)  Ну и что? Всё равно очень тонких различий в длительности на глаз нельзя заметить - выбираете подходящий квант времени и останавливаетесь на различии Т и 2Т, а 1,5Т всё равно будет мало отличимо от обеих. Зато очень просто реализуется, "хочется вааще цветомузыку устроить" - дайте 16 бит маску на светодиод. Дело в том, что иногда вывод на светодиод диагностики совмещен с выводом диагностики на верхний проц и там приходиться делать очень разные по длительности последовательности. Вобщем, как всегда, хочется максимальная гибкость настроек в сочетании с минимальными ресурсами на реализацию. И на елку влезть....
|
|
|
|
Сообщений в этой теме
singlskv Диагностика через светодиод Feb 26 2008, 23:53 yod Ну как в PC сделано - при загрузке динамик орет е... Feb 27 2008, 03:48 AHTOXA Ну например так. Заводим структуру:
Кодtypedef str... Feb 27 2008, 04:33 Сергей Борщ Цитата(AHTOXA @ Feb 27 2008, 06:33) Ну на... Feb 27 2008, 07:07  AHTOXA Цитата(Сергей Борщ @ Feb 27 2008, 12:07) ... Feb 27 2008, 07:24 singlskv Цитата(AHTOXA @ Feb 27 2008, 07:33) ........ Feb 27 2008, 18:22  Сергей Борщ Цитата(singlskv @ Feb 27 2008, 20:22) воп... Feb 27 2008, 21:57  AHTOXA Цитата(singlskv @ Feb 27 2008, 23:22) нуж... Feb 28 2008, 04:45 war4one Цитата(singlskv @ Feb 27 2008, 02:53) Воп... Feb 27 2008, 05:25 Dog Pawlowa Есть случаи, когда тестируются базовые вещи в само... Feb 27 2008, 07:12 Kirill Frolov Цитата(singlskv @ Feb 27 2008, 02:53) Воп... Feb 27 2008, 07:19 war4one Цитата(Kirill Frolov @ Feb 27 2008, 10:19... Feb 27 2008, 09:47 muravei Цитата(Kirill Frolov @ Feb 27 2008, 10:19... Feb 27 2008, 15:53 bodja74 Светодиод на TX ,если заморгал ,переключаюсь на те... Feb 27 2008, 12:15 zhevak Господа, господа!
Давайте сначала определимся... Feb 27 2008, 20:10 singlskv Цитата(zhevak @ Feb 27 2008, 23:10) Госпо... Feb 27 2008, 21:02  bodja74 Цитата(singlskv @ Feb 28 2008, 01:02) Раз... Feb 27 2008, 21:38 Nanobyte Если прибор не сильно многосерийный, а пользовател... Feb 28 2008, 06:53 Wildcat ЦитатаЕсли прибор не сильно многосерийный, а польз... Feb 28 2008, 22:12 singlskv Цитата(Wildcat @ Feb 29 2008, 01:12) По п... Feb 28 2008, 22:38  rezident Цитата(singlskv @ Feb 29 2008, 03:38) Про... Feb 28 2008, 22:48   zltigo Цитата(ReAl @ Feb 29 2008, 10:47) ...на р... Feb 29 2008, 08:13 Angelo Используйте 2 светодиода, затраты чуть выше, зато ... Mar 1 2008, 15:16
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|