Падіння напруги на кабелі

Стало цікаво, як спадає напруга на кабелі, коли навантаження не зібрано все в одній точці на кінці, а розподілено рівномірно. Скажімо, декілька десятків споживачів із приблизно однаковим споживанням на приблизно рівних відстанях. Спочатку напруга спадатиме швидше, бо підключено більше споживачів, потім, ближче до кінця кабелю, швидкість спадання зменшиться. Але якими будуть загальні втрати напруги?
От якщо на кінці кабелю із загальним опором R висить навантаження зі споживанням струму I, то напруга впаде на величину IR. А що буде при рівномірному підключенні?
Дивится формули і графіки » » »

LPUART? USART1? обидва і в одну прошивку!

Є в мікроконтролерах STM32L0x така приємна штука, як LPUART. Може працювати від LSE — 32768Hz кварца коли мікроконтролер спить і піднімати його по приходу байта. Ну там ще дрібно-дробовий дільник, який дозволяє витягувати доволі високі частоти обміну від такого кварца, але то для мене вже не так важливо було. Просто є за оптроном ще один мікроконтролер, який періодично посилає інформацію про стан того, що він контролює. А на цій стороні бажано побільше спати.

У пристрої і STM32L011K вистачить, програма ледь перевалює за 8 кілобайт флеша. На нього і розраховував. Але на малих кількостях ціноутворення штука малопередбачувана, STM32L051K8 може бути суттєво дешевшим за STM32L011K4. Тому хочеться, щоб можна було поставити чи те, чи те.
Все було б добре, але «світ дуже недосконалий»© Лис з «Маленького принца». LPUART не потрапив на ніжки в 32-виводному корпусі STM32L051K. Мікроконтролери L051 мають можливість незалежної роботи від LSE є і для USART1, USART2. Але ж (ой правий Лис, ой правий!) L011 спрощений, USART2 у нього є, але він так не вміє.

Зрештою, знайшлася ніжка (PB7), де сидить LPUART_RX для L011K і USART1_RX для L051K. Все добре.

Тільки от прошивка має бути єдина, щоб той, хто прошиватиме плати, не вдивлявся у маркування мікроконтролера. Ну та до цього не звикати, все одно під одну прошивку маю реально п’ять різних варіантів виконання пристрою (на 4 різних платах). Плати візуально відрізняються відчутно, але однак простіше віддати одну прошивку. Код плати задано підключенням двох ніжок мікроконтролера на VCC/GND і ще один резистор каже «тут запаяно лише ту малу частину, яка спільна для всіх плат, це спрощений п’ятий варіант».

Вид мікроконтролера L011 («категорія 1») чи L051 («категорія 3») можна прочитати з ідентифікаційного регістра

// cat1 (L011) or cat3 (L051)
bool is_mcu_cat1()
{
    return (DBGMCU->IDCODE & 0xFFF) == 0x457;
}

і далі все просто. Відмінності ініціалізації LPUART і USART1 невеликі. Ініціалізувати і дозвіл переривань лише для одного, та ще ніжку треба увімкнути на потрібний номер альтернативної функції.

Два обробники переривань викликають одну й ту ж процедуру обробки

extern "C" void USART1_IRQHandler(void)
{
    device.octrl.byte_received(USART1->RDR);
}

extern "C" void LPUART1_IRQHandler(void)
{
    device.octrl.byte_received(LPUART1->RDR);
}

До речі, гарна штука LTO (link-time optimization). Ця byte_received() в іншому файлі, але воно чудово проінлайнило функцію в обидва обробники.

Писачок — робимо самі 2

Наближається Великдень, а разом з ним і традиційне виготовлення писанок. Ну а для розписування потрібен відповідний інструмент — писачок, що його, залежно від регіону, називають ще писальце або кистка.

Так починався опублікований мною 7 років тому опис-відеоурок того, як можна самостійно зробити писачок. І зараз такий самий час.

Писачки робив тоді так, як було зручно мені, з урахуванням матеріалів та інструментів, що завжди під рукою і я навіть не задумувався, що їх може не бути 🙂 (хтось із моїх дітей свого часу дуже здивувався, виявивши, що не у всіх вдома є пінцет і кусачки). Але цьогоріч мене в коментарях на youtube спитали, чи можна обійтися без паяльника.

Звичайно можна, переважна більшість писачків, зроблених за всю історію, обійшлися без паяльника. Трохи подумавши і роздивившись інші писачки, наводжу два варіанти.
Кінчик конуса обов’язково підрівняти надфілем чи точильним каменем. Тут в обох варантах я цього не робив, оскільки це лише демонстрація ідеї.
Далі: опис і фото двох варіантів виготовлення писачка без паяльника » » »

Міні-комп’ютер розміром з монету (конкурс)

Конкурс, у якому можна виграти одну з трьох плат VoCore v1.0 з OpenWRT/Linux:

Плата VoCore v1.0

  • Процесор RT5350, 360 MHz + память 32 МБ SDRAM
  • WiFi на борту
  • OpenWRT/LEDE Linux
  • Розміри 25.6 x 25.6 mm – приблизно як ураїнська монета 1 гривня
  • Повністю відкритий код та схема

Треба лише описати — що хочеш на цій платі зробити, розмір і можливості плати такі, що можна зробити багато всього.
З надісланого відберуть 10% найцікавіших заявок, тоді серед них розіграють три плати, по Україні відправлять «Новою Поштою» за власний рахунок.

Детальніше у фейсбуці, в оголошенні від Володимира Шиманського, співзасновника Blynk IoT Platform.

p.s. Сам я участі в конкурсі не беру, бо то треба спочатку навчитися краще керувати своїм часом, вивільнити його трохи, і лише затим придумати, що ж я хочу зробити. За місяць я не вкладуся 😀

