Ошибка с библиотекой time.h - C (СИ)
Формулировка задачи:
Добрый день, столкнулся с проблемой связанной с библиотекой time.h. Хочу написать автомобильный спидометр. В дальнейшем собрать бортовой компьютер. До этого я делал на arduino, все прекрасно работало. Теперь решил переписать код под микроконтроллер atmega8. И вот тут то меня и постигла ошибка, при использовании функции clock() вылезают следующие ошибки:
1. undefined reference to `clock'
2. ld returned 1 exit status
Программирую я в Atmel studio 7
Вот код мое программы:
Вот такие ошибки выдает при сборке этого кода:
Вот такая схемка:
В Cи начинающий, код возможно не очень, но мне сейчас главное решить проблему))
Буду благодарен за любые наводки)
/*
* GccApplication4.c
*
* Created: 02.07.2016 14:20:38
* Author : Иван
*/
#include <avr/io.h>
#define F_CPU 8000000L //частота микроконтреллера 8мгц
#include <time.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "n5110.h"
//глабальные переменные
int a = 1;
volatile unsigned int NumberMomentSpeed = 0;
volatile byte sz = 0;
volatile unsigned long micros_sp = 0;
volatile unsigned int speed = 0;
unsigned long t = 0;
int st = 0;
void setup() //функция первоначальной настройки
{
DDRC = 0x0F;
PORTC = 0x00;
DDRD=0x00;
PORTD=0xFF;
Lcd_init();
Lcd_clear();
}
void INTinit() //инициализация прерываний
{
MCUCR = (0<<ISC10) | (1<<ISC11);//0b00001000 регистр управления (падающий фронт)
GICR = (1<<INT1);//0b10000000 общий регистр управления прерываниями (разрешить прерывание INT1)
}
ISR (INT1_vect) //прерывание по вектору INT1
{ //тело прерывания
NumberMomentSpeed++;
if (!st)
{
micros_sp = clock();
}
else
{
speed = (600000/(clock() - micros_sp));
}
st = 1;
sz = 30;
}
void lcd_output(char bu[]) //функция вывода на экран
{
Lcd_clear();
Lcd_print(6,1,FONT_1X,(unsigned char*) bu);
Lcd_update();
}
int main(void) //главная функция
{
setup();
INTinit();
sei(); //Чтобы установить ручками этот бит существует функция sei(), а чтобы сбросить - cli()
while (1) //бесконечный цикл
{
if (sz != 0)
{
sz--;
}
else
{ //Если нет импульсов с датчика скорости, то скорость обнулить
speed = 0;
}
char buferd[10];
itoa(NumberMomentSpeed, buferd, 10);
lcd_output(buferd);
}
}Решение задачи: «Ошибка с библиотекой time.h»
textual
Листинг программы
################################################################################ # 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 \ ../n5110.c PREPROCESSING_SRCS += ASM_SRCS += OBJS += \ main.o \ n5110.o OBJS_AS_ARGS += \ main.o \ n5110.o C_DEPS += \ main.d \ n5110.d C_DEPS_AS_ARGS += \ main.d \ n5110.d OUTPUT_FILE_PATH +=GccApplication4.elf OUTPUT_FILE_PATH_AS_ARGS +=GccApplication4.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 : 4.9.2 $(QUOTE)C:\Program Files\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\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.0.106\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega8 -B "C:\Program Files\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.0.106\gcc\dev\atmega8" -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 : 4.9.2 $(QUOTE)C:\Program Files\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="GccApplication4.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega8 -B "C:\Program Files\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.0.106\gcc\dev\atmega8" @echo Finished building target: $@ "C:\Program Files\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 "GccApplication4.elf" "GccApplication4.hex" "C:\Program Files\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 "GccApplication4.elf" "GccApplication4.eep" || exit 0 "C:\Program Files\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "GccApplication4.elf" > "GccApplication4.lss" "C:\Program Files\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 "GccApplication4.elf" "GccApplication4.srec" "C:\Program Files\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "GccApplication4.elf" # Other Targets clean: -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) -$(RM) $(C_DEPS_AS_ARGS) rm -rf "GccApplication4.elf" "GccApplication4.a" "GccApplication4.hex" "GccApplication4.lss" "GccApplication4.eep" "GccApplication4.map" "GccApplication4.srec" "GccApplication4.usersignatures"