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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Диагностика через светодиод, 1 диод, много состояний
Сергей Борщ
сообщение Feb 27 2008, 21:57
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(singlskv @ Feb 27 2008, 20:22) *
вопрос в том как запоминать все состояния эфективно, они все разные по длительности и по количеству состояний.
Примерно так (нашел в очень старом исходнике):
Код
.h:

typedef struct
{
    unsigned char Freq;
    unsigned Time;
} NoteType;
extern void beep(NoteType *);

extern    NoteType PowerOnBeep[];
extern    NoteType PowerOffBeep[];
extern    NoteType LegalKeyBeep[];
extern    NoteType IllegalKeyBeep[];

.c:

NoteType const PowerOnBeep[]=
{
    {Hz(2000),100 ms},
    {Hz(1000),100 ms},
    {Hz(500),100 ms},
    {Hz(200),200 ms},
    {0,0}
};
NoteType const PowerOffBeep[]=
{
    {Hz(100),200 ms},
    {Hz(500),100 ms},
    {0,0}
};
NoteType const LegalKeyBeep[]={{Hz(1000),100 ms},{0,0}};
NoteType const IllegalKeyBeep[]={{Hz(200),100 ms},{0,0}};


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 28 2008, 04:45
Сообщение #17


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(singlskv @ Feb 27 2008, 23:22) *
нужно разные(в том числе по количеству состояний) последовательности,
как в моем первом примере, OK, пусть нужно очень конкретные:
250MS_ON, 250MS_OFF, 250MS_ON, 250MS_OFF, 250MS_ON, 1000MS_OFF // три вспышки, пауза
500MS_ON, 500MS_OFF // равномерное мигание
250MS_ON, 250MS_OFF, 250MS_ON, 1000MS_OFF // две вспышки, пауза
_ON // все время включено


Тогда наверное проще иметь массив длительностей, и чтобы некоторые значения (например отрицательные) имели специальный смысл.
Например, -1 - остановиться, -2 - вернуться к началу...

Хотя, если это для пользователей, то я тоже склоняюсь к мысли, что индикация должна производиться числом вспышек, а не хитрой последовательностью сигналов.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Feb 28 2008, 06:53
Сообщение #18


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Если прибор не сильно многосерийный, а пользователи не специалисты, лучше поставить один дешёвый семисегментный индикатор и регистр сдвига. Число осмысленных знаков более двух десятков, а если использовать и мигание, тогда, ИМХО, хватит на всё. Расходуется всего два пина, можно обойтись и одним. В итоге, получится ещё и дешевле, ибо экономятся деньги на междугородних переговорах с заказчиком.
В своё время мне приходилось растолковывать заказчикам мигающие сигналы, и хотя в мануале всё было расписано, всегда находится особо неопытный пользователь. После установки индикатора проблемы закончились.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
Wildcat
сообщение Feb 28 2008, 22:12
Сообщение #19


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

Группа: Участник
Сообщений: 104
Регистрация: 21-12-06
Пользователь №: 23 770



Цитата
Если прибор не сильно многосерийный, а пользователи не специалисты, лучше поставить один дешёвый семисегментный индикатор и регистр сдвига. Число осмысленных знаков более двух десятков, а если использовать и мигание, тогда, ИМХО, хватит на всё. Расходуется всего два пина, можно обойтись и одним. В итоге, получится ещё и дешевле, ибо экономятся деньги на междугородних переговорах с заказчиком.
В своё время мне приходилось растолковывать заказчикам мигающие сигналы, и хотя в мануале всё было расписано, всегда находится особо неопытный пользователь. После установки индикатора проблемы закончились.


Святые слова beer.gif

По поводу одного светодиода с различными комбинациями для женщины - знало бы о ваших идеях наше ОТК => twak.gif ... Количество глюков невообразимо. Могут пропускать все - мигание, включение, выключение, считать вспышки - тем более. Это вы и специалист разберетесь и знаете, когда работает, а когда нет. Ставьте индикатор по совету Nanobyte и не сомневайтесь. Вам будет намного легче жить smile.gif


--------------------
Затравленный и прижатый к стене кот превращается в тигра. Мигель Сервантес.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 28 2008, 22:38
Сообщение #20


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Wildcat @ Feb 29 2008, 01:12) *
По поводу одного светодиода с различными комбинациями для женщины - знало бы о ваших идеях наше ОТК => twak.gif ... Количество глюков невообразимо. Могут пропускать все - мигание, включение, выключение, считать вспышки - тем более. Это вы и специалист разберетесь и знаете, когда работает, а когда нет.
Да нет, насчет женщин это была просто кем-то подкинутая шутка, смотреть на мигание
будут инженеры, так что непоняток не будет, а поставить по индикатору к каждому процу просто
невозможно, на одной плате может быть до 16 таких процов и каждый со своим блоком питания, и т.д.