“B” and “not-B” AVRs

Від публікації огляду відмінностей між «A» і «не-A»-версіями мікроконтролерів AVR пройшло чимало часу і вже давно можна порівнювати «B»-версії. Таких мікроконтролерів ще небагато, але є на що подивитися. Errata на кристали я ще не вивчав, як там буде що важливе — доповню пізніше.

Раніше я вже коротко писав про ATmega48PB…168PB. ATmega328PB і ATmega324PB просунулися набагато далі, це вже практично нові мікроконтролери, сумісні по виводах з «not-B». Для всіх цих мікроконтролерів є спільний, з першого погляду непомітний, але важливий момент — DIP-корпусів більше нема. Тому тим, хто розраховує лише на них, далі можна не читати 😉

З точки зору програматора змінилися лише сигнатури (ідентифікатри) мікроконтролерів та додався один fuse в ATmega328PB і ATmega324PB. Він забороняє нову функцію (CFD, див. нижче) і з заводу запрограмований. Якщо його не треба міняти і якщо можна змусити програматор проігнорувати сигнатуру, то всі ці кристали можна прошивати як відповідні PA. Втім, в avreal ці мікроконтролери вже додано, а для всіх іншіх програматори це, думаю, зроблено давно 🙂

Можливо, цей список і не збільшуватиметься вже, бо анонсовано геть нові ATmega3208/3209/4808/4809 із суттєво збільшеним обсягом оперативної пам’яті (натомість зменшеною EEPROM) та розширеною периферією.

Отже, відмінності… » » »

AVReAl update — 1.29r1

Вийшла нова версія програматора avreal — v1.29r1 (Sun 2018-02-11).

  • Додано підтримку:
    • Attiny441, ATtiny841
    • ATmega48PB, ATmega88PB, ATmega168PB, ATmega328PB
    • ATmega324PB
  • Файл із серійним номером пристрою тепер може містити шістнадцяткове число з префіксом 0x.
  • Виправлено внесену в 1.29r0 помилку, через яку символьні масиви довідки по ключу -h стали задовгими й обрізалися під час виводу функцією vsnprintf(). Завдяки тому, що вони обрізалися, avreal не падав так гучно, як то робив avr-ld ;-).

Парасолька і болтик М8

Парасольки я ремонтую. Поки це більш-менш можливо. Більшість типових проблем швидше полагодити, ніж сходити по нову.

Оце й сьогодні всівся одній калічній вправляти «суглоб» — трубочка-заклепка протерлася і випала. Слідом за нею випала і петелька, яка тримала тягу. Дві металеві скріпки (звичайна для петельки і велика для скоби замість заклепки), кусачки, надфіль — затерти гострі краї на місці відкусювання, щоб не чіплялося ні за що, плоскогубці-качконоси і звичайні. Кілька хвилин часу. І ще побігає.

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

А ця відремонтувалася вкручуванням чесного болта M8. Трохи вкороченого, потрібної довжини вдома не знайшлося.


Ремонт парасольки болтом М8Ремонт парасольки болтом М8

avr-ld buffer overflow

Дійсно прикра помилка в avr-ld (binutils-avr 2.25) — та, що спонукала мене до перевірки використання Raspberry Pi як комп’ютера для роботи, — виявилася доволі цікавою.

Почала вивалюватися вона у мене доволі давно, але я помилково вважав, що вона притаманна 64-бітній версії Ubuntu 16.04, бо на роботі в 32-бітній все працювало. Думав, що це якісь проблеми невраховування розмірів чи співвідношення розмірів змінних на зразок «подаруночка від FTDI». Чесно кажучи, у повідомлення не особливо і вчитувався — «та хай, це по роботі, то на роботі й зберу» і вдома більше не запускав аж до того, як нещодавно перезібрати знадобилося негайно, бо це зупиняло термінову роботу. Тоді ж ото зібрав на Raspberry й написав про все це.

Ну й на ключову фразу *** buffer overflow detected *** Іван у коментарях пояснив, як із цим можна боротися.
Докладніше читайте » » »

Відвідуваність статей Вікіпедії

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

Всі три різновиди графіків відвідуваності

Умовно їх можна назвати «новинний», «святковий» і «студентський». Далі про них докладніше » » »

Дрібна програмована логіка

Дивлюся оце на схему адаптера для програмування мікроконтролерів на мікросхемі FT2232 з перемиканням між JTAG і SWD і вкотре жалкую про передчасну смерть дрібної програмованої логіки. Дрібної не в сенсі корпусу ультра-нано-wlcsp, а в сенсі невеликої кількості логічних елементів.

Так, у продавців ще зустрічаються (вже Мікрочіпівські) ATF16V8/ATF22V10, але то старі серії швидше на підтримку старого обладнання, ніж на якісь нові розробки, бо Cypress і TI від різних PALCE вже відмовилися. І однак — ціна ATF16V8 штучно на DigiKey мало відрізняється від сумарної вартості (там же і теж штучно) тих трьох корпусів дрібної логіки, що стоять на JTAG/SWD-адаптері.

Так, PLD-шка ще потребувала б програмування, але при сучасних технологіях це не потребувало б 12-вольтової напруги і робилося б за долі секунди під час тестування зібраної плати. Ну хай тут, в адаптері, щось зовсім просте, навіть без тригерів. Але, як на мене, ще досить задач, де підійшло б щось на зразок (теж вже застарілої) EPM3032, але в корпусі TSSOP20…28 з програмуванням вбудованої EEPROM простим поширеним інтерфейсом на зразок I2C.

[flagcounter image]