Skocz do zawartości
Treker

Część 1-Kurs programowania uC AVR w C (WinAVR, Kurs AVR-GCC)

Pomocna odpowiedź

Cześć!

Odkopuję trochę temat, ale mam problem z kompilacją przykładowego programu. Otóż robię wszystko zgodnie z poleceniami, tworzę plik makefile i kiedy mam kompilować program otrzymuję coś takiego

> "make.exe" all
     0 [main] sh 4552 sync_with_child: child 4676(0x12C) died before initialization with status code 0x0
 28250 [main] sh 4552 sync_with_child: *** child state waiting for longjmp
/usr/bin/sh: fork: Resource temporarily unavailable
     0 [main] sh 3736 sync_with_child: child 1856(0x12C) died before initialization with status code 0x0
 32358 [main] sh 3736 sync_with_child: *** child state waiting for longjmp
/usr/bin/sh: fork: Resource temporarily unavailable

-------- begin --------
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling C: led.c
avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./led.lst  -std=gnu99 -MMD -MP -MF .dep/led.o.d led.c -o led.o 
led.c:1:1: warning: "F_CPU" redefined
<command-line>: warning: this is the location of the previous definition
led.c:26: fatal error: opening dependency file .dep/led.o.d: No such file or directory
compilation terminated.
make.exe: *** [led.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:02

Gdzie leży błąd? Co robię źle?

Z góry dzięki 😉

edit: dodaję kod programu - skopiowany ze strony z kursem

/* "led.c" - programik do testowania środowiska WinAVR */
/* układ ATmega 1MHz */
/* PB0,PB1 - diody LED; PD0 - przycisk */

#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>                

int main(void)
{
   DDRB  |= _BV(0)|_BV(1);
   PORTB |= _BV(0);
   PORTB &= ~_BV(1);
   DDRD  &= ~_BV(0);
   PORTD |=  _BV(0);

   while (1) 
   {
       PORTB ^=_BV(0);
       PORTB ^=_BV(1);

       _delay_ms((PIND & _BV(0))? 1000: 200);
   }
}
}

Udostępnij ten post


Link to post
Share on other sites

Daj kod swojego programu bo mi to wygląda na jakiś głupi błąd.

Udostępnij ten post


Link to post
Share on other sites
led.c:26: fatal error: opening dependency file .dep/led.o.d: No such file or directory

Czytać, czytać i jeszcze raz czytać. Zgubiłeś gdzieś plik. Mi to wygląda na (kolejny) problem z makefile - jeśli robisz w WinAVR to przerzuć się na AVR Studio.

Udostępnij ten post


Link to post
Share on other sites

Nadal próbuję skompilować mój program, teraz w Eclipse i pojawia mi się taki błąd

Description	Resource	Path	Location	Type
make: [led2.lss] Error 128 (ignored)			 	C/C++ Problem

Ponadto wyskakują 2 ostrzeżenia

Description	Resource	Path	Location	Type
"F_CPU" redefined	led.c	/led2	line 12	C/C++ Problem
Description	Resource	Path	Location	Type
#warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"	led2		line 90, external location: e:\winavr-20100110\avr\include\util\delay.h	C/C++ Problem

Nadal nie mam wsadu. Mam na komputerze WinAVR i wtyczkę wiążącą z nim Eclipse. Co jest przyczyną tych błędów?

Udostępnij ten post


Link to post
Share on other sites

Z jakich wtyczek korzystasz? Podaj cały log i najlepiej jeszcze plik makefile.

Udostępnij ten post


Link to post
Share on other sites

A można wiedzieć jaką masz ścieżkę do pliku który chcesz skompilować? Nie może być tam żadnych spacji ani polskich znaków.

Udostępnij ten post


Link to post
Share on other sites

Problem się rozwiązał. Na innym forum polecono mi zmianę linijki programu z

_delay_ms((PIND & _BV(0))? 1000: 200);

na

(PIND & _BV(0))? _delay_ms(1000): _delay_ms(200);

Po takiej zamianie program ruszył 😉

Udostępnij ten post


Link to post
Share on other sites

To teraz pytanie: czy wiesz co oznaczają obie wersje kodu?

Udostępnij ten post


Link to post
Share on other sites

Witam wszystkich, mam pytanko do pierwszej części właśnie zmontowałem układ, ale coś jest nie tak, wywala mi błąd:

avrdude: stk500v2_command(): command failed

avrdude: initialization failed, rc=-1

Double check connections and try again, or use -F to override

this check.

Połączenia sprawdzałem oczywiście, ale nie jestem pewien jednej rzeczy czy jeżeli w programatorze stk500v2 wyciągnę zworkę czerwoną mam coś zmieniać w schemacie jeżeli chodzi o zasilanie układu i programatora? czy po prostu cały układ z programatorem są zasilane wtedy z kompa?

i kolejne pytanie jakie napięcie ma być w układzie przy zasilaniu go 5 V , bo jak mierze miernikiem mam duży spadek - napięcie wynosi ok 1.5 V wiec chyba za słabo? co może być przyczyną tego?