Вопрос был именно в организации хранения информации о состоянии светодиода(количество режимов,
количество состояний в каждом режиме, длительности интервалов ON/OFF).

Просто количество байтиков на хранение этой инфы оказалось немаленьким, и хотя в итоге я
уместился в нужный объем, возник вопрос, а нельзя ли уменьшить количество, необходимой
для столь простого действия, памяти.... типа может я чего-нить не так делаю 07.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 28 2008, 22:48
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(singlskv @ Feb 29 2008, 03:38) *
Просто количество байтиков на хранение этой инфы оказалось немаленьким, и хотя в итоге я
уместился в нужный объем, возник вопрос, а нельзя ли уменьшить количество, необходимой
для столь простого действия, памяти.... типа может я чего-нить не так делаю 07.gif
ИМХО уровень реализации должен соответствовать уровню абстракции. Иначе можно было бы давно уже перпетум мобиле изготовить. biggrin.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 28 2008, 23:43
Сообщение #22


Гуру
******

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



Когда-то особо не заморачиваясь написал мигалку на 10 состояний для 4x светодиодов, ARM smile.gif smile.gif
Код
//---------------------------------------------------------------------------
#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
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 29 2008, 00:10
Сообщение #23


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Feb 29 2008, 02:43) *
Когда-то особо не заморачиваясь написал мигалку на 10 состояний для 4x светодиодов, ARM smile.gif smile.gif
Спасибо.
Нечто подобное я обдумывал, но у такого варианта есть один недостаток,
все циклы(время одного прохода) имеют одинаковую длительность, а это не всегда удобно,
правда зато по памяти не накладно.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 29 2008, 07:47
Сообщение #24


Нечётный пользователь.
******

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



Цитата(singlskv @ Feb 29 2008, 02:10) *
Нечто подобное я обдумывал, но у такого варианта есть один недостаток, все циклы(время одного прохода) имеют одинаковую длительность, а это не всегда удобно, правда зато по памяти не накладно.
Ну и что? Всё равно очень тонких различий в длительности на глаз нельзя заметить - выбираете подходящий квант времени и останавливаетесь на различии Т и 2Т, а 1,5Т всё равно будет мало отличимо от обеих. Зато очень просто реализуется, "хочется вааще цветомузыку устроить" - дайте 16 бит маску на светодиод.
У меня с не помню каких времён так и светодиоды сделаны (загружается маска, в прерывании по старшему биту светим/не светим и циклический сдвиг маски влево) и пискунчики (только там маска в прерывании сдвигается логическим сдвигом, а не циклическим - отпищали и затихли).


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 29 2008, 08:13
Сообщение #25


Гуру
******

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



Цитата(ReAl @ Feb 29 2008, 10:47) *
...на различии Т и 2Т, а 1,5Т всё равно будет мало отличимо от обеих.

Именно так, как на слух можно отличить более-менее уверенно 6dB по уровню, так и на глаз частоту мигания в два раза. Посему и сделано было три градации, частоты мигания и до трех (дальше уже народ путается) морганий/пригасаний. Формально, состояний в приведенном тексте можно нарисовать и много больше, но они будут мало отличаться.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 29 2008, 09:21
Сообщение #26


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(ReAl @ Feb 29 2008, 10:47) *
Ну и что? Всё равно очень тонких различий в длительности на глаз нельзя заметить - выбираете подходящий квант времени и останавливаетесь на различии Т и 2Т, а 1,5Т всё равно будет мало отличимо от обеих. Зато очень просто реализуется, "хочется вааще цветомузыку устроить" - дайте 16 бит маску на светодиод.

Дело в том, что иногда вывод на светодиод диагностики совмещен с выводом диагностики на
верхний проц и там приходиться делать очень разные по длительности последовательности.
Вобщем, как всегда, хочется максимальная гибкость настроек в сочетании с минимальными
ресурсами на реализацию. И на елку влезть....
Go to the top of the page
 
+Quote Post
Angelo
сообщение Mar 1 2008, 15:16
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 1-12-07
Пользователь №: 32 871



Используйте 2 светодиода, затраты чуть выше, зато легко определяемых состояний на порядки больше. Не эстетично юзеру с секундомером сидеть, это зло.
Go to the top of the page
 
+Quote Post

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

 


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


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