Skocz do zawartości

[C] Problem z delay.h (Pierwszy program)


Vorcras

Pomocna odpowiedź

Witam,

Właśnie zacząłem naukę programowania w C na mikrokontrolery AVR. Używam Atmel Studio 6. Nie mogę skompilować pierwszego programu, wyskakuje mi dziwny error (program jak i błąd na obrazku) kilka godzin temu gdy na niego podwójnie klikałem przenosiło mnie do jakiejś części kodu w pliku delay.h , teraz nic się nie dzieje. Sprawdziłem że problem występuje przy użyciu funkcji _delay_ms(). Mam zainstalowany najnowszy toolchain ze strony atmel.com.

Opis z zakładki Output:

------ Build started: Project: First, Configuration: Debug AVR ------

Build started.

Project "First.cproj" (default targets):

Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').

Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.1\Vs\Compiler.targets" from project "C:\ROBOTS\PROGRAMY(atmelstudio)\First\First\First.cproj" (target "Build" depends on it):

Using "RunCompilerTask" task from assembly "C:\Program Files (x86)\Atmel\Atmel Studio 6.1\Extensions\Application\AvrGCC.dll".

Task "RunCompilerTask"

C:\Program Files (x86)\Atmel\Atmel Studio 6.1\shellUtils\make.exe all

c:\program files (x86)\atmel\atmel toolchain\avr8 gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: In function '_delay_ms':

Building file: .././First.c

Invoking: AVR/GNU C Compiler : 3.4.4

"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-gcc.exe" -funsigned-char -funsigned-bitfields -DDEBUG -DF_CPU=128000UL; -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny88 -c -std=gnu99 -MD -MP -MF "First.d" -MT"First.d" -MT"First.o" -o "First.o" ".././First.c"

(0,15): expected ')' before ';' token

c:\program files (x86)\atmel\atmel toolchain\avr8 gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: In function '_delay_us':

(0,15): expected ')' before ';' token

make: *** [First.o] Error 1

Done executing task "RunCompilerTask" -- FAILED.

Done building target "CoreBuild" in project "First.cproj" -- FAILED.

Done building project "First.cproj" -- FAILED.

Próbowałem wielu żeczy Nikt, z tego co szukałem, nie ma takiego błędu, będę wdzięczny za każdą pomoc, jestem zdesperowany 😥

Link do komentarza
Share on other sites

To raczej nie problem z delay.h

To wygląda raczej że tak powiem na błąd gramatyczny 😉

Pokaż kod w znacznikach CODE aby można było go skopiować, może wtedy uda się znaleźć ten błąd.

Link do komentarza
Share on other sites

/*
* First.c
*
* 
*/
#include <avr/io.h>
#include <util/delay.h>


int main(void)
{
	DDRB |= (1<<PB1)|(1<<PB2);

	while (1)
	{
		PORTB^=(1<<PB1)|(1<<PB2);

		_delay_ms(500);

		PORTB^=(1<<PB2);

		_delay_ms(500);

	}

}
Link do komentarza
Share on other sites

Vorcras, musiałeś coś pogrzebać w opcjach kompilacji. Bo ten kod się kompiluje u mnie, a w twoim output widać:

-DF_CPU=128000UL;
co oznacza, że w opcjach projektu ustawiłeś zegar na 128 kHz.

Dodane: Wrzuć skany z różnych zakładek "Toolchain", albo zrób projekt od nowa i sprawdź co się wtedy dzieje.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

Faktycznie, zmieniłem na 1MHz wewnętrznego oscylatora dla atmegi 88 , ale błąd pozostał. 😕

------ Build started: Project: First, Configuration: Debug AVR ------
Build started.
Project "First.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.1\Vs\Compiler.targets" from project "C:\ROBOTS\PROGRAMY(atmelstudio)\First\First\First.cproj" (target "Build" depends on it):
Task "RunCompilerTask"
	C:\Program Files (x86)\Atmel\Atmel Studio 6.1\shellUtils\make.exe all 
	c:\program files (x86)\atmel\atmel toolchain\avr8 gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: In function '_delay_ms':
	Building file: .././First.c
	Invoking: AVR/GNU C Compiler : 3.4.4
	"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-gcc.exe"  -funsigned-char -funsigned-bitfields -DDEBUG -DF_CPU=1000000UL;  -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny88 -c -std=gnu99 -MD -MP -MF "First.d" -MT"First.d" -MT"First.o"   -o "First.o" ".././First.c"
<command-line>(0,16): expected ')' before ';' token
	c:\program files (x86)\atmel\atmel toolchain\avr8 gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: In function '_delay_us':
<command-line>(0,16): expected ')' before ';' token
	make: *** [First.o] Error 1
Done executing task "RunCompilerTask" -- FAILED.
Done building target "CoreBuild" in project "First.cproj" -- FAILED.
Done building project "First.cproj" -- FAILED.

Build FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

Denerwuje mnie to Atmel Studio, jest strasznie mulaste, zdecydowałem się jednak pisać w Code::Blocks z którym miałem styczność już wcześniej. (Właśnie konfiguruję)

Ale dzięki za pomoc 🙂

Link do komentarza
Share on other sites

U mnie na eclipse kompilacja się udała:

Spróbuj 2 rzeczy:

- Znajdź polecenie "Clean..." (powinno być pod "project") i przeczyść ten właśnie projekt z którym masz problemy

- Utwórz nowy projekt, skopiuj treść pliku main.c i wklej go do nowego projektu, a następnie skompiluj

  • Lubię! 1
Link do komentarza
Share on other sites

Ok, utworzyłem nowy projekt i wszystko działa.

Wcześniejszy projekt utworzyłem w lutym więc nie pamiętałem co dokładnie tam robiłem... starałem się być bardzo ostrożny w zmienianiu jakichś opcji.. no niewiem, świadomie czy nie , coś musiałem tam sknocić 😃

Dzięki 😉

Link do komentarza
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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.