[personal profile] ex0_planet
Меня тут жизнь заставила потрогать компилятор XC8 от майкрочипа для мелких контроллеров. Это, я вам скажу, целый отдельный мир в себе. Зато я теперь понимаю, откуда на форумах тонны говнокода с двоичными или шестнадцатиричными константами, а разбуженный внезапно ночью пикоман будет бормотать что-то типа "0xA8 в регистр 0xBB включает режим синхронизации SPI по переднему фронту". Они, мать их, похоже что учат эти константы, потому что иначе никак.

Трудности начинаются с самого начала — с доступа к периферийным регистрам. Суть в том, что нормальные люди не пытаются изобретать колёса от велосипеда и тупо перечисляют в заголовочных файлах битовые маски и смещения, что приводит к самоочевидному коду типа "CTRL_A = (1<<OPTION1) | (1<<OPTION2);"

Но это нормальные люди. Пикоманы же пытаются сделать "удобно" и делают промежуточные структуры с битовыми полями. Тот же код будет выглядеть как "CTRL_A.option1=1; CTRL_A.option2=1;", но при этом, как всегда, есть нюанс — каждый бит будет ставиться отдельной инструкцией. Семь бит — семь команд.

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

Альтернатива? Конечно есть. Можно записать целиком слово в регистр, для этого надо посмотреть в даташит, выяснить позицию нужных битов, просуммировать это всё у себя в голове и написать простую и понятную команду:
CTRL_A = 0xA6;

Ну, или, для эстетов
CTRL_A = 0b00100010;


Пикоманы, как есть пикоманы.

Date: 2021-06-21 07:48 am (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Дебильные сокращения используются людьми во всех областях и бухгалтер скажет "Это надо заносить не в 1038, а в 5601", и адвокаты говорят про "231 с подозрением на 238", и менеджеры "Перенсём бюджет с RTM на FRT, потому что его надо закончить через полгода".

Profile

ex0_planet

April 2023

S M T W T F S
      1
234567 8
910111213 1415
16171819202122
23242526272829
30      

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 25th, 2026 03:15 pm
Powered by Dreamwidth Studios