Програмиране > C/C++

fatal error: time.h: No such file or directory

(1/11) > >>

jazzman:
Опитвам се да включа time/date функциите към файла си, но плющът грешки. Според документацията библиотеката е включена към AVR - http://www.nongnu.org/avr-libc/user-manual/group__avr__time.html. Да не би да нямам инсталирана avr_libc  :)


--- Код: C ---#include <stdio.h>#include <avr/io.h>#include <util/delay.h>#include <time.h> void wait ( int sec ) {                clock_t end_wait;                end_wait = clock () + sec * CLK_TCK ;                 while (clock() < end_wait) {}} int main(void) { DDRB |= _BV(DDB5);while(1) {PORTB |= _BV(PORTB5);wait (5); PORTB &= ~_BV(PORTB5);wait (5);  }} 

--- Цитат ---dimt@dimt-Satellite-L670 ~ $ avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o led.o led.c
led.c:4:18: fatal error: time.h: No such file or directory
 #include <time.h>


--- Край на цитат ---

kjufte:
Иглежда като да го нямаш тоз хедър. Според changelog-а на avr-libc time.h е добавен във версия 1.8.1
Пробвай да принтнеш версията, която използваш

--- Код: C ---printf("libc version: %s\n", __AVR_LIBC_VERSION_STRING__);

jazzman:
С 1.8.0 съм. Ще се пробвам да инсталирам / компилирам 2.0.0 

kjufte:
Ако си любознателен по-добре ще е да си имплементираш собствен ташовник. :)
1. нягласяш някой от таймерите да ти генерира интеръпти примерно на всяка милисекунда (хем таймери ще научиш, хем интеръпти)
2. около тази милисекунда си имплементираш твоите epoch time фунцкии - изминали милисекунди от  01.01.1970 (малко гимнастика с дати, високосни години  и тнт.)

Едит:

1. Като гледам документацията на time.h

--- Цитат на: http://www.nongnu.org ---Section 7.23.2.1 clock() The type clock_t, the macro CLOCKS_PER_SEC, and the function clock() are not implemented. We consider these items belong to operating system code, or to application code when no operating system is present.
--- Край на цитат ---

та фунцкията и структурата, които си използвал изобщо не са имплементирани.

2. това което си опитал да имплементираш в кода си е функция наиричаща се delay_us/sleep_us или delay_ms/sleep_ms и по принцип изглежда нещо като това

--- Код: C ---void sleep_ms(int millis) {   uint32_t end = millisec + millis; // където millisec e глобалната променлива, която инкрементираш на всеки интеръпт, който си натроил с тамера   while (millisec < end) { ; }}

И съответно като искаш да подремнеш за 5 секунди викаш

--- Код: C ---sleep_ms(5*1000);

jazzman:
Мислих за нещо подобно. Значи да споделя за кво ми е па ти шъ ма насочиш :)
Искам всеки 2-ри петък от месеца да се стартира  фърниса и джакузито на котиджа ми, че като пристигна след 2 - 3 часа всичко да е на 6. Не че нещо ми пречи да се логна отдалечено от Торонто и да го стартирам мануално, ама .......тръпка ми е кода да го направи вместо мен ;)   

Навигация

[0] Списък на темите

[#] Следваща страница

Премини на пълна версия