фЕБЪ (febb) wrote,
фЕБЪ
febb

Categories:

Программирование микроконтроллеров....

Мне нравятся микроконтроллеры фирмы 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
зеленых попугайчиков.

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

Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 7 comments