Программирование микроконтроллеров....
Nov. 3rd, 2018 08:35 pmМне нравятся микроконтроллеры фирмы 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
зеленых попугайчиков.
Такая веселуха.
Но это не важно. Для них есть конечно язык 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
зеленых попугайчиков.
Такая веселуха.