Например TDA7294

Форум РадиоКот • Просмотр темы - Ошибки FreeModBus Atmega16 AtmelStudio 6.2
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 17, 2024 01:40:27

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Ошибки FreeModBus Atmega16 AtmelStudio 6.2
СообщениеДобавлено: Вт авг 22, 2017 11:03:50 
Потрогал лапой паяльник
Аватар пользователя

Карма: 3
Рейтинг сообщений: 3
Зарегистрирован: Ср май 03, 2017 03:22:26
Сообщений: 303
Рейтинг сообщения: 0
В связи с необходимость осваивания модбаза решил начать уже с готовой либы FreeModBus.
Предварительно почитав теорию по работе протокола. Решился все таки скомпилировать демку FreeModBuss, но не тут то было ) она начала меня осыпать разного рода ошибками. Избавился почти от всех остались вот эти:

Изображение

Код построения:

Код:
------ Построение начато: проект: ProjectFreeModBusSlave, Конфигурация: Debug AVR ------
Построение начато.
Проект "ProjectFreeModBusSlave.cproj" (целевые объекты по умолчанию):
Построение с инструментами версии "2.0".
Целевой объект "PreBuildEvent" пропущен из-за невыполненного условия; выражение ('$(PreBuildEvent)'!='') равно (''!='').
Целевой объект "CoreBuild" в файле "C:\Program Files\Atmel\Atmel Studio 6.2\Vs\Compiler.targets" из проекта "C:\_ATmel\ModBUS\ProjectFreeModBusSlave\ProjectFreeModBusSlave\ProjectFreeModBusSlave.cproj" (целевой объект "Build" зависит от него):
   Задача "RunCompilerTask"
      Shell Utils Path C:\Program Files\Atmel\Atmel Studio 6.2\shellUtils
      C:\Program Files\Atmel\Atmel Studio 6.2\shellUtils\make.exe all
      Building file: .././ProjectFreeModBusSlave.c
      Invoking: AVR/GNU C Compiler : 4.8.1
      "C:\Program Files\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1061\avr8-gnu-toolchain\bin\avr-gcc.exe"  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"../../modbus/include" -I"../../modbus/rtu" -I"../port" -I"../../modbus/functions"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega16 -c -std=gnu99 -MD -MP -MF "ProjectFreeModBusSlave.d" -MT"ProjectFreeModBusSlave.d" -MT"ProjectFreeModBusSlave.o"   -o "ProjectFreeModBusSlave.o" ".././ProjectFreeModBusSlave.c"
      .././ProjectFreeModBusSlave.c: In function 'main':
