Показаны сообщения с ярлыком язык c. Показать все сообщения
Показаны сообщения с ярлыком язык c. Показать все сообщения

четверг, 16 февраля 2017 г.

Про mikroPascal еще раз

Вчера наткнулся на довольно старую, но интересную статью про mikroPasal. Никакой нумерологии и мистики, но к использованию mP пришел параллельно с ее автором. По той же самой причине, что и у него: «Но я не знаю Си! Вообще. Всю жизнь писал только на Pascal/Delphi. Учить язык? Вы пробовали учить язык, когда вам более 40 лет возраста? Когда работа, семья и минимум свободного времени. Когда ум уже не так остр, как в молодости. Да и затевать все это ради одного проект смысла не более, чем учиться на права и покупать машину ради поездки в булочную в соседнем доме». Только в моем случае добавилось изучение PL/1 еще в институте и программирования i8080 в машинных кодах (ручное ассемблирование) тогда же. А кроме того, я не айтишник/программист по профессии. Да, я могу разобрать код на C/C++, но, как оказалось, мне куда проще написать свою версию на mP, чем заново «поменять кожу» в 50 с гаком лет. В частности, для меня оказалось проще и правильнее (да и интереснее) написать нормальную библиотеку LCD/OLED для mikroPascal, чем переносить «хромой» (по причине отвратительно работающего кода встроенной в mikroPascal библиотеки Lcd) проект с отлаженным кодом из mikroPascal на C/C++ в Atmel Studio (я даже собирался это делать).

PS. Я прекрасно понимаю: знание и применение C/C++ дает бОльшую мобильность при выборе/смене аппаратной платформы за счет повторного использования кода, но, повторюсь, это несколько не мой случай. Меня, как оказалось, устраивают и те платформы, что имеются в списке поддерживаемых MikroE. Опять же, с повторным использованием кода тут тоже всё Ок.

среда, 21 сентября 2016 г.

Снова о библиотеке C для символьного LCD

На четвёртый день Зоркий Сокол заметил, что одной стены нет...

Пришел к «очень неожиданному» предварительному решению, что проще всего, по-видимому, будет модифицировать под неиспользуемый вывод R/W код библиотеки hd44780.c из AVR-тулчейна Atmel Studio. Это должно быть существенно проще, чем искать и разбираться в т.н. «интеллектуальной собственности», повсеместно валяющейся в Интернете. А заодно и крайне полезные штудии будут, как раз для начала работы с Си.


воскресенье, 31 июля 2016 г.

Библиотека C для символьного LCD

Первым делом отправился на поиски приличной сишной библиотеки под LCD1602 с заземленным R/W (таков legacy дизайн у железок). Подсказали мне библиотечку flex_lcd, вот отсюда. Сделана под PIC, но проблем с применением на AVR быть не должно.

вторник, 26 июля 2016 г.

Про используемую платформу

После отпуска начну переезжать с mP на C (Atmel Studio AVR тулчейном – т.е. бывший WinAVR). Могу сказать mP заслуженнон спасибо, т.к. смог восстановить навыки и освоить тему в комфортном окружении, но... З@ебало!



Т.е. при прямом присвоении переменной компилятор показывает нам х@й, а при присвоении того же значения через промежуточную константу всё становится Ок. Ничего об этом в документации нет, поскольку это было бы странно.

Компилятор с нюансами ошибками такого рода – это пи@дец. И дело тут не в правильности стилей программирования, как мне кажется.


Так и получается, что для дальнейшего использования mP малопригоден, ибо: 1) слишком велика избыточность создаваемого кода, 2) слишком дорого порой обходятся встречающиеся в компиляторе странности и «ашипки», 3) слишком низкое качество сопровождения и поддержки со стороны mikroE (как говорится, «ниже мышиной жопы» ©). Практически ничего из найденного и отправленного в саппорт я в исправлениях так пока и не увидел – и, вероятно, не увижу, т.к. на сопровождение mP для AVR они, похоже, практически полностью «забили».

понедельник, 23 ноября 2015 г.

Библиотека LCD 4/8 бит с контролем готовности

После тщетных поисков библиотеки LCD 4/8 бит с контролем готовности под AVR (причем, если применительно к mikroPascal ее отсутствие можно понять и объяснить, то применительно к C таковое явление простому объяснению не поддается), понял, что писать эту библиотеку придется самому. Причина проста: общеизвестная глючность (при выводе строковых переменных и констант) и заторможенность библиотеки LCD, входящей в состав mikroPascal (сигнальная линия R/W должна посажена на землю/ноль, да-да – всё реализовано по тайм-аутам). А мне необходимо выжать из LCD-дисплеев их максимально возможное быстродействие. Для чего требуется отрабатывать команды управления, вывода и адресации не по задержкам, а по флагу занятости контроллера дисплея (BF/D7).

ps. Кстати, если вдруг у кого есть таковая на «сях» (C) – буду рад ее получить. Портировать библиотеку с C на mikroPascal – это далеко не такая геморройная задача, как разработка всей библиотеки с нуля.

воскресенье, 22 ноября 2015 г.

И опять про C и Pascal

«C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg»¹ © Bjarne Stroustrup

¹) «Си» позволяет очень просто выстрелить себе в ногу. На «Си++» сделать это сложнее, но когда удается, то ногу отрывает полностью


четверг, 15 октября 2015 г.

Пожалуй, пришла пора...


Пожалуй, пришла пора начать освоение C и Atmel Studio, тем более, что под Studio уже куплен отладчик-программатор Atmel ICE. Хотя какое-то время, вероятно, буду продолжать параллельно использовать mikroPascal – для сопровождения тех уже готовых проектов, чьи прошивки были на нём написаны.

среда, 16 сентября 2015 г.

Наблюдения про mikroPascal

Задаешь какой-либо вопрос по библиотечным и встроенным функциям mP AVR на форуме MikroE, и тут же на тебя налетает рой советчиков с рекомендациями для новичка наперевес. При этом, несмотря на стереотипы, сейчас mP уже стал вполне пригодной средой. Переход на C, тем не менее, представляется мне неизбежным. Причина проста: больше библиотек, хороших (и не очень) и разных. А это очень важный нюанс при работе с периферией, особенно с графическими дисплеями. Хотя должен сказать, что при определенной программистской изворотливости даже самые обычные (растровые) алфавитно-цифровые дисплеи (LCD1602 и подобные) также позволяют вполне успешно решать вопросы большей наглядности индикации. Даже несмотря на их далеко не самое лучшее быстродействие.