Стабилизация Активная - часть II

 
1 78 79 80 81 82 88
UA Non-conformist #20.04.2012 10:52  @Ckona#20.04.2012 09:49
+
-
edit
 

Non-conformist

аксакал

Ckona> В связи с новой вводной, понятие "длинное нажатие кнопки" отменяется.
Нет, не отменяется. Я уже говорил выше, что твой куратор написал две "кнопки" для ДАННОГО железа: фиксируемую (нажал-отпустил = вкл / нажал-отпустил = выкл) и нефиксируемую (нажал = вкл / отпусил = выкл). Поищи выше по тексту, страниц пятнадцать-двадцать назад.

Ты имхо не о том рассуждаешь, совсем не о тех миллисекундах. Думаю, что о "железных" микро- и миллисекундах тебе лучше вообще пока забыть. Просто прими по умолчанию, что кнопка обнаруживается вполне надёжно, с очень большим запасом. Любой программой.

Ну, и я бы прислушался к ГОГИным советам.
Skype: a_schabanow  
+
-
edit
 

shadowjack

втянувшийся
GOGI> Я бы сделал так: при подключении к ком-порту контроллер становится мостом UART-I2C. Это позволит с компьютера как снимать данные из памяти, так и получать значения с датчиков в реальном времени.
Тогда нужно писать программу-клиента со стороны компьютера. От этого я хотел уйти. Конечно, проще сделать выдачу сообщений по команде с UART-а, чем городить огород с длинными (или двойными) нажатиями.
GOGI> При отключении от ком-порта - первым нажатием на кнопку начинается запись, вторым останавливается, пишется по кругу.
Нужно ли писать по кругу - это вопрос. Что важнее - данные после начала записи или перед выключением записи? Зависит от применения.
 11.011.0
UA Ckona #20.04.2012 11:16  @Non-conformist#20.04.2012 10:52
+
-
edit
 

Ckona

опытный
★☆
Ckona>> В связи с новой вводной, понятие "длинное нажатие кнопки" отменяется.
Non-conformist> твой куратор написал две "кнопки" для ДАННОГО железа: фиксируемую (нажал-отпустил = вкл / нажал-отпустил = выкл) и нефиксируемую (нажал = вкл / отпусил = выкл). Поищи выше по тексту, страниц пятнадцать-двадцать назад.
В тестируемом коде реализован первый тип кнопки.
Вот доказательство:
Button up
Long press
state -> DUMP
60190 193 13 -35 2 10 -58
Button down
Button up
Short press
state -> RECORD
Button down
.
.
.
.
.
.

Точка обозначает запись в память одной страницы данных.

Уже легче. Осталось вызвать режим считывания после записи.

Ну, все программисты в бОльшей или меньшей степени страдают пренебрежением к инструкциям для пользователей. Аналогичным образом Дерсу Узала удивлялся, как белые человеки не могут заметить прутик, надломленный в сторону нужной тропы или возраст человека по его следам.
Меня сильно попутала инструкция в этом сообщении:
"Короткое нажатие на кнопку - переключение запись/ожидание (новая запись затирает старую). Длинное (более 1 сек) нажатие на кнопку - сброс данных на ком-порт."
 

Ckona

опытный
★☆
Ckona> Уже легче. Осталось вызвать режим считывания после записи.
Дело пойдет.
Появится ShadowJack, отловит баги (в компорт выдаются данные аж по одному отсчету) - все получится !
 

Ckona

опытный
★☆
Ckona> Появится ShadowJack
О ! Привет !
Прошу на следующей неделе быть на связи.
Сегодня я "в эфире" поздно вечером, и до понедельника - в другом городе.
 
+
-
edit
 

shadowjack

