Полювання на нейтрино

Іноді я тут згадував про навчання доньки, але рідко. А вона вже не студентка NCTU, а продовжує навчання і паралельно ловить нейтрино (50%/50% за умовами контракту) в RWTH Aachen University.

Подробиці в інтерв’ю, яке у неї взяла Світлана Яцив, «Маєш право знати».

А ще моя донька випадково зустрілася у Німеччині з ученицею моєї мами.
Марічка повернулася на пару днів з лабораторії Гран Сассо в інститут, бо їй хтось десь щось наплутав з документами, треба було терміново виправити. І тут їй подзвонив знайомий індус з проханням допомогти під час ділової зустрічі з «іншою дівчиною, яка теж з України».
Ну і тепер вже підтримують зв’язок.
Моя донька випадково зустрілася у Німеччині з ученицею моєї мами
Глобалізація…

Китайський ST-Link v2 проти STM32F3-Discovery

Щоб вже закінчити вчорашню тему.

Витягнув із шухлядки плату STM32F3-Diіcovery — на ній є вбудований ST-Link, який можна відключити від процесора на платі і використовувати для програмування інших плат. На штирі виведено всі сигнали, включно з RESET і SWO. До речі, перемички розривають лише лінії SWCLK і SWDIO, тому свою плату можна скидати, натиснувши кнопку на платі Discovery.

Ну що — все працює, RESET піднімає мікроконтролер зі Stop-у і перепрошиває. Тобто проблема в тому, що клон ST-Link з Ali-Express-у не вміє виконувати відповідні команди.

Коли вже знову сів за макетку з STM32L051, то перевірив і роботу команд stm32lx lock / stm32lx unlock і швидкість програмування. У клонованого ST-Link тут теж щось в генотипі порушене, бо набагато повільніший. Хоча в ньому стоїть STM32F101, тобто USB зроблене програмно, тому швидким він і не може бути, але ж одиниці кілобайт на секунду не така вже й велика швидкість.

Результати тестування на швидкість (файли для прошивки 2-12kB).
Команда “reset init” перемикає STM32L0x з внутрішнього MSI 2 MHz на HSI 16 MHz і піднімає частоту обміну.

Програматор Fswclk = 300 kHz
(-c “reset halt”)
Fswclk = 2.5 MHz
(-c “reset init”)
Клон ST-Link 1.5-1.7 KiB/s 1.5-1.7 KiB/s
F3-Discovery 4.9-5.0 KiB/s 5.2-5.3 KiB/s
FT2232H 3.8-4.2 KiB/s 8.0-8.3 KiB/s


Платку з FT2232D діставати було ліньки, на цих швидкостях має бути не набагато повільніша за FT2232H, хіба ото не зможе виставити 2.5 MHz частоти SWCLK, буде 2.

Китайський ST-Link v2, STM32L011 і Stop

Точніше, «Stop і не-Reset».
І не STM32L011F4, бо у Імраді їх нема. Граюся на а STM32L051C8T, поки дрібніші кристали їдуть.

Cortex-M, зокрема STM32F10x і трохи раніше LPC176x, я вже трохи помацав у невеликих «одноразових» проектах. У виробах досі йшли ATmega48PA, хоча не все влаштовувало і поглядав на нові можливості нових ATtiny (можна погортати назад, я писав, що мене цікавить). Запитуючи про ціни-доступність цих кристалів, мимоволі роззирався навкруги, як на старіші MSP430 та 8-бітні PIC-и, так і на STM8L, які теж мають цікаві можливості. Та останнім заважає біда — вибір між 16-мегагерцовим RC (забагато, навіть якщо для ядра поділити частоту — багато їсть сам генератор) і низькочастотним low consumption, якого малувато і який має доволі великі початковий розкид і нестабільність частоти.

Так потихеньку доповз і до STM32L0. Аналоговий компаратор, хоч і повільніший, ніж в AVR, але ж пару мікроампер, а не 70, LPTIM1, який може слухати компаратор при зупиненому ядрі і маршевому RC, і, головне, MSI-генератор, який зменшує споживання при зменшенні частоти (привіт, MSP430, я вас ціную, та так до вас і не дійшов). Все, «беру».

Ті «товстіші» Cortex-M я програмував через OpenOCD/JTAG і платки на FT2232D/FT2232H, яких у мене вистачає. Тут же потрібен SWD. Ну що, «досить самому ліпити адаптери», Ali-express, копійчаний клон ST-Link v2, побігли.