C:\_ATmel\ModBUS\ProjectFreeModBusSlave\ProjectFreeModBusSlave\ProjectFreeModBusSlave.c(43,21): warning: variable 'eStatus' set but not used [-Wunused-but-set-variable]
           eMBErrorCode    eStatus;
                           ^
      Finished building: .././ProjectFreeModBusSlave.c
      Building target: ProjectFreeModBusSlave.elf
      Invoking: AVR/GNU Linker : 4.8.1
      "C:\Program Files\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1061\avr8-gnu-toolchain\bin\avr-gcc.exe" -o ProjectFreeModBusSlave.elf  ProjectFreeModBusSlave.o   -Wl,-Map="ProjectFreeModBusSlave.map" -Wl,--start-group -Wl,-lm  -Wl,--end-group -Wl,--gc-sections -mmcu=atmega16 
      ProjectFreeModBusSlave.o: In function `main':
C:\_ATmel\ModBUS\ProjectFreeModBusSlave\ProjectFreeModBusSlave\Debug/.././ProjectFreeModBusSlave.c(45,1): error: undefined reference to `eMBInit'
C:\_ATmel\ModBUS\ProjectFreeModBusSlave\ProjectFreeModBusSlave\Debug/.././ProjectFreeModBusSlave.c(47,1): error: undefined reference to `eMBSetSlaveID'
C:\_ATmel\ModBUS\ProjectFreeModBusSlave\ProjectFreeModBusSlave\Debug/.././ProjectFreeModBusSlave.c(51,1): error: undefined reference to `eMBEnable'
C:\_ATmel\ModBUS\ProjectFreeModBusSlave\ProjectFreeModBusSlave\Debug/.././ProjectFreeModBusSlave.c(55,1): error: undefined reference to `eMBPoll'
collect2.exe(0,0): error: ld returned 1 exit status
      make: *** [ProjectFreeModBusSlave.elf] Error 1
      Выход из команды с кодом "2".
   Выполнение задачи "RunCompilerTask" завершено с ошибкой.
Построение целевого объекта "CoreBuild" в проекте "ProjectFreeModBusSlave.cproj" завершено с ошибкой.
Построение проекта "ProjectFreeModBusSlave.cproj" завершено с ошибкой.

СБОЙ построения.
========== Построение: успешно и без изменений: 0, с ошибками: 1, пропущено: 0 ==========

Инклуды все подключены, и про линкованы.
Изображение
Небольшой анализ гуугла дал результат что такие ошибки встречаются у людей при компиляции на AtmelStudio, при переходе на WinAvr.

Может кто подскажет в какую сторону копать ?

НА всякий пожарный код под спойлером:
Спойлер
Код:
/*
 * FreeModbus Libary: AVR Demo Application
 * Copyright (C) 2006 Christian Walter <wolti@sil.at>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * File: $Id: demo.c,v 1.7 2006/06/15 15:38:02 wolti Exp $
 */

/* ---------- AVR includes ----------*/
#include "avr/io.h"
#include "avr/interrupt.h"

/* ---------- Modbus includes ----------*/
#include "mb.h"
#include "mbport.h"

/* ---------- Defines ----------*/
#define REG_INPUT_START 1000
#define REG_INPUT_NREGS 4

/* ---------- Static variables ----------*/
static USHORT   usRegInputStart = REG_INPUT_START;
static USHORT   usRegInputBuf[REG_INPUT_NREGS];

/* ---------- Start implementation ----------*/
int
main( void )
{
    const UCHAR     ucSlaveID[] = { 0xAA, 0xBB, 0xCC };
    eMBErrorCode    eStatus;

    eStatus = eMBInit( MB_RTU, 0x0A, 0, 38400, MB_PAR_EVEN );

    eStatus = eMBSetSlaveID( 0x34, TRUE, ucSlaveID, 3 );
    sei(  );

    /* Enable the Modbus Protocol Stack. */
    eStatus = eMBEnable(  );

    for( ;; )
    {
        ( void )eMBPoll(  );

        /* Here we simply count the number of poll cycles. */
        usRegInputBuf[0]++;
    }
}

eMBErrorCode
eMBRegInputCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs )
{
    eMBErrorCode    eStatus = MB_ENOERR;
    int             iRegIndex;

    if( ( usAddress >= REG_INPUT_START )
        && ( usAddress + usNRegs <= REG_INPUT_START + REG_INPUT_NREGS ) )
    {
        iRegIndex = ( int )( usAddress - usRegInputStart );
        while( usNRegs > 0 )
        {
            *pucRegBuffer++ =
                ( unsigned char )( usRegInputBuf[iRegIndex] >> 8 );
            *pucRegBuffer++ =
                ( unsigned char )( usRegInputBuf[iRegIndex] & 0xFF );
            iRegIndex++;
            usNRegs--;
        }
    }
    else
    {
        eStatus = MB_ENOREG;
    }

    return eStatus;
}

eMBErrorCode
eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs,
                 eMBRegisterMode eMode )
{
    return MB_ENOREG;
}


eMBErrorCode
eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNCoils,
               eMBRegisterMode eMode )
{
    return MB_ENOREG;
}

eMBErrorCode
eMBRegDiscreteCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNDiscrete )
{
    return MB_ENOREG;
}



Вложения:
2017.08.22 15-44-33.jpg [90.69 KiB]
Скачиваний: 1010
2017.08.22 15-43-42.jpg [103.94 KiB]
Скачиваний: 1338

_________________
andrei23061996@gmail.com
.................................................................................................................
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ошибки FreeModBus Atmega16 AtmelStudio 6.2
СообщениеДобавлено: Ср авг 23, 2017 11:23:34 
Потрогал лапой паяльник
Аватар пользователя

Карма: 3
Рейтинг сообщений: 3
Зарегистрирован: Ср май 03, 2017 03:22:26
Сообщений: 303
Рейтинг сообщения: 0
Попалась еще одна интересная либа для модбаза https://github.com/JhonControl/Arduino- ... Modbus-RTU. Но уходить на Ардуину пока не хочется, если конечно только реализовать мастер на ней.

А пока под слейв буду дальше ковырять FreeModBus.

_________________
andrei23061996@gmail.com
.................................................................................................................


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ошибки FreeModBus Atmega16 AtmelStudio 6.2
СообщениеДобавлено: Чт авг 24, 2017 11:12:05 
Родился

Зарегистрирован: Вт ноя 15, 2016 12:48:20
Сообщений: 16
Рейтинг сообщения: 0
Необходимо добавить в проект файлы с функциями eMbInit , eMBPoll


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Ошибки FreeModBus Atmega16 AtmelStudio 6.2
СообщениеДобавлено: Пт авг 25, 2017 03:38:03 
Потрогал лапой паяльник
Аватар пользователя

Карма: 3
Рейтинг сообщений: 3
Зарегистрирован: Ср май 03, 2017 03:22:26
Сообщений: 303
Рейтинг сообщения: 0
Как я выяснил они находятся в ".с" файлах . но #include .c использовать некорректно.
Может подскажите как правильно добавить компилятору(AS6.2) эти файлы.

_________________
andrei23061996@gmail.com
.................................................................................................................


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ошибки FreeModBus Atmega16 AtmelStudio 6.2
СообщениеДобавлено: Пт авг 25, 2017 08:06:58 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
В свойствах проекта добавляете сишные файлы - *.c. "include" только заголовочные файлы - *.h.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ошибки FreeModBus Atmega16 AtmelStudio 6.2
СообщениеДобавлено: Пт авг 25, 2017 11:43:09 
Потрогал лапой паяльник
Аватар пользователя

Карма: 3
Рейтинг сообщений: 3
Зарегистрирован: Ср май 03, 2017 03:22:26
Сообщений: 303
Рейтинг сообщения: 0
Ну вот компиляция почти проходит. Теперь столкнулся ,как я думаю с устаревшими векторами.

Ошибки:
Код:
Ошибка   3   attempt to use poisoned "SIG_USART_RECV"   C:\_ATmel\ModBUS\FreeModBusSlave\FreeModBusSlave\port\portserial.c   146   9   FreeModBusSlave
Ошибка   1   attempt to use poisoned "SIG_USART_DATA"   C:\_ATmel\ModBUS\FreeModBusSlave\FreeModBusSlave\port\portserial.c   141   9   FreeModBusSlave
Предупреждение   4   'SIG_USART_RECV' appears to be a misspelled signal handler [enabled by default]   C:\_ATmel\ModBUS\FreeModBusSlave\FreeModBusSlave\port\portserial.c   146   9   FreeModBusSlave
Предупреждение   2   'SIG_USART_DATA' appears to be a misspelled signal handler [enabled by default]   C:\_ATmel\ModBUS\FreeModBusSlave\FreeModBusSlave\port\portserial.c   141   9   FreeModBusSlave


portserial.c :
Код:
SIGNAL( SIG_USART_DATA )
{
    pxMBFrameCBTransmitterEmpty(  );
}

SIGNAL( SIG_USART_RECV )
{
    pxMBFrameCBByteReceived(  );
}


Добавлено after 56 minutes 55 seconds:
Нашел что эту проблему решали редактированием makefile строчкой.
CFLAGS += -D__AVR_LIBC_DEPRECATED_ENABLE__

Добавлено after 4 minutes 1 second:
Заменил:
SIG_OUTPUT_COMPARE1A -> TIMER1_COMPA_vect
SIG_UART_RECV -> USART_RXC_vect
SIG_UART_DATA -> USART_UDRE_vect

Появились еще пару ошибок.
Код:
Ошибка   2   multiple definition of `usMBCRC16'   C:\_ATmel\ModBUS\FreeModBusSlave\FreeModBusSlave\Debug/../port/mbcrc.c   112   1   FreeModBusSlave
Ошибка   3   ld returned 1 exit status   collect2.exe   0   0   FreeModBusSlave
Предупреждение   1   'usTimerOCRBDelta' defined but not used [-Wunused-variable]   C:\_ATmel\ModBUS\FreeModBusSlave\FreeModBusSlave\port\porttimer.c   41   17   FreeModBusSlave



Добавлено after 36 minutes 29 seconds:
Вроде все ошибки устранены.
 
Файл mbcrc.c использовался в исходном коде библиотеки дважды.
1. FreeModBusSlave \ port \ mbcrc.c
2.FreeModBusSlave \ modbus \ rtu \ mbrtu.c

Исключил FreeModBusSlave \ port \ mbcrc.c.
 
/ *
Построение целевого объекта "Build" в проекте "FreeModBusSlave.cproj" завершено.
Построение проекта "FreeModBusSlave.cproj" завершено.

Построение успешно завершено.
========== Построение: успешно и без изменений: 1, с ошибками: 0, пропущено: 0 ==========
* /

Завтра закину код в камушек и начну отладку )

_________________
andrei23061996@gmail.com
.................................................................................................................


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y