втянувшийся
Ckona>> Не помогло.
Ckona> Пытаюсь разобраться в логике работы софта.
Ckona> Вроде бы как в главном цикле каждый раз и текущее, и предыдущее состояния кнопки принудительно объявляются LOW. Хотя и static ! (тут мне уже трудно въехать)
static как раз и обозначает, что
1) переменная сохраняет свое значение между вызовами функции loop
2) инициализируется 1 раз при запуске программы
Т.е. статическая переменная - это почти то же, что и глобальная переменная, только у неё ограничена область видимости той функцией, где она объявлена.
Ckona> Похоже, это неправильно - как ни тычь кнопкой, в каждом обороте цикла принудительное "обнуление".
Нет, как раз моменты нажатия и отпускания вылавливаются, судя по всему, нормально.
Ckona> И непонятно, как получается LONG PRESS, если предыдущее состояние кнопки все время внутри цикла принудительно устанавливается LOW.
См. выше.
 11.011.0
+
-
edit
 

shadowjack

втянувшийся
Ckona> Меня сильно попутала инструкция в этом сообщении:
Ckona> "Короткое нажатие на кнопку - переключение запись/ожидание (новая запись затирает старую). Длинное (более 1 сек) нажатие на кнопку - сброс данных на ком-порт."
Ну по-моему инструкция исключает двойное толкование. Короткое нажатие нажатие включает режим записи. Еще одно - переводит в режим ожидания (запись останавливается). Следующее - опять начинает запись, затирая старую, и так далее. Длинное нажатие (более 1 сек) в любом из режимов выводит записанные данные на ком-порт, после чего переходит в режим ожидания.
Если не так - значит работает не так, как задумывалось.
 11.011.0
UA Non-conformist #20.04.2012 11:53  @shadowjack#20.04.2012 11:16
+
-
edit
 

Non-conformist

аксакал

shadowjack> Нужно ли писать по кругу - это вопрос. Что важнее - данные после начала записи или перед выключением записи?
ГОГИ имеет в виду, что следующий круг записи начинается автоматически после заполнения всей бортовой памяти. По принципу бортового самописца - всегда в наличии последний час записи.

shadowjack> Зависит от применения.
Здесь применение такое, что один цикл записи (полёт, тест) занимает очень небольшую часть от двух гигабайт бортовой памяти. Т.е. затираемые данные в любом случае уже давно перенесены в компьютер, обработаны, обсуждены, и даже может быть, что уже почти забыты. Т.е. если это упрощает интерфейс, то запись можно и нужно закольцовывать.
Skype: a_schabanow  
RU shadowjack #20.04.2012 12:13  @Non-conformist#20.04.2012 11:53
+
-
edit
 

shadowjack

втянувшийся
Non-conformist> Здесь применение такое, что один цикл записи (полёт, тест) занимает очень небольшую часть от двух гигабайт бортовой памяти.
Здесь - это где? У нас же 1МБит памяти, что хватает на 81 сек. записи. Можно и кольцевую запись сделать, нужно только понять, как сеансы идентифицировать.
 11.011.0
UA Non-conformist #20.04.2012 12:26  @shadowjack#20.04.2012 12:13
+
-
edit
 

Non-conformist

аксакал

Non-conformist>> ... двух гигабайт бортовой памяти.
shadowjack> Здесь - это где?
"Здесь" - это на МЕМС-шилде, с которым сейчас разбирается Ckona. Два гигабайта памяти, в SOIC-8. Что такое 1 Мбит - не в курсе, впервые слышу.
Skype: a_schabanow  
UA Non-conformist #20.04.2012 13:16  @Non-conformist#20.04.2012 12:26
+
-
edit
 

Non-conformist

аксакал

Виноват, действительно 1 048 576 бит. Меня сбил с толку суффикс "2GB2" после основной маркировки.
Skype: a_schabanow  
+
-
edit
 

Ckona

