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
зеленых попугайчиков.

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

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

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 05:58 am
Powered by Dreamwidth Studios