z góry dziękuje za pomoc,
dla uporządkowania podam dane swojego układu:

Układ na płytce stykowej - schemat z kursu

Atmega 8

zasilanie bateria 4.5 V lub zasilaczem 5V

programator stk500v2 w trybie HID

gdy podłącze wszystko programator daje znak podłączenia do portu USB a gdy daje w programie avrdude komendę "write" chwile mignie czerwona dioda oznaczająca programowanie i po chwili wyskakuje błąd...

Udostępnij ten post


Link to post
Share on other sites

Witam,

Mam taki problem z wrzuceniem programu na procesor przez winavr.

Wyskakuje mi ten oto błąd:

> "make.exe" program

avrdude -p atmega8 -P usb -c usbasp -U flash:w:led.hex

avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

make.exe: *** [program] Error 1

> Process Exit Code: 2

> Time Taken: 00:01

Tylko nie mam pojęcia czemu nie może zidentyfikować usbasp, jak przez ścieżkę do avrdude w bascomie (ustawienie external programmer i ścieżka do avrdude) wrzuci, a przez WinAVR nie wrzuci (nic międzyczasie nie jest ruszane).

Udostępnij ten post


Link to post
Share on other sites

To może mi ktoś odpowie:P

Witam wszystkich, i od razu na dzień dobry mam problem:

Zrobiłem układ według instrukcji, pościągałem co trzeba, ale utknąłem na tym:

vrdude -p atmega8 -P usb -c usbasp    -U flash:w:led.hex 

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9307
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
        To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "led.hex"
avrdude: input file led.hex auto detected as Intel Hex
avrdude: writing flash (120 bytes):

Writing | ################################################## | 100% 0.89s

avrdude: 120 bytes of flash written
avrdude: verifying flash memory against led.hex:
avrdude: load data flash data from input file led.hex:
avrdude: input file led.hex auto detected as Intel Hex
avrdude: input file led.hex contains 120 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.67s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
        0x12 != 0x00
avrdude: verification error; content mismatch

avrdude done.  Thank you.

make.exe: *** [program] Error 1

Gógiel niestety nie pomógł.

Korzystam z usbaspa kupnego. Zworki raczej mam dobrze ustawione, jakakolwiek inna kombinacja powoduje wywalenie błędu jeszcze wcześniej niż teraz.

Połączenia chyba też mam dobre, bo gdyby były złe, to nie zaszedł by tak daleko, no nie?

Próbowałem wgrywać na dwie atmegi8, jedną L, drugą A-PU. Na żadnej nie działa. Połączenia sprawdziłem woltomierzem, zdaje się że napięcia są tam gdzie trzeba. Zatem zwracam się o pomoc, za którą z góry dziękuję🙂

__________

Komentarz dodany przez: Nawyk

Używaj znaczników [ code][ /code]

Udostępnij ten post


Link to post
Share on other sites

Sprawdź czy MISO dobrze styka 🙂

Udostępnij ten post


Link to post
Share on other sites

Styka. 2 omy to chyba niedużo, nie?

Ok, głupie błędy są najlepsze- miałem niepołączoną masę układu i programatora. Dziękuję za pomoc, i zwracam uwagę potomnych na ten detal:P

Udostępnij ten post


Link to post
Share on other sites

Witajcie, mam problem z kompilacją czegokolwiek w programie WINAVR. próbowałem już skompilować parę różnych programów, oraz kilkukrotnie tworzyłem plik makefile. I każdorazowo wyskakuje mi komunikat podczas kompilacji:

> "make.exe" all

-------- begin --------

avr-gcc (WinAVR 20100110) 4.3.3

Copyright © 2008 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

make.exe: *** No rule to make target `main.elf', needed by `elf'. Stop.

> Process Exit Code: 2

> Time Taken: 00:00

Plik makefile nie zapisywałem z rozszerzeniem .c

Pozdrawiam i z góry dziękuję za odpowiedź

Udostępnij ten post


Link to post
Share on other sites

plik makefile nei ma żadnego rozszerzenia. Poza tym powiem to po raz n-ty: po co ktokolwiek używa WinAVR, skoro nie ma żadnej przewagi nad innymi środowiskami?

https://www.forbot.pl/forum/postlink/37342.htm#37342

Jeśli to problem z makefile to skorzystaj z AVRstudio. Nie wiem czemu w ogóle ktoś robił kurs na WinAVR.

https://www.forbot.pl/forum/topics20/przygotowanie-srodowiska-do-programowania-avr-vt3702.htm

https://www.forbot.pl/forum/topics20/przygotowanie-srodowiska-do-programowania-avr-vt3702.htm (stare, ale jeszcze bardzo przydatne)

Postuluję o zamknięcie tego tematu, albo wyczyszczenie, bo problemy u początkujacych powtarzają się w kółko i są te same! I w dodatku związane z korzystaniem z WinAVR zamiast jakiegoś lepszego środowiska!

Udostępnij ten post


Link to post
Share on other sites

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!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...