febb: (Default)
[personal profile] febb
Мне нравятся микроконтроллеры фирмы Microchip.
Но это не важно. Для них есть конечно язык C.
Старый добрый и ламповый.

На днях писал программку для часов для 8-битного MCU.
Так вот пришлось задекларировать такую дичь:

static const unsigned short long int inc = 731812ul;

Попробуйте догадаться зачем и что это значит, прежде чем лезть под кат...

Тут как из пестни слова не выкинешь.
Такая декларация означает, что мне нужно 24-битную целую беззнаковую константу,
причем зашитую во флеш-память.
Потому, что у процессора оперативка всего 30 байт! :)
Компилятор объекты типа static const умеет запихивать в код программы.

Теперь что это. Имеется кварц с измеренной частотой 3.58212 Mhz
На нем работает процессор и таймер. Таймер 8-битный с
замедлением 256. А процессор делает такт через каждые 4 осцилляции.
Итого имеем, что таймер переполняется за время: 1/3582120*4*256*256=0.0731812446 sec
Ну для оптимальной точности использую 24-битное целое (max: 16777215)
для счетчика секунд. Тогда инкремент получается 731812, а в секунде 10000000
зеленых попугайчиков.

Такая веселуха.

Profile

febb: (Default)
febb

March 2022

S M T W T F S
  1 2 345
6 7 89 101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 10th, 2026 10:56 am
Powered by Dreamwidth Studios