Atmel Studio 7 и библиотеки Ардуино

Кот Баюн
Offline
Зарегистрирован: 05.06.2016

Добрый день, коллеги.
Нужна помощь, а может, сторонний взгляд на проблему.
Итак, Создается некое устройство на основе ATMega328P. На борту часы реального времени DS1307, "выход в свет" должен обемпечить ethernet-шилд на базе WS5100. Поверх езернета планируется протокол MQTT.

Программная часть пишется в AtmelStudio 7. Для реализации проекта решил взять штатные ардуиновские библиотеки Wire.h и SPI.h. Импортировал в проект, не забыв полагающиеся *.срр.

При попытке компиляции был послан Студией куда-то далеко.

//Декларирование библиотек 
#include <avr/io.h>
#include <Wire.h>


//----------------------------------------------------------------
//Декларирование автозамены
//Светодиоды-индикаторы
#define LED_Ethernet_OK PD2
#define LED_Mosquitto_OK PD3
#define LED_NTP_OK PD5


  
//Макросы управления индикаторами

#define LED_Ethernet_OK_ON() PORTD |= (1 << LED_Ethernet_OK) //Макрос включения
#define LED_Ethernet_OK_OFF() PORTD &= ~(1 << LED_Ethernet_OK) //Макрос выключения

#define LED_Mosquitto_OK_ON() PORTD |= (1 << LED_Mosquitto_OK)
#define LED_Mosquitto_OK_OFF() PORTD &= ~(1 << LED_Mosquitto_OK)

#define LED_NTP_OK_ON() PORTD |= (1 << LED_NTP_OK)
#define LED_NTP_OK_OFF() PORTD &= ~(1 << LED_NTP_OK)
//----------------------------------------------------------------------


int main(void)
{
	//Конфигурирование портов
	DDRD |= (1 << LED_Ethernet_OK) | (1 << LED_Mosquitto_OK) | (1 << LED_NTP_OK); //Установка порта на выход
	PORTD &= ~(1 << PD6); //Установка порта на вход
    /* Replace with your application code */
    while (1) 
    {
    }
}

Выданы следующие ошибки:

1. Severity    Code    Description    Project    File    Line
Error        Stream.h: No such file or directory    NTP-MQTT_01    C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\Wire.h    26
2. Severity    Code    Description    Project    File    Line
Error        recipe for target 'main.o' failed    NTP-MQTT_01    D:\MicrocontrollerProj\Arduino_NTP-MQTT\NTP-MQTT_01\NTP-MQTT_01\Debug\Makefile    79
 

Запрашиваемый Stream.h нашел, импортировал в проект. Результат тот же.

Уважемые знающие - подскажите, что не так я делаю?

 

Кот Баюн
Offline
Зарегистрирован: 05.06.2016

На всякий случай прилагаю содержимое мейкфайла:

 

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

SHELL := cmd.exe
RM := rm -rf

USER_OBJS :=

LIBS :=
PROJ :=

O_SRCS :=
C_SRCS :=
S_SRCS :=
S_UPPER_SRCS :=
OBJ_SRCS :=
ASM_SRCS :=
PREPROCESSING_SRCS :=
OBJS :=
OBJS_AS_ARGS :=
C_DEPS :=
C_DEPS_AS_ARGS :=
EXECUTABLES :=
OUTPUT_FILE_PATH :=
OUTPUT_FILE_PATH_AS_ARGS :=
AVR_APP_PATH :=$$$AVR_APP_PATH$$$
QUOTE := "
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:=
LIB_DEP:=
LINKER_SCRIPT_DEP:=

# Every subdirectory with source files must be described here
SUBDIRS :=

# Add inputs and outputs from these tool invocations to the build variables
C_SRCS +=  \
../main.c

PREPROCESSING_SRCS +=

ASM_SRCS +=

OBJS +=  \
main.o

OBJS_AS_ARGS +=  \
main.o

C_DEPS +=  \
main.d

C_DEPS_AS_ARGS +=  \
main.d

OUTPUT_FILE_PATH +=NTP-MQTT_01.elf

OUTPUT_FILE_PATH_AS_ARGS +=NTP-MQTT_01.elf

ADDITIONAL_DEPENDENCIES:=

OUTPUT_FILE_DEP:= ./makedep.mk

LIB_DEP+=

LINKER_SCRIPT_DEP+=

# AVR32/GNU C Compiler

./%.o: .././%.c
    @echo Building file: $<
    @echo Invoking: AVR/GNU C Compiler : 5.4.0
    $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include" -I"C:\Program Files (x86)\Arduino" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr" -I"C:\Program Files (x86)\Arduino\hardware\tools\avr" -I"C:\Program Files (x86)\Arduino\libraries" -I"C:\Program Files (x86)\Arduino\tools" -I"C:\Program Files (x86)\Arduino\tools-builder" -I"C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<"
    @echo Finished building: $<
    

# AVR32/GNU Preprocessing Assembler

# AVR32/GNU Assembler

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif

# Add inputs and outputs from these tool invocations to the build variables

# All Target
all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)

$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP)
    @echo Building target: $@
    @echo Invoking: AVR/GNU Linker : 5.4.0
    $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="NTP-MQTT_01.map" -Wl,--start-group -Wl,-lm  -Wl,--end-group -Wl,--gc-sections -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega328p"  
    @echo Finished building target: $@
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures  "NTP-MQTT_01.elf" "NTP-MQTT_01.hex"
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom  --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0  --no-change-warnings -O ihex "NTP-MQTT_01.elf" "NTP-MQTT_01.eep" || exit 0
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "NTP-MQTT_01.elf" > "NTP-MQTT_01.lss"
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "NTP-MQTT_01.elf" "NTP-MQTT_01.srec"
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "NTP-MQTT_01.elf"
    
    

# Other Targets
clean:
    -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES)  
    -$(RM) $(C_DEPS_AS_ARGS)   
    rm -rf "NTP-MQTT_01.elf" "NTP-MQTT_01.a" "NTP-MQTT_01.hex" "NTP-MQTT_01.lss" "NTP-MQTT_01.eep" "NTP-MQTT_01.map" "NTP-MQTT_01.srec" "NTP-MQTT_01.usersignatures"
  

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Нельзя так просто взять код из Arduino Framework и использовать его. Нужно либо изначально создавать Arduino-проект в Atmel Studio (наверное она это может, не пробовал), либо использовать специальный Makefile, что гораздо сложнее. Короче говоря, нельзя использовать библиотеки из Arduino Framework'а как-то отдельно. Нужно целиком прибавлять всё ядро, начиная с файла Arduino.h.

IDE Arduino скрывает всю эту работу, поэтому появились сотни тысячи ничего не понимающих об устройстве процесса сборки "программистов".