опытный
★☆
shadowjack> Ну по-моему инструкция исключает двойное толкование. Короткое нажатие нажатие включает режим записи. Еще одно - переводит в режим ожидания (запись останавливается). Следующее - опять начинает запись, затирая старую, и так далее. Длинное нажатие (более 1 сек) в любом из режимов выводит записанные данные на ком-порт, после чего переходит в режим ожидания.
shadowjack> Если не так - значит работает не так, как задумывалось.

Следует "списать" на мою недостаточную подготовленность. Скорее всего, именно так и работает.
Сегодня вечером, возможно, попробую еще один "сеанс магической кнопки".

Если есть возможность, прошу ответить:
1)
одна точка в выводе на сом-порт, примерно раз в секунду выводится - это 100 отсчетов от датчиков, записанные в память ?
2)
Если система диагностирует "LONG PRESS", "DUMP" и потом выводит одну-единственную строку - это последний комплект отсчетов или что-то не так ?
3)
Зачем в программе генератор случайных чисел random ? (если ноу-хау, отвечать не надо)
 
+
-
edit
 

GOGI

координатор
★★★★
shadowjack> Тогда нужно писать программу-клиента со стороны компьютера. От этого я хотел уйти. Конечно, проще сделать выдачу сообщений по команде с UART-а, чем городить огород с длинными (или двойными) нажатиями.
Офигеть. А чего, работать тупо с текстовыми данными в Эксель?! Это ж очень быстро застрелиться можно.
1  11.011.0

Ckona

опытный
★☆
Ckona> еще один "сеанс магической кнопки".
Ну, не один, а многократно проделанное одно и то же.

Все-таки что-то не так !

Нажимаем кнопку RESET, то есть запускаем программу "с нуля":
Configuring L3G4200D
Configuring LIS331D
Button down


По умолчанию, само собой, - режим ожидания.
Нажимаю кнопку один раз, в нажатом состоянии она пребывает 0,2 секунды:
Button up
Long press
state -> DUMP
482293 558 10 26 -1 3 -65
Button down

Как видим, система перешла в режим "выдать данные" и на сом-порт поступила аж одна строка.

Нажимаем два раза. Тык-тык ! 0,2 с - продолжительность нажатия, 0,2 с - пауза, 0,2 с - второе нажатие:
Button up
Long press
state -> DUMP
482293 558 10 26 -1 3 -65
Button down

//Вставляю комментарий: выглядит как реакция на первое нажатие
Button up
Short press
state -> RECORD
Button down
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Ровно 20 точек ! С интервалом примерно 1 секунда.
В это время, как правило, никакой реакции на нажатия не возникает. Хотя иногда получался выход в режим DUMP с выводом одной строки данных.

По истечении 20 точек все замирает, программа ни на что не реагирует, приходится перезагружать (RESET).

Бр-р-р !
 
+
-
edit
 

shadowjack

втянувшийся
GOGI> Офигеть. А чего, работать тупо с текстовыми данными в Эксель?! Это ж очень быстро застрелиться можно.
Ну это уж кто в чем может. Кто в Excel, кто в Matlab, кто в самодельной программе на perl/python.
В любом случае я программу-клиента под винду писать не буду.
 11.011.0
+
-
edit
 

shadowjack

втянувшийся
Ckona> Зачем в программе генератор случайных чисел random ? (если ноу-хау, отвечать не надо)
Это была идея, как сделать так, чтобы при перезаписи читался только последний сеанс.
Задумка такая: мы при записи каждого нового сеанса генерируем случайный двухбайтовый идентификатор сеанса ("magic"), который пишем в каждый 16-байтовый набор данных. Запись всегда ведется с начала микросхемы памяти. При чтении мы читаем 16 байтовые наборы по тех пор, пока не встретим другой "magic" - значит, наш сеанс закончился. Конечно, возможны коллизии - но пока программа тестовая, думаю, потянет.
Видимо, где-то в реализации кроется косяк, поэтому и выводится только одна строка.
 11.011.0
Это сообщение редактировалось 21.04.2012 в 16:09
+
-
edit
 

