Форум РадиоКот https://radiokot.ru/forum/ |
|
Подключение библиотеки freemodbus microchip (Atmel) studio https://radiokot.ru/forum/viewtopic.php?f=57&t=183860 |
Страница 1 из 1 |
Автор: | improvingsasha [ Вт июл 26, 2022 16:29:59 ] | ||
Заголовок сообщения: | Подключение библиотеки freemodbus microchip (Atmel) studio | ||
Добрый день. Подскажите, как подключить данную библиотеку к проекту в Microchip Studio (проект для atmega32)? Данная библиотека поддерживается AVR. В скачаном архиве есть папка demo/avr/port, как я понимаю нужно подключать файлы из этой папки или не только из неё? Папка AVR содержит: demo.c и excoils.c. Я так понимаю, что это файлы демонстрационной программы. Если я подключаю эти файлы и все файлы содержащиеся в папке port через Add>existing item, при попытке компиляции возникает куча ошибок.. Что я делаю не так?
|
Автор: | uk8amk [ Вт июл 26, 2022 17:25:09 ] |
Заголовок сообщения: | Re: Подключение библиотеки freemodbus microchip (Atmel) stud |
.demo - папка с примерами .port - папка с функциями, переписанными под AVR demo.c - пример проекта для работы с регистрами Input excoils.c - пример проекта для работы с функциями дискретных выходов .modbus - сама библиотека Чтобы запустилось, надо подключать к проекту все файлы. У меня тоже было очень много вопросов по freemodbus из-за малого количества примеров и неважного описания. Возникали ошибки связанные со смещением адресов регистров на единицу. Даже не знаю с чем это было связано. |
Автор: | improvingsasha [ Ср июл 27, 2022 11:19:37 ] | |||
Заголовок сообщения: | Re: Подключение библиотеки freemodbus microchip (Atmel) stud | |||
Как мне кажется, почти получилось. Создал новый проект, содержимое demo.c скопировал в main.с. В настройках Toolchain>AVR/CNY C Compiler добавил пути к папкам modbus\functions, demo\AVR\port, modbus\include. Добавил к проекту файлы из папки modbus\functions Осталось несколько ошибок. 3 из них связаны как я понял с тем, что студия не может найти реализацию функций eMBInit, eMBEnable и eMBPoll... На самом деле я тоже прошёлся по всем файлам и не нашёл описания этих функций. Где они могут быть запрятаны? И 1 ошибка связана с .elf файлом, суть которой мне не очень ясна.
|
Автор: | metan [ Ср июл 27, 2022 13:31:02 ] |
Заголовок сообщения: | Re: Подключение библиотеки freemodbus microchip (Atmel) stud |
improvingsasha писал(а): eMBInit, eMBEnable и eMBPoll... На самом деле я тоже прошёлся по всем файлам и не нашёл описания этих функций. Где они могут быть запрятаны? Плоховато прошлись ![]() Сами функции сидят в файле mb.c, а описания, как принято, include\mb.h |
Автор: | improvingsasha [ Ср июл 27, 2022 14:02:12 ] | ||
Заголовок сообщения: | Re: Подключение библиотеки freemodbus microchip (Atmel) stud | ||
Да, невнимательно прошёлся... Спасибо. После добавления ошибок стало ещё больше). Часть была связана с тем, что в некоторых файлах была упомянута "F_CPU", добавил строку #define F_CPU 14745600UL во все эти файлы, но от всех ошибок это не избавило. Суть остальных ошибок мне пока не ясна.
|
Автор: | ua9ssa [ Пн авг 08, 2022 08:26:55 ] |
Заголовок сообщения: | Re: Подключение библиотеки freemodbus microchip (Atmel) stud |
То improvingsasha Выложите сюда свои исходники. С первого взгляда непонятно в чем ошибка(и)... |
Автор: | improvingsasha [ Пн авг 08, 2022 14:52:52 ] | ||
Заголовок сообщения: | Re: Подключение библиотеки freemodbus microchip (Atmel) stud | ||
Сейчас удалось скомпилировать проект. Помогло произвести замену SIG_OUTPUT_COMPARE1A -> TIMER1_COMPA_vect SIG_UART_RECV -> USART_RXC_vect SIG_UART_DATA -> USART_UDRE_vect Что так нужно сделать нашёл здесь: viewtopic.php?f=57&t=147747&hilit=freemodbus Сейчас не пойму как проверить работу этой демо программы. С помощью qmodbus посылаю команды на контроллер. Логическим анализатором проверяю есть ли хоть какой-то ответ, но его нет. Я так понимаю, что если я делаю не широковещательный запрос с указанием неверного id, то его и не должно быть, верно? Не совсем понятно что происходит в строчке: eStatus = eMBInit( MB_RTU, 0x0A, 0, 38400, MB_PAR_EVEN ); Что это за конструкция? eStatus - что это за переменная, которой присваивается значение функции eMBInit. В целом, я так понимаю, что здесь происходит инициализация протокола. Адрес устройства: 10, скорость 38400, именно такие параметры я устанавливал в qmodbus. Непонятно что происходит здесь: eStatus = eMBSetSlaveID( 0x34, TRUE, ucSlaveID, 3 ); Меняется id устройства на 52? И что это за массив констант: const UCHAR ucSlaveID[] = { 0xAA, 0xBB, 0xCC };?
|
Автор: | ua9ssa [ Пн авг 08, 2022 19:08:26 ] |
Заголовок сообщения: | Re: Подключение библиотеки freemodbus microchip (Atmel) stud |
Проверять и выполнять отладку программы удобнее в Proteus... Завтра посмотрю Ваши исходники |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |