Skocz do zawartości

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


Pomocna odpowiedź

Napisano

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 😥

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.

/*
* 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);

	}

}

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.

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 🙂

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

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 😉

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