Xan

координатор

shadowjack> Конечно, проще сделать выдачу сообщений по команде с UART-а, чем городить огород с длинными (или двойными) нажатиями.

Моя прога позволяет команды посылать.

Можно сделать прогу, которая подхватывает записываемый файл и показывает из него график.
Может быть, даже, я такую для себя нарисую.
В задумчивости пока.
 9.09.0
UA Non-conformist #22.04.2012 21:06  @shadowjack#21.04.2012 15:50
+
-
edit
 

Non-conformist

аксакал

shadowjack> В любом случае я программу-клиента под винду писать не буду.
То, что ты "писать не будешь", я, например, уже понял. Но чем готовая LabView не подходит? Почему сразу писать?
Skype: a_schabanow  
RU shadowjack #23.04.2012 12:24  @Non-conformist#22.04.2012 21:06
+
-
edit
 

shadowjack

втянувшийся
Non-conformist> Но чем готовая LabView не подходит? Почему сразу писать?
Например, вот этим: LabVIEW Base starting at £1049
Можно подумать, что LabVIEW все сама за программиста сделает - стоит только ему в голове сформировать четкий запрос, что он хочет получить.
 11.011.0
UA Non-conformist #23.04.2012 13:01  @shadowjack#23.04.2012 12:24
+
-
edit
 

Non-conformist

аксакал

shadowjack> at £1049
Ты идейный, чего-то боишься, или собираешься выставлять своё творение на рынок? Попнись по торрентам, если не влом - их там пока есть, причём много и разных.

shadowjac> Можно подумать, что LabVIEW все сама за программиста сделает ...
Можно подумать, что ты собираешься что-то делать. )) Кто ДЕЛАЕТ - у того она и делает. Пол-ютуба завалено роликами.

Разговор ни о чём.
Skype: a_schabanow  
RU shadowjack #23.04.2012 13:06  @Non-conformist#23.04.2012 13:01
+
-
edit
 

shadowjack

втянувшийся
Non-conformist> Ты идейный, чего-то боишься, или собираешься выставлять своё творение на рынок?
50/50 идейный/боюсь
 11.011.0
+
-
edit
 

Ckona

опытный
★☆
shadowjack> Видимо, где-то в реализации кроется косяк, поэтому и выводится только одна строка.

Можно ли изменить(упростить) код таким образом, чтобы выводилось все содержимое, записанное в память ? Весь один мегабайт.
Пусть "ориентиром" будет текущее время контроллера micros().

Надо как-то "сдвинуться" с "памятной отметки", чтоб "телеметрия" тоже работала.
 
UA Non-conformist #23.04.2012 19:57  @Ckona#23.04.2012 18:21
+
-
edit
 

Non-conformist

аксакал

Ckona> Весь один мегабайт.
Там 128 кБ всего.
Skype: a_schabanow  
UA Ckona #23.04.2012 20:14  @Non-conformist#23.04.2012 19:57
+
-
edit
 

Ckona

опытный
★☆
Ckona>> Весь один мегабайт.
Non-conformist> Там 128 кБ всего.

Так ты ж в начале страницы сам признал, что в 1 мегабайт !
Да и по даташиту у микросхемы название "TWO-WIRE SERIAL EEPROM 1M(131,072x8).

Завтра буду публиковать фотки корректирующих двигателей и дергать электромагнитами по командам с АРДОСКОПа.
Экономя вес, перешел с 14-вольтового на 7-вольтовое питание электромагнитов (обмотки другие).
Выдержат ли ключи ток 5 А на протяжении 1/3 секунды ?
 
AD Реклама Google — средство выживания форумов :)

GOGI

координатор
★★★★
Ckona> Да и по даташиту у микросхемы название "TWO-WIRE SERIAL EEPROM 1M(131,072x8).
Вся память измеряется в мегабитах.
1  11.011.0
1 78 79 80 81 82 88

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru