November 13th, 2014

компьютеры

Порисовал под ATMega

Очень интересный экспириенс, мои дорогие сэры. Давненько не брал я в руки голый C.

В-общем, пришёл к мнению, что чем тупее код, тем лучше он работает на таких вот вещах с ограниченными ресурсами. Это я на рабочем компьютере устраиваю себе ООП с блекджеком и шлюхами методами, свойствами, и прочие изящества, а тут старый добрый Сишный struct -- предел мечтаний.

Указатели хоть есть, и на том спасибо -- можно делать сделать связный список, даже закольцованный (как мне было надо).

Ещё интереснее будет, когда я буду пробовать сделать многозадачность без многопоточности. Тут же нет операционной системы, нет диспетчера задач и прочего. Особо упоротые, правда, пишут свою микроядерную ОС или ставят FreeRTOS, но, знаете, на двух килобайтах оперативной памяти (ATMega328P) особенно не разбежишься; да и написать свою ОС... я не настолько хорошо в эти шашки играю. Так что надо будет писать цикл, в котором все вещи делаются одновременно.

Также вылезла куча неожиданных вещей.

В частности, я хочу управлять выводом ШИМ, которых на этом чипе шесть штук. Работают они на частоте... разной, в зависимости от вывода. Ибо там внутри три таймера с разной тактовой частотой. Эту частоту менять нельзя, но можно менять делитель частоты. Начинаешь крутить делитель частоты с целью изменить частоты работы ШИМ -- ВНЕЗАПНО, замедляется течение времени, и идёт неправильный отсчёт микросекунд. Потому что от того же таймера, чей делитель крутишь, ВНЕЗАПНО, отсчёт микросекунд и работает.

В-общем, не соскучишься. Интересно.