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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.