Программирование микроконтроллера в Delphi.
Я искал некоторую информацию о программировании микроконтроллеров, но информация, которую я нахожу, либо выше моего понимания, либо, похоже, не существует. Я ищу что-то более легкое для переваривания! Я относительно новичок в программировании и пришел из SQL DBA и решил, что для меня будет быстрее изучить некоторые основы программирования, а затем выучить Delphi, чем внести некоторые изменения, реализованные с помощью безумной системы заметок об изменении дизайна моей компании! После пары лет программирования на Delphi я могу справляться с написанием приложений для баз данных без особых усилий, и я хочу иметь возможность двигаться дальше. Мы используем микроконтроллеры PIC на наших печатных платах; в основном семейство PIC18F. Программное обеспечение PICS написано на C, но есть значения параметров, которые записываются приложением Delphi, взаимодействующим с PIC с помощью элемента управления ActiveX. По сути, база данных SQL содержит информацию о параметрах, клиентское приложение Delphi извлекает эти значения, передает их элементу управления ActiveX, который выполняет все низкоуровневые операции на PIC. Например, внутренняя EEPROM будет иметь карту, и в любом конкретном адресе будет храниться значение для включения или выключения чего-либо или хранения целочисленного значения и т. д. Я получил комплект MPLAB, в котором есть устройство ICD2, которое может считывать и записать значения во внутреннюю EEPROM, и я понимаю, как изменить эти шестнадцатеричные значения с помощью программного обеспечения MPLAB. Я надеюсь не изучать программирование встроенных микроконтроллеров; скорее, я могу написать приложение Delphi, которое будет делать что-то похожее на программное обеспечение MPLAB. Например, чтение и запись значений по определенным адресам памяти в EEPROM. Я был бы очень признателен, если бы кто-нибудь мог указать мне правильное направление любых библиотек или компонентов, которые могут уже существовать для преодоления этого разрыва между простым приложением формы Delphi и записью PIC EEPROM низкого уровня. Я сомневаюсь, что такой простой интерфейс существует, но я подумал, что спрошу. Подводя итог, я хочу иметь простое приложение формы с некоторыми полями редактирования, которые пользователь вводит или выбирает из раскрывающихся списков, значениями параметров, нажимает кнопку и назначает эти значения параметров конкретным адресам памяти EEPROM. Спасибо за чтение, и любые комментарии будут с благодарностью получены.
Чего именно вы намеревались добиться, сделав интерфейс системы высокого уровня (ПК) таким низкоуровневым по своей природе? (Запись напрямую в адреса EEPROM.) Обычный метод заключается в том, чтобы абстрагироваться от этих деталей и предоставить высокоуровневый интерфейс, адаптированный к реальной функциональности (включение светодиода, выключение светодиода и т. д. и т. д.). — Warren P
icd 2 использует usb, а режим скрытия USB обсуждался в [ссылка]stackoverflow.com/questions/6271421/… . — Hendra
Кстати, вы сказали: «. Программное обеспечение PICS написано на C, но есть значения параметров, которые записываются приложением Delphi, которое взаимодействует с PIC с помощью элемента управления ActiveX». Если это так, вы можете повторно использовать элемент управления ActiveX (т. е. компонент -> импортировать компонент ActiveX из Delphi iDE) и использовать его в своем приложении Delphi. Я предполагаю, что низкоуровневый коммуникационный материал был обработан элементом управления ActiveX? — Hendra
Существует пример проекта с использованием Delphi и 18f4550 pic для сбора данных через usb [ссылка]sixca.com/eng/articles/usbdaq/index.html[/ссылка] Думаю, это может вас заинтересовать. — Hendra
Разработка программ для микроконтроллеров PIC в среде Delphi/Pascal ABC.net
Решил я недавно в свободное время создать программу которая позволяла бы отлаживать логику кода в Delphi , а потом это транслировать к Си код и прошивать для микроконтроллеры.
На настоящее времяпроект позволяет в несколько строчек кода на Паскале запустить контроллер и подать напряжение на любую ножку. Также поддерживаются таймеры. На выходе получается код Си , который можено запусть, проверить, допустим что светодиод мигает и далее уже писать проект на Си. В перспективе на Паскале можно будет писать и другие части программы. Пока поддерживается только один вид контроллеров, но будут добавленны и другие. Уже даже в такой сырой версии проект может сэкономить значительное время на настройку контроллеров и таймеров.
Код получается намного короче.
Например вот ниже код для мигания светодиодами. В оригинале он намного длиннее.
В принципе по длинне кода примерно как у Arduino получилось. Сейчас платформа PIC в глубоком упадке, а была бы возможность писать короче код, глядишь бы и реанимировалась бы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
uses usercode; uses piclibrary in '../API/piclibrary.pas'; begin Cpu := PIC18F4520; //Модель СPU Quartz := 8; //Частота кварца в МГц,INTERAL -внутренний. YesCompile := True; //Компилируем C- программу RealTime := True; //Такие же времена ,как на контроллере. SetAsIn(RF); SetAsIn(RA+2); //Установить порт RA2 как входной. SetAsIn(RA+5); //SetTimer(1,9,nil); InitCPU; SetTimer(1,5000000,OnTimer1); SetTimer(2,3000*Millisecond,OnTimer2); Run(Start); end.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
unit usercode; interface uses piclibrary in '../API/piclibrary.pas'; const LED_RED = RC + 0; LED_GRN = RC + 1; var RedState : byte; GreenState : byte; procedure Start; procedure OnTimer1; procedure OnTimer2; implementation procedure Start; begin RedState := 0; GreenState := 0; end; procedure OnTimer1; begin SetBit(LED_RED,RedState); RedState := RedState xor 1; end; procedure OnTimer2; begin SetBit(LED_GRN,GreenState); GreenState := GreenState xor 1; end; begin end.
Программирование микроконтроллеров в Delphi
Я искал некоторую информацию о программировании микроконтроллера, но информация, которую я нахожу, либо слишком высока, либо, кажется, не существует. Я ищу что-то, что легче переварить! Я относительно новичок в программировании и пришел из базы данных SQL DBA и решил, что мне будет легче выучить некоторые основы программирования, а затем научить себя Delphi, чем реализовать некоторые изменения с помощью системы безумных изменений в моей компании! После пары лет программирования на Delphi я могу без особых проблем заняться написанием приложений для баз данных и хочу перейти на новый уровень. Мы используем микроконтроллеры PIC на наших печатных платах; в основном семейство PIC18F. Программное обеспечение на PICS написано на C, но есть значения параметров, которые записываются приложением Delphi, которое взаимодействует с PIC с помощью элемента управления ActiveX. В основном, база данных SQL содержит информацию о параметрах, клиентское приложение Delphi извлекает эти значения, передает их контроллеру ActiveX, который выполняет все низкоуровневые операции на PIC. Например, внутренняя EEPROM будет иметь карту, и в пределах любого конкретного адреса будет сохраняться значение для включения или выключения чего-либо или для хранения целочисленного значения и т. Д. Я получил набор MPLAB, который имеет устройство ICD2, которое может читать и записать значения во внутреннюю EEPROM, и я понимаю, как изменить эти шестнадцатеричные значения с помощью программного обеспечения MPLAB. Я не надеюсь изучать программирование встроенных микроконтроллеров; скорее, я могу написать приложение Delphi, которое будет делать что-то похожее на программное обеспечение MPLAB. Например, чтение и запись значений по определенным адресам памяти в EEPROM. Я был бы очень признателен, если бы кто-нибудь мог указать мне правильное направление любых библиотек или компонентов, которые уже могут существовать, для преодоления этого разрыва между простым приложением Delphi-формы и написанием низкоуровневой PIC EEPROM. Я сомневаюсь, что такой простой интерфейс существует, но я решил спросить. Подводя итог, я хочу иметь возможность иметь простое приложение для форм, с некоторыми полями для редактирования, которые пользователь вводит или выбирает из выпадающих списков, значений параметров, чтобы нажимать на кнопки и назначать эти значения параметров конкретным адресам памяти EEPROM. Спасибо за чтение, и любые комментарии будут с благодарностью приняты.
5 ответов
Обновлено 2015 Ответ:
Почему бы не Raspberry Pi с FreePascal и Lazarus? По состоянию на эту дату платы стоят от 5 до 25 долларов США, а средства разработки бесплатны.
Оригинальный ответ 2012 года: Если вы хотите использовать Pascal, вы можете найти Free Pascal полезным для небольших встроенных систем, но я полагаю, что минимум, на котором он может компилироваться, — это встроенная система ARM на основе Linux. Тот факт, что вы используете паскаль с обеих сторон, вряд ли поможет вам выполнить что-то важное.
Если вы хотите пройти весь путь до самых маленьких микроконтроллеров PIC, вы обнаружите, что это почти всегда вариант C, который вы будете использовать. Честно говоря, на этом уровне различий не так много. Если вы можете написать Паскаль, вы можете выучить достаточно C за день, чтобы использовать его с микроконтроллерами.
Не бойтесь использовать родной язык, который поддерживает большинство микроконтроллеров. Мои личные фавориты — микроконтроллеры Rabbit, ранее из Z-World, а теперь из digi — я думаю, что я заплатил около 100 долларов США за первую плату и инструментарий для разработки.
Взаимодействие такого приложения с delphi довольно просто, обычно в наши дни я бы взаимодействовал с использованием TCP/IP через проводной Ethernet или беспроводной (Wifi). Но если вы действительно хотите, вы можете использовать последовательные соединения RS-232 или RS-485. (Преимущество RS-485 в том, что вы можете подключить его до 5 миль в длину.) Если бы я использовал последовательную связь, я бы, вероятно, реализовал что-то вроде Modbus с обеих сторон, если бы я просто хотел отправить некоторые числовые данные обратно и В-четвертых, и если бы я занимался чем-то текстовым, я бы написал мини-веб-сервер HTTP на встроенном контроллере, и в наши дни большинство плат поставляются с достаточным количеством демонстраций HTTP-сервера, чтобы упростить эту работу.