expertup Napisano Kwiecień 5, 2013 Udostępnij Napisano Kwiecień 5, 2013 Witam, stwierdziłem, ze najwyższa pora zacząć uczyć się języka C. Przez cały okres technikum programowałem w BASCOM, wiec co nie co wiem o ukontrolerach. Na początek postanowiłem pomrugać sobie diodą LED. Na początek wziąłem taki kod: /* port_test.c * The following program just keeps toggling pin 0 of port B */ #include <avr/io.h> //standard include for ATMega16 #define sbi(x,y) x |= _BV(y) //set bit - using bitwise OR operator #define cbi(x,y) x &= ~(_BV(y)) //clear bit - using bitwise AND operator #define tbi(x,y) x ^= _BV(y) //toggle bit - using bitwise XOR operator #define is_high(x,y) (x & _BV(y) == _BV(y)) //check if the y'th bit of register 'x' is high ... test if its AND with 1 is 1 /* _BV(a) is a macro which returns the value corresponding to 2 to the power 'a'. Thus _BV(PX3) would be 0x08 or 0b00001000 */ void main(void) { DDRD=0xff; //PORTB as OUTPUT PORTD=0x00; //All pins of PORTB LOW unsigned int i; while(1==1) //Infinite loop { for(i=0;i<65535;i++); //delay tbi(PORTD,PD5); //here the toggling takes place } } Działa od bez żadnego problemu. Jednak w innym przykładzie zobaczyłem, że można dołączyć bibliotekę delay: /* Szkielet prostego programu dla avr-gcc */ #define F_CPU 8000000L #include <avr/io.h> #include <util/delay.h> int main(void) { DDRD = 0xFF; for(;;) { PORTD = 0xff; } } P kompilacji ostatniego kodu, dostaję błąd: piotr@piotr-Satellite-L500:~/TEST$ avr-gcc -mmcu=atmega32 dioda.c -o diodaIn file included from dioda.c:5:0: /usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h:95:3: warning: #warning "Compiler optimizations disabled; functions from won't work as designed" piotr@piotr-Satellite-L500:~/TEST$ Czyli jakiś problem z biblioteką delay.h. Po przejściu do folderu 'lib', nie widzę w nim folderu 'avr' w którym powinny być foldery z tą biblioteką. Tak mi się przynajmniej wydaje. Środowisko do programowania przygotowałem wg. tego poradnika: https://www.forbot.pl/forum/topics20/programowanie-programowanie-avr-w-linux-vt3667.htm Jakieś sugestie? Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
osmial Kwiecień 5, 2013 Udostępnij Kwiecień 5, 2013 Z tego co widać nie ma błędu tylko ostrzeżenie, dokładnie to chodzi o wyłączoną optymalizacje itd. W dodatku nie korzystasz z żadnej funkcji z util/delay.h więc wszystko powinno brykać. Upewnij się, czy otrzymujesz plik wynikowy, skorzystaj też z funkcji _delay_ms() lub _delay_us() i zobacz czy dostajesz error. pozdro ps. po wejściu w lib powinieneś szukać gcc, a w nim dopiero avr 1 Cytuj Link do komentarza Share on other sites More sharing options...
expertup Kwiecień 5, 2013 Autor tematu Udostępnij Kwiecień 5, 2013 Ok, wsadziłem funkcję _delay_ms(1000); i jest ok. Zastanawiam sie tylko skąd on bierze tą bibliotekę, bo mam lib/gcc/avr i w nim tylko jeden folder 4.5.3, a gdzie ten include? Po za tym: /usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h jestem w folderze /usr/lib/gcc/avr/4.5.3 ../ /usr/lib/gcc/avr ../ /usr/lib/gcc ../ /usr/lib Czego nie rozumiem/nie wiem? Cytuj Link do komentarza Share on other sites More sharing options...
osmial Kwiecień 5, 2013 Udostępnij Kwiecień 5, 2013 ../../../ <- ten fragment w ścieżce jest skrótem, a nie wyjściem w górę Nie mam teraz możliwości podejrzenia jaka jest dokładna ścieżka ale możesz sobie poszukać i poćwiczyć jednocześnie zwiedzanie katalogów w terminalu. Komenda LS (może być z małych ofc ale będę tak pisać bo jest czytelniej) pokazuje zawartość katalogu więc po wejściu w /usr/lib/gcc/avr/4.5.3/ wrzuć LS lub LS -ALL (wtedy masz podgląd praw dla każdego pliku/katalogu) i sobie przeglądaj dalej każdy kolejny. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
expertup Kwiecień 5, 2013 Autor tematu Udostępnij Kwiecień 5, 2013 Czyli /usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h to może być PRZYKŁADOWO /usr/lib/gcc/avr/4.5.3/abcdefghikl/1234567890/jakis_tam_jeszcze_jeden_katalog/avr/include/util/delay.h ? Cytuj Link do komentarza Share on other sites More sharing options...
osmial Kwiecień 5, 2013 Udostępnij Kwiecień 5, 2013 Czyli /usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h to może być PRZYKŁADOWO /usr/lib/gcc/avr/4.5.3/abcdefghikl/1234567890/jakis_tam_jeszcze_jeden_katalog/avr/include/util/delay.h ? dokładnie 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!