Работаем на Паскале. Первые шаги.
- Войдите на сайт для отправки комментариев
Весь сознательный трудовой народ работает на Си, лишь еденицы, к которым относятся и я, прозябают на Паскале :)
Прошу помощи в простейшем вопросе. Конфигурацию опишу поподробнее.
На Windows 7 установил старенький mikroPasscal версии 4.6, т.к. под нее нашлась нормальная лечилка.
К компу через USB подключил обычный Arduino UNO с Atmega328P-PU на борту.
Устройство виндой обнаружилось, дрова для него успешно устновились из пакета IDE ARDUINO 1.6.5.
Далее начал ваять классику жанра "Hello, world!" :-)
Получилось следующее:
program UNO_LED_Blinking; begin { Мигание LED на выводе B.5 } DDRB := %00100000; PORTB := %00100000; while(1) do begin PORTB.B5 := not PORTB.B5; Delay_ms(1000); end; end.
Прога успешно скомпилировалась.
Далее, если правильно понимаю, чтобы исполняемый код поместить в UNO для выполнения, в меню "Build" микроПаскаля нужно выбрать "Build+Program".
Выбираю, но в ответ получаю:
"MCU ATMEGA328P is not supported in AVR Flash programmer"
Понятно, что Паскаль староват, поэтому не поддерживается.
И что можно сделать, если новее нет, есть ли какой другой способ засунуть полученный код в UNO ?
> Как залить в уно? да как в любой МК AVR =подключить MISO, MOSI и другие конекторы программатора и залить.
Это что значит, нужно еще какое-то обрудование? У меня есть ПК, оригинальная плата UNO и USB-кабель между ними - этого недостаточно?
PS. Насчет другой среды думать бесполезно, тыщу раз брался за C, и он так и остался загадкой с непонятными закорючками.
Тоже самое будет с Java и другим языками с сишной семантикой.
Думаете, почему я парюсь с Паскалем? Поскольку это единственный язык, который вписывается в мой менталитет.
Ну не рожден я летать на Си-подобных языках, оспаривать прекрасные возможности которых не собираюсь, мой удел - Pascal и только Pascal, мне понятен его синтаксис и семантика. Могла быть еще Modula, но ее никто для Arduaino не делал и делать вряд ли будет.
Господа, поэтому просьба: давайте не будем холиварить и офтопить здесь тему о других языках, а будем обсуждать здесь только о невезучем mikroPascal, ок? :)
Достали вы меня этими Си! Просил же: не холиварить, а давать советы по существу темы.
Ну что ж, сами напросились: этот ваш Си хуже горькой редьки, а придумал его один мудак по фамилии Деннис Ритчи, который был по натуре настолько ленивым, что старался набор на клавиатуре сократить до минимума, в идеале до 2-3-х нажатий. А теперь посмотрите на синтаксис Си - он ничего вам своими закорючками не напоминает? Античеловечный, по сути своей неструктурированный и не-модульный язык со всеми отсюда вытекающими, если вы что-то в этом понимаете. Это потом Borland и другие улучшили его потребительские свойства, но сути это не поменяло. Посмотрите на свой же сишный текст через пару-тройку лет - вы что-то поймете?
Позже положение исправил дедушка Никлаус Вирт своим гениальным Паскалем, но увы, было уже поздно: Си получил распространение по всему миру как короста, и истребить его тепер невозможно. Учтите, Си сочинил какой-то хипстер чисто случайно, мимоходом, качающийся на стуле и ковыряющийся в носу в перерывах между другими делами, у которого не было даже проекта по созданию языка, и операторы он придумывал наобум, по мере потребности, стараясь лишь в одном: чтобы они были покороче. При таком подходе может получиться нормальный язык? Не смешите мои тапочки!
Паскаль же создал профессор с мировым именем и академическим вдумчивым и взвешенным подходом к решению серьезных проектов. Интернет, кстати, тоже придумали не болваны вроде Ритчи, а академическая среда, хотя и в недрах Пентагона.
Всвое время доводилось программировать для 8-битовых процессоров на макроассемблере. Трудоемкость такого программирования для меня была невысокой. Но когда позже попробовал Си, то пришел в ужас от его синтаксиса, и вернулся на асм - для меня он был намного легче. Некоторое время поработал на Turbo Pascal - это была просто сказочная страна! Потом вообще ушел из программирования, из-за более интересных в плане дохода дел и к этому времени все забыл. Ну разве что, кроме begin end и repeat key pressed :)
Теперь снова возобновил занятия, но лишь для души, как хобби, чтобы запрограммировать пару ардуинок. И пытаться теперь, после имеющегося опыта с языками, убедить меня, что Си - это супер, это все равно что ... против ветра. Ну вы поняли.
Поэтому еще раз призываю: давайте прекратим офтопить в теме о Паскале насчет ваших Сей, Жав и прочей живности.
Иначе мы тут дооремся до хрипоты, но все равно ничего друг другу не докажем, потому что вкусы у всех что? Правильно, разные, и их здравомыслящие люди не обсуждают. Есть же другие топики для ваших споров.
По делу, т.е. по теме, конкретно есть что сказать полезное? Исключая "погуглить" и т.п.
PS. Извиняюсь за несколько раздраженный стиль, но просил же неоднократно НЕ офотопить, сами меня же и втянули в совершенно бессмысленный спор.
Эх, где вы раньше только были... Представьте, именно до этого, т.е. до avrdude я и сам дошел, за ночь. Но ни в одном из т.н. "Уроков по Паскалю" ни одна сволочь не упомянула о программном прошивальщике, а мне-то откуда знать с первых дней, как эти IDE внутри устроены, думал, что они интегрированы а IDE настолько, что отдельно не существуют. А поди ж ты, оказывается..
Ну ничего, уже сам разобрался, перебрал уже XLoader, ArduinoUploader, AvrOspII, решил остановится таки на Avrdude, только подберу к нему гуишную морду к нему попроще, потому его огромадные возможности для банальной заливки файла в ардуину и нафиг не нужны.
А что вы намекнули насчет Паскаля на винде, в каком аспекте? Вы где-то видели mikroPascal на Linux? Потому что под Linux хватает Паскалей, но заточенных под AVR, насколько знаю, всего один, от Mikroeletronics.
Буду продолжать свой минидневник по запуску mikroPASCAL, может, пригодится тому, кто впервые столкнется с ним.
И лично мое убеждение, что программирование состоит из правильного алгоритма, а не слов которыми он записан. ИМХО.
"Здесь" уже давно прочитано, только на другом сайте, но это неважно.
Результат: "оно", т.е. ARP Uploader, не работает. Да, я в курсе насчет хитростей со скоростями порта, выставлял их всякие - от 57600 до всяких других, как в настройках компа, так и утилиты. Причем заливка вроде начинается, поскольку начинают помигивать светодиоды RX или TX, но заканчивается всегда одним и тем же - консольным окном с сообщением, что нет синхронизации. К тому же в списке дивайсов там всего 4 МК, проект заброшен и не развивается.
Другие утилиты, которые перебирал, требовали либо .NET, либо Java. Не хотелось захламлять чистый комп этими приблудами, поэтому искал другие прошивальщики, попроще, но пока не нашел, придется апдейтиться.
Насчет правильного алгоритма: разве кто-то об этом спорит?
PASCAL является сугубо процедурным языком, чем он в свое время меня и привлек. Без них ну никак, поскольку без них программа превращается в длиннющее неразборчивое месиво. Ну и строгий контроль типов, и т.д., и т.п. Насчет сравнения конечных результатов между Arduino IDE и mikroPascal: это сделали уже до нас, Паскаль дает в среднем раза в полтора больший код. Пока для меня это не самый существенный фактор, тем более в mikroPascal есть разные оптимизаторы. Но я не против сравнить с вами результаты после того, как подберу для себя наиболее оптимальный прошивальщик.
Но я не против сравнить с вами результаты после того, как подберу для себя наиболее оптимальный прошивальщик.
ну, смотри - тыжепрограммист!
лог прошивки хекса в плату в Дуино ИДЕ
скопируй свой и исполни в командной строке - случится чудо
Щас, минуточку, понаставляю минусов тем, кто опять офтопит своим сраным Си, и приступим к нашему, Паскальному делу.
Хм, странно, нету таких :) Хотя art100 попытался объяснить, что Си тоже процедурный язык... но что ж, простим ему невнимательность и непонимание. Но и объяснять ему его заблуждения тоже не будем, дабы снова не скатываться в паскальной теме в офтоп и холивары.
Итак, поставил на чистую до недавнего "семерку" всякие .NET фреймворки, и после этого крооооохотная такая програмка под типичным скандинавским именем XLoader завелась с полоборота.
И вот с ней меня ждал полный триумф! :) Во-первых, в ее в списках ее дивайсов нашлась Atmega328, которая в UNO, а во-вторых, с ее помощью эта самая UNO наконец прошилась с пол-оборота! "Hello, world" мигает, и теперь можно приступить, наконец, к реализации своих планов.
Я лишь ответил симметрично тем апологетам Си, которые считают Паскаль таким же сраным и первыми подняли здесь вопли о нем. Как говорится - не я первый начал.
И данная тема не о Си, а о Паскале. Не нравится - можете удалить всю мою тему, я не пострадаю, чего не скажешь о тех, которые хотели бы узнать о микроПаскале чуточку больше.
В дальнейшем я никак не буду реагировать на выпады сишников, и отвечать только тем, кого интересует mikroPASCAL.
Спасибо здесь всем тем, кто по мере возможностей пытался помочь с решением проблем, свзанных с прошивкой кода от mikroPASCAL.
Я тебе уже давал совет: http://arduino.ru/forum/programmirovanie/rabotaem-na-paskale-pervye-shagi#comment-142529 но до тебя, видимо, доходит как до жирафа - на третьи сутки.
Кроме того - у тебя набор на клавиатуре опережает мой, и я не успеваю за твоими вбросами. Сказал же - проблему решил, так, как мне нравится - путем наименьших затрат. Ты в самом деле не читаешь чужие посты, только свои?
Ладно, спасибо за внимание, и еще раз спасибо тем, кто по мере сил помогал решить эту проблему.
Итак
Васик веселится
Паскакаль скачет
Посикать получается
http://art1.by/micropascal/
Саахов у тебя получилсоь подломить ;) ВизуалТФТ ? С ВизуалГЛД проблем не увидел. А вот про какие-то не копирование 4-ех цифр не прокатило. :-?
А чехи молодцы стараются. Мнея правдо этот стил кодинга не втыкал раньше но посмотрим. За нескоглко лет ух как маханули на все акутальненькое. Только надо разобраться загручик ардуин херится или нет. Ты прошиванием игрался ?
C:\AVRFLASH\AVRFLASH.exe
Все понятно. Автоматизация летит в тар тарары.
Итак вопрос повторяю.
Товарищ Саахов. Какая у тебя электрическая схема ?
Только надо разобраться загручик ардуин херится или нет.
если заливаешь загрузчиком, то с чего бы ему хериться?
Подчистил эмоции оставил только аналитику.
Аналитика такая какие мы.
Итак проект пытается покрыть несколько популярных микропроцессоров и несколько популярных языков. Код написания ближе к аппаратному чем к человеческому. Проект разворачивается на Windows7 32 бита без проблем за деньги. Проект очень обьемный.
Только надо разобраться загручик ардуин херится или нет.
если заливаешь загрузчиком, то с чего бы ему хериться?
Ты же не балбес а фусы остающиеся враскосяк?
Или я слишком много информации перелопатил и затупил?
Лично тебе если надо выложу и дам ссыль на 300 мегов с кряками и лягушками. Вместе потыкаем. У меня вопрос макетки нет
а херить рабочие ардуины не хочу.
Я пока тут шапргалки себе выкладываю http://art1.by/micropascal/ Да и вообще надо идти машину к зиме готовить. У нас уже рассвело. Что-то на под машиной увижу.
Ты же не балбес а фусы остающиеся враскосяк?
ты с товарищем Сааховым сговорился?
он тоже постоянно повторяет, Как залить в уно?Как залить в уно?
не нужно ничего херить - всё уже похерили за тебя.
кароче.
1. паскальная халабуда творит хекс.
2. заливаешь хекс ардуиновским загрузчиком посредством дудки - в пень AVRFLASH.
2.1 загрузчик предварительно заливаешь Дуино ИДЕ, если голый камень у тебя - очевидно же. фьюзы, все дела автоматом тебе прошьются.
*где логическая ошибка в моём плане?
Ты же не балбес а фусы остающиеся враскосяк?
ты с товарищем Сааховым сговорился?
он тоже постоянно повторяет, Как залить в уно?Как залить в уно?
не нужно ничего херить - всё уже похерили за тебя.
кароче.
1. паскальная халабуда творит хекс.
2. заливаешь хекс ардуиновским загрузчиком посредством дудки - в пень AVRFLASH.
2.1 загрузчик предварительно заливаешь Дуино ИДЕ, если голый камень у тебя - очевидно же. фьюзы, все дела автоматом тебе прошьются.
*где логическая ошибка в моём плане?
Я тоже к внешнему команднострочнгому прошивальщику склоняюсь. Только подзабыл тонкости.
А вспомнил это я откатывал загрузки ардуиновский по быстрому.
Дай дудковскую готовую строку. тут что-то много лишнего
Я тоже к внешнему команднострочнгому прошивальщику склоняюсь. Только подзабыл тонкости.
смотри. врубаешь загрузку скетча в уно.
нужный тебе кусок лога
т.е.
складывай ехе файл конфигурации и ехе дудки и хекс в удобное место и активируй загрузчик и запускай командную строку - всё.
Дай дудковскую готовую строку. тут что-то много лишнего
ничего там лишнего нет - если ехе, конф дудки и хекс в одной папке, то
Спасибо собрал в кучку дудку. Щас выложу.
На сегодня хватит. Смотрите здесь код Бейсик что НЕ важно. Стандартный Блинк работает в древнем микропроцессоре atmega8
http://art1.by/micropascal/
Схема стандартная. Ответ получен самостоятельно.
а, это
1 install arduino ide
зачем?
достаточно скачать в зипе и взять нужное из архива.
а, это
1 install arduino ide
зачем?
достаточно скачать в зипе и взять нужное из архива.
мне лень думать есть там дрова нет -+ 200 метров ардуиноиде сходу расслабляют
уже обед а я до машины не дополз еще
лень сам напиши как считаешь нужным я проверю и на сайтике шпаргалку себе выложу
лень сам напиши как считаешь нужным я проверю и на сайтике шпаргалку себе выложу
нечего там писать - где лежит дудка и папка с дровами, сам знаешь.
http://downloads.arduino.cc/arduino-1.6.5-r5-windows.zip
если тебе нужно прошить загрузчик на голый камень, то так же не нужно ничего инсталлить - распаковываешь зип и юзаешь Дуино ИДЕ. всё.
art100, поясни мне, что здесь происходит?
art100, поясни мне, что здесь происходит?
если похерена ардуина технология надо восстанавливать загрузчик
или не так?
Ну что вы, болезные, тут переполошились? :)) Не получаеца? Ну, так оно должно и быть, ведь это галимый Пасцаль, который вы оплевали со всех своих нашестов. Нафига он вам? Вы же сианисты, его и юзайте, свой непревзойденный Си.
Паскаль будет работать только у тех, кто его любит. Вот поэтому у мну всё работает :)))
:)-
удачи....
Я уже устал. Но еще что-то сообрапжаю. Это у кого не плучается? http://art1.by/micropascal/
А теперь по делу. Удалось подломить ВизуалТФТ ? У вас схема платка какая?
если похерена ардуина технология надо восстанавливать загрузчик
или не так?
эта строка записывает хекс загрузчика с помощью загрузчика, который запущен из Boot Flash Section в Application Flash Section, т.е. происходит запись второй копии загрузчика в область Application Flash Section - и, оно возможно как-то будет работать, но зачем.
Ну что вы, болезные, тут переполошились? :)) Не получаеца? Ну, так оно должно и быть, ведь это галимый Пасцаль, который вы оплевали со всех своих нашестов. Нафига он вам? Вы же сианисты, его и юзайте, свой непревзойденный Си.
Паскаль будет работать только у тех, кто его любит. Вот поэтому у мну всё работает :)))
угомонись - мы с загрузчиком хекса разбираемся. загрузчику пофиг - паскаль-маскаль-си.
достаточно этой строки.
если не работает, то подключаешь программатор к Атмега8 и заливаешь загрузчик посредством Дуино ИДЕ, выбрав плату Arduino NG or older и МК Атмега8 "Записать загрузчик" - всё.
Тоже начал осваивать этот супер-Паскаль, кое-что уже получается, но вот с ШИМ засада.
Непонятно, как указывать нужный пин для вывода ШИМ.
Если в Си все просто и понятно, даже инициализации не требуется -
analogWrite(pin, value)
то в хелпе Паскаля идет отдельно инициализация ШИМ и отдельно вывод данных
procedure PWM2_Init(wave_mode : byte; prescaler : byte; inverted : byte; duty : byte);
procedure PWM2_Set_Duty(duty : byte);
но. пин нигде не указывается. Как же так? А если надо, как быть?
Это не СИ, это специально для ардуино упрощенный вариант, ищи по словам ШИМ atmega pwm avr и т.п., а не arduino, и найдешь на СИ.
Shurik, то что вам в СИ всё понятно заслуга совсем не СИ, а ардуиновской функции analogWrite . теоритически ничего не мешает написать на Паскале точно такую же. Функция PWM2 делает нечто аналогичное, но не настолько просто и удобно как ардуиновская. Из названия следует что она под таймер2, у которого выходы на 3 и 11 пин ардуино. Выводить на один или два канала выбирается в другой функции. http://www.mikroe.com/download/eng/documents/compilers/mikropascal/pro/a...
Извиняюсь за мою терминологию, но эта ардуиновская среда очень напоминает Си.
Просмотрел эту страницку, впрочем ее видел и раньше, прямо в хелпе Паскаля, но все равно не понял, как мне выбрать конкретный вывод для ШИМ.
Задумка выводить цифровые сигналы на линии 1-6, а 7-й использовать как вывод ШИМ, и мой конкретный фрагмент инициализации линий порта B:
DDB0_bit := 0; // вход
DDB3_bit := 1; // выход
DDB4_bit := 1; // выход
DDB5_bit := 1; // выход
DDB6_bit := 1; // выход
DDRB.7 := 1; // выход ШИМ
сама инициализация ШИМ
PWM2_INIT(_PWM2_FAST_MODE,_PWM2_PRESCALER_1024,_PWM2_NON_INVERTED,0);
и попытка вывода ШИМ
PWM2_set_duty(100);
И вот как ни бился, ШИМ почему-то выводится только на DDB3
Где же я ошибаюсь??
И вот как ни бился, ШИМ почему-то выводится только на DDB3
Выходы таймера2 называются OC2A и OC2B, зайдите сюда, найдите их на микросхеме. Думаю после этого станет понятно чему они не там, где вам этого хочется. Произвольно вывод выбрать нельзя. Нужно выбрать таймер, затем нужный выход функциями PWMx_Init PWM_xn_Init
dimax: спасибо за столь дельные советы! Кажется, кое-что стало проясняться ;)
Только удивляет, почему в "сишном" операторе analogWrite(pin, value) синтаксического ограничения на pin вроде нету, задавай какой-хочешь.
Или в случае неправильного выбора pin будет выдана ошибка наподобие runtime error?
Впрочем, меня больше интересует этот пупер-Паскаль. Я использую старую версию 4.60, для более новой ключиков увы, не нашлось.
Так вот в этой версии инструкции PWMx_Init и PWM_xn_Init к сожалению, отсуствуют, вероятно, они появились в более свежих версиях.
Для 4.60 есть упомянутая PWM2_INIT(_PWM2_FAST_MODE,_PWM2_PRESCALER,_PWM2_NON_INVERTED,0);
в которой, как уже говорилось, выбор нужного pin или нужного выхода таймера не задается.
И как тут быть?
Для 4.60 есть упомянутая PWM2_INIT(_PWM2_FAST_MODE,_PWM2_PRESCALER,_PWM2_NON_INVERTED,0);
в которой, как уже говорилось, выбор нужного pin или нужного выхода таймера не задается.
И как тут быть?
Приехали... все давно сидят на 6.1.0, качайте и ставьте актуальный компилятор http://www.mikroe.com/mikropascal/avr/
Эх, я бы тоже перешел бы, если бы нашел кейген или ключик к 6-й. Однако почти месяц усиленных поисков не дал никакого улова.
Может, вы подскажите эти злачные места? ;)
Shurik, я кажется этим лечил от жадности https://yadi.sk/d/Ah3PVwZr6vcuF
Вот здорово! Сейчас испробую :)
Ура - вылечилось! :)) Спасибо тебе огромное, dimax!
А ты, похоже, один здесь Паскалем увлекаешься?
Что-то не очень жалуют его здесь, если посмотреть по отдельным возгласам.
Shurik, увы. И я не увлекаюсь, только на СИ пишу, в паскале почти полный ноль, около 2х лет назад я присматривался на чем учиться программировать мк, вариантов было много, поэтому бегло со всеми познакомился, (ставил софт, пробовал примеры) потом понял что большинство пишут либо на асме либо на СИ :) Ассемблер показался сложноват, поэтому остановился на СИ.
Что-то не очень жалуют его здесь, если посмотреть по отдельным возгласам.
Почитайте статью. Ну, или, хотя бы, заголовок прочтите: http://lib.ru/ANEKDOTY/non_pas.txt
Просмотрел по диагонали. Но это годится как юмор, а не как серьезный анализ.
К тому же я не настоящий программист, и мне возможностей Паскаля для нехитрых домашних поделок вполне хватит.
Тем более что в школе приучили к Паскалю, и переучиваться (см. строку выше) нет никакого смысла.
"я не настоящий программист" и "в школе паскаль учили" - отмазки такие отмазки :)
Я думаю тут большинство не настоящих программистов, для которых это просто хобби. В том числе и я. Но если тебе действительно интересно заниматься любимым хобби - всегда вникнешь и изучишь что-то новое.
Мне когда надо было, сам изучал HTML, PHP, JavaScript, SQL (ну ладно, это на работе пригодилось, хотя опять же - я не программист). Но когда мне было действительно интересно для себя (написание аддонов для космического симулятора), я освоил довольно редкий скриптовый язык LUA.
это годится как юмор, а не как серьезный анализ.
Это в Вас говорит российская привычка - "научное обязано быть заумным". А когда человек излагает не заумно, то это "юмор". У нас и закон Паркинсона юмором считают, и принцип Питера - а это серьёзные научные работы, просто изложены живым языком, а не привычной нам нудятиной.
Была в свое время книга по Юниксу. Автора не помню, переводчиком был Владас Леонас. Так вот Владас тогда притащил мне два листочка, на мол, почитай. Это оказалось предисловие редактора перевода (тоже не помню, кто был). И этот гениальный человек написал (никогда не забуду): "Книга написана живым, образным языком, иногда в форме прямого обращения к читателю. У нас с переводчиком неоднократно возникало желание как-то пригладить текст и привести его к нормам и стандартам отечественной технической литературы, но мы не стали этого делать, чтобы не превращать стимулирующее чтение в жвачку".
По-моему. в этой фразе просто приговор стилистике нашей технической литературы.
Закон Паркинсона читал, согласен, серьезное исследование, хотя и в виде юмора. И даже помню одну из заключительных фраз.
Когда я разыскивал лечилку, обратил внимание, что любители Паскаля существуют, и они даже целую теорию подводят о его тотальном преимуществе.
Но я не восхвалю Паскаль и не противопоставляю его другим языкам, просто на начальном этапе он мне удобнее, а там. как говорится, посмотрим ;)
Случайно набрел на форум и специально зарегистрировался чтобы поддержать Shurik насчет того, что
"Си хуже горькой редьки, а придумал его один мудак по фамилии Деннис Ритчи"
Совершенно сгласен. По сравнению с Паскалем, СИ - полное говно.
По сравнению с Паскалем, СИ - полное говно.
Вброс засчитан!
Предлагаю перейти к обсуждению темы вентиллятора (само дерьмо неинтересно). Как будем делать вентиллятор? DC/AC? Как мощностью управлять? На какой Ардуине, кстати?