PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann test.c nicht speichern



duronus
30.01.2007, 15:23
Hallo miteinander

Ich habe alle Tests mit dem Asuro erfolgreich beendet und versuchte nun das Programm zu flashen, wo die Status-LED rot leuchten sollte.
Wenn ich jetzt die test.c Datei öffne, den korrekten Quellcode "reinkopiere" und danach auf make gehe und anschliessend flashe, funktioniert zwar das compillieren und das flashen, allerdings bleibt die Stautsled grün...

Wenn ich vor dem compillieren die test.c speichere, also die vorhandene überschreibe, und danach versuche zu compillieren geht dass nicht... es kommt folgendes:

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c:1:10: error: #include expects "FILENAME" or <FILENAME>
test.c: In function 'main':
test.c:3: warning: implicit declaration of function 'Init'
test.c:4: warning: implicit declaration of function 'StatusLED'
test.c:4: error: 'RED' undeclared (first use in this function)
test.c:4: error: (Each undeclared identifier is reported only once
test.c:4: error: for each function it appears in.)
test.c:7:2: warning: no newline at end of file
make: *** [test.o] Error 1

> Process Exit Code: 2


Das mit dem compillieren mit der make (gemacht laut anleitung) funktioniert also nur, wenn ich die Datei test.c nicht speichere...leider habe kann ich so aber auch kein neues Programm draufladen.

Freue mich sehr über eine Antwort.


Danke


Duronus

duc750
30.01.2007, 15:28
Hallo,
die test.c hast du doch sicher von der CD auf deine Festplatte kopiert. Dort mußt du sie nun noch beschreibbar machen. Rechts anklicken, Eigenschaften und dort den Haken bei "schreibgeschützt" rausmachen.

Grüße
duc750

edit: Hab dein Posting nochmal genau gelesen. Hast du vielleicht beim "reinkopieren" irgendwas vom Quelltext vergessen?

duronus
30.01.2007, 15:31
Danke für die schnelle Antwort

Doch ich konnte die Datei test.c ja überschreiben, nur ging nachher das compillieren nicht mehr..

Habe jetzt auch nochmals nachgeschaut und die test.c war nicht schreibgeschützt...

Danke

Duronus

duc750
30.01.2007, 15:35
Hallo,
habe oben nochmal was eingetragen.
Schau doch noch mal danach.
duc750

damaltor
30.01.2007, 15:38
das klingt sehr danach als wenn die erste zeile fehlen würde... die beginnt meist mit einem "#"

=)

duronus
30.01.2007, 15:39
Jetzt hat es soeben funktioniert :)

Ich habe jetzt nur die Zeile reinkopiert die tatsächlich verändert wurde und den Rest so gelassen wie er war.

Dann ging es...

Danke für deine Hilfe

Duronus

/edit/ Der Fehler ist glaub ich in der Anleitung: Da steht folgendes:

#include “asuro.h”
int main(void) {
Init();
StatusLED(RED);
while(1);
return 0;
}

Wenn ich das reinkopiere funktioniert es nicht, ich denke es liegt an der Klammer nach (void), die eckige.

/edit/

duc750
30.01.2007, 15:40
..na alles bestens ;-)
Viel Spass weiterhin!
duc750

damaltor
30.01.2007, 15:49
nein an der klammer liegt es nicht, diese ist sogar notwendig. =)

nach void (evtl auch in der nächsten zeile) muss mit { der beginn der funktion main angezeigt werden. am ende des programms steht dann, um die funktion zu beenden, }.

die erste zeile hat gefehlt, bzw. war nicht ganz richtig:

wenn in den programmen der anleitung ein " steht (doppelte anführungszeichen), dann wird das durch das kopieren unbrauchbar. das heisst, du musst entweder abtippen, oder rauskopieren und dann alle " neu tippen. der fehler ist bekannt und wurde schon oft gemacht, bei jedem der angefangen hat die programme zu kopieren =)

warum das so ist kann ich dir gar nicht sagen, aber auf jeden fall müssen nach dem rauskopieren alle " neu gemacht werden.

duronus
30.01.2007, 16:36
Danke für die Antwort

Doch bei einem anderen Beispielprogramm aus der Anleitung habe ich das gleiche Problem...

Durch das Anführungszeichen neu setzen, wird es leider auch nicht gelöst.
Habe auch schon das ganze abgetippt und es funktionierte nicht...

#include “asuro.h”
int main(void) {
Init ()
while (1) {
if (PollSwitch()>0) {StatusLED (RED);}
else {StatusLED (GREEN);}
}
}

Kannst du mir sagen wo das der Fehler ist?

Vielen Dank

Duronus

damaltor
30.01.2007, 16:58
hinter init() die klammern müssen direkt ran an das wortm und das semikolon fehlt

falsch: Init ()
richtig: Init();

duronus
30.01.2007, 17:38
Vielen Dank für die schnelle und richtige Hilfe :)

Grüsse

Duronus