І тут вилізла проблема. Якщо програма використовує ніжки SWCLK/SWDIO для себе, або якщо ядро йде у Stop, зупиняючи генератор, то для перепрошивки необхідно смикнути кристал за Reset і потримати на ньому під час з’єднання, параметр connect_assert_srst для OpenOCD. І от чи то всі ці китайські клони, з якими взагалі йдуть 4 дротики (SWDIO, GND, SWCLK, VCC для STM32 і RESET, GND, SWIM, VCC для STM8), не вміють смикати за Reset, чи ще що, але з моїм ST-Link v2 для перепрошивки в потрібний момент необхідно тицяти у кнопку скидання вручну.
Не діло.

Згадав, що опис OpenOCD згадував resistor hack, який дозволяє для FTDI-них адаптерів працювати з SWD. Дописав потрібні рядки у конфіг для своєї плати на FT2232H, спробував — все чудово працює. Ото недаремно мені такі адаптери завжди подобалися ;-)

Десь у мене лежить кілька незапаяних FT2232D і ще 2-4 штуки можна зняти із зоопарку платок, який зібрався за минулі роки. Накидаю я luminary-icdi-подібну плату і притулю її до чергового замовлення експериментальних зразків.

Не мала баба клопоту, або ще одна формочка

Знову сезон миколайчиків, отже, я знову сідаю робити формочки.

Цього разу не так, щоб підрядився і не так, щоб пообіцяв, але ж заїкнувся…
«За язик ніхто не тягнув», то формочку для знайомих пластунок (точніше, для пластунок знайомих ;-) ) довелося робити.

Формочка для печива у вигляді емблеми Пласту

Емблема Пласту з зовнішнім контуром.

Спочатку, як було описано у рекомендаціях по виготовленню формочки за ескізом, зробив контур з периметром, який співпадає з периметром консервної банки діаметром близько 10 см (у даному випадкові це була банка від дитячого харчування). Оскільки контур симетричний, малювалася його половина. Розмір підганявся під півпериметр банки, затим робилася дзеркальна копія і дві половинки об’єднувалися в одну фігуру.

Формочка для печива і вигляді емблеми Пласту

Чим більше на формі вигинів, тим морочливіше, і цю формочку зробити було важче, ніж описаний раніше куманець. Перший варіант вийшов трохи неточний…

Перший? Ні-ні, я цього не казав! І взагалі, почалася ера 3D-принтерів! Там можна і п’ятий зробити, не те, що другий!

Microchip ATtiny

Так, ці нові tinyAVR (ATtiny416/417/814/816/817) вже Microchip, а не Atmel.

Після купівлі Мікрочіпом фірми Атмел були певні побоювання щодо майбутнього мікроконтролерів AVR. І от з’явилися нові tiny з цікавими можливостями. Дещо, як програмована логіка та перемикання швидкості/споживання компаратора, не новина для мікроконтролерів Microchip. Дещо було в AVR, але лише в лінійці xmega. Не думаю, що за час від купівлі все перераховане нижче встигли зробити у нового власника. Швидше за все, роботи велися і до продажу фірми. Головне, що все це не закинуто, тобто поява цих нових tiny свідчить, принаймні, про продовження лінії мікроконтролерів з ядром AVR.

Отже, що маємо: » » »

Що це за комаха?

Біологи, допоможіть!
Що це за комаха така:

Стрибає далеко. Крил нема.
Має довжелезні вуса (у чотири-п’ять разів довші за тіло), вигинає і крутить ними як хоче.
Живе у погребі.
Тут сидить на цегляній стіні, можна оцінити розмір.

Доповнено:
Вікіпедисти визначили, це цвіркун «оранжерейний коник» (ще фото).

Рядовка зелена

Мене тут спитали — «як називаються гриби, які ростуть у піску?»

Ну на піску, на піщаних ґрунтах соснових лісів, росте багато всякого :-)
Пролазячи крізь пісок молоде плодове тіло може добряче його набратися, але росте гриб над піском, хоча і може бути прикритий килимком з торішнього листя (хрящ-молочник_справжній, хрящ-молочник оливково-чорний).

А так, щоб у піску, щоб розколупуєш піщаний горбочок, а під ним нормальний гриб — то, мабуть, лише рядовка зелена та її сірувато-синювата родичка.

Зайві коми в CSV

Зустрівся з ситуацією класу «перестаралися з локалізацією».
Підкинули мені лог-файли, про які програма, що їх згенерувала, думала, що вона робить CSV-файли. Воно, може, так би й було, якби не те, що та програма подивилася на мову операційної системи і в числах замість «рухомої крапки» втулила «рухому кому». Результат — такі числа сприймаються скрізь як два незалежних поля з цілими числами.

Пошукати, чи не можна у програмі увімкнути фіксовано використання в числах розділювача-крапки, я порадив, але ж із вже отриманими логами треба щось робити…

Ці файли мають практично вільний формат (рядки мають різну кількість полів), але, на щастя, перед кожним числовим полем йде текстова назва цього поля, маємо набір пар «назва даних», «значення» (значення може бути текстовим, але у випадкові із зайвими комами це не важливо).
Тобто не зустрічаються два цілих числа підряд і якщо вже кома з двох сторін має цифри, то її гарантовано слід замінити крапкою. «Ніколи» — це ніколи там, де є числа з рухомою комою. На початку кожного рядка йде фрагмент фіксованої структури, де є і текстові рядки, і декілька цілих чисел підряд. Рядок розбивається на дві частини, першу слід залишити як була, у другій всі коми, обрамлені цифрами, замінити на крапки.

Тут теж є трішки програмістського щастя — між цим фрагментом і «хвостом» з довільними іменованими даними завжди зустрічається одна й та ж сама послідовність літер, скажімо, vli, що дає можливість не рахувати поля на початку і не сподіватися на фіксовану довжину заголовка, а просто розділити рядок на дві частини по цій комбінації літер.

Все перераховане може зробити коротенький скрипт мовою AWK:

/^.+$/ {
    i = index($0, "vli")
    s0 = substr($0, 1, i)
    s1 = substr($0, 1+i)
    print s0 gensub(/([0-9]),([0-9])/, "\\1.\\2", "g", s1)
}

SEC_ERROR_LIBRARY_FAILURE

Або «як заблокувати собі інтернет за кілька секунд і як повернути його собі назад»
Щоправда, якщо це вперше, то назад не за кілька секунд і якщо є ще з чого погуглити.

Минулого разу я запускав Wireshark давно і у WindowsXP. Пам’яталося, що там запускав його від адміністратора, тому коли в Linux він мені сказав, що на щось там (на dumpcap, але то не важливо) йому не вистачає привілеїв, я не поліз читати, що треба робити (додати себе в групу wireshark), а взяв і запустив його через sudo.

Йому це однак не сподобалося (і правильно!) і він послав мене читати документацію. В інтернеті. Через Firefox. Ну я прочитав, зробив як він просив, захотів ще щось глянути в мережі, запустив Firefox, а він мені і каже оце кляте SEC_ERROR_LIBRARY_FAILURE

Добре, що є ще планшет. Причина хвороби та ліки знайшлися швидко — Firefox з-під sudo-шного Wireshark кілька файлів у мене в ~/.mosilla/ перезаписав від рута. При роботі від звичайного користувача ті файли не читалися і робота далі не йшла.
Ліки:

find ~/.mozilla/firefox/ -user root -print0 | xargs -0 sudo chown fooluser:fooluser

де fooluser — логін необережного користувача.

p.s. Дійсно щось я став необережним поспішайком :-(

Статична матрична клавіатура

Матричні клавіатури, на зразок показаної 12-клавішної, зазвичай опитують «динамічно», за допомогою сканування.

Процес опитування складається з послідовного видавання імпульсів на лінії, наприклад, COL0…COL2 і зчитування стану ліній ROW0…ROW3 та, при виявленні натискання, комбінування номерів чи масок цих ліній у скан-код клавіші. Це вимагає наче небагато команд і часу (та енергії) на їх виконання, але…
Якщо у пристрої вже й так використовується динамічна індикація, то таке опитування клавіатури може використовувати той же цикл і ті ж лінії сканування, що використовуються для індикатора, тому опитування клавіатури практично не вимагає додаткових ресурсів.

При необхідності знати стан кожного ключа незалежно, допускаючи довільне натискання багатьох клавіш, то без сканування не обійтися — але тоді послідовно з кожним ключем потрібно встановити діод.

В інших випадках можна обійтися без сканування, «статично», просто зчитуючи стан входів. Нічого не дається надурняк, тут якась кількість внутрішніх ресурсів мікроконтролера розмінюється на декілька транзисторів-резисторів (втім, сумарною вартістю меншою, ніж одна кнопка). Чи вартий того такий розмін, чи ні — вирішувати розробнику, але спочатку треба з ознайомитися з можливістю » » »

[flagcounter image]