Hallo Forumler, versuche grade ein Projekt für die Hochschule zu machen, allerdings war mein Mikrocontroller-kurs mehr als dürftig. Also erarbeite ich mir das jetzt alles nochmal selbst. Soweit bin ich gekommen: LEDs leuichten lassen und ausschalten. Über den Uart ein einzelnes Zeichen senden. Alles soweit nach dem Tutorial hier auf der Seite. Allerdings bin ich über irgendwas gestolpert was ich nicht so ganz verstanden hab als ich versuchte einen String zu senden, nach der Tutorial Anleitung. Kurzer Einschub: Ich fände es sinnvoll wenn an der Stelle im AVRGCC-Tutorial kurz erklärt wird wie man den String definieren muss und wie die Funktion in der Main dann aufgerufen wird. Dort bin ich nämlich dann hängen geblieben und hab erst nicht verstanden wieso. Ich habe gleichzeitig versucht, die Funktionen zum puts und putc in eine Externe c DAtei abzulegen weil ich mein Projekt gern übersichtlich gestalten wollte und früh übt sich usw. Das eigentliche Problem scheint aber zu sein, dass ich keine Variablen beschreiben kann. Register direkt anzusprechen ist offensichtlich kein Problem. Als ich das verstanden hab habe ich versucht einige andere Variablen zu deklarieren (Keine Fehler) und zu beschreiben: Immer Fehler. Deshalb hier meine Quellcodes und das Winavr-Projekt im Anhang. Die Files aus dem default Ordner hab ich mal nicht kopiert weil das ja wohl ältere Ergebnisse des selben Projekts sind und im Moment unwichtig, oder? Hier die Vollständigen Meldungen die der Compiler während dessen ausgiebt Build: avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT seri.o -MF dep/seri.o.d -c ../seri.c ../seri.c:5:2: warning: #warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 8000000" ../seri.c:24:22: warning: extra tokens at end of #include directive ../seri.c:30: warning: data definition has no type or storage class ../seri.c:30: warning: type defaults to 'int' in declaration of 'i' ../seri.c:30: error: conflicting types for 'i' ../seri.c:29: error: previous declaration of 'i' was here ../seri.c:34: warning: data definition has no type or storage class ../seri.c:34: warning: type defaults to 'int' in declaration of 'wort' ../seri.c:34: error: conflicting types for 'wort' ../seri.c:32: error: previous declaration of 'wort' was here ../seri.c:34: error: invalid initializer ../seri.c:47: error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token make: *** [seri.o] Error 1 Build failed with 6 errors and 6 warnings... Meine Daten: Windows 7 x64 Selbst Zusammengestecktes Experimentierboard mit Atmega8 8MHz Quarz AVR-Dragon zum Programmieren Hoffe das sind alle Infos die Ihr braucht. Wenn nicht bitte schreibt mir. Ich brauch dringend Hilfe. Danke Danke im Voraus Gruß Ulli
Quellcode bitte als Anhang und nicht im ZIP-File. Es macht es einfacher, wenn man das nicht erst entpacken muss und lokal speichern. Du erhälst doch Fehlermeldungen und Warnungen. Bitte versuche die zu verstehen. Wenn Du ein Detail konkret nicht verstehst, dann poste das hier. Aber Code zu korrigieren ist eine Tätigkeit die Du beherrschen musst. Das können wir Dir nicht abnehmen. Einige hier sind erfahrungsgemäß auch dazu bereit, aber das hilft Dir auf die Dauer nicht weiter, weil Du so nie lernst selbst damit umzugehen. Du wärst immer auf Hilfe angewiesen um zu programmieren. Also formuliere Deine Frage so, das man feststellen kann, wo genau Du nicht weiterkommst. Das Tutorial ersetzt übrigens nicht die eigenständige Lektüre eines entsprechenden C-Buchs. Deswegen wird es nicht alles und im Detail erklären. Bitte schaff Dir eins an oder nimm eins aus dem Netz.
Ulli Klappenberger schrieb: > Das eigentliche Problem scheint aber zu sein, dass ich keine Variablen > beschreiben kann. Nicht außerhalb von Funktionen, so wie du es versuchst. Du kannst sie initialisieren, also bei der Definition gleich einen Wert mitgeben, aber du kannst nicht irgendwo außerhalb einer Funktion eine Zuweiseung schreiben. Wir können die Meldungen ja mal durchgehen: > ../seri.c:24:22: warning: extra tokens at end of #include directive Sollte offensichtlich sein, wenn du dir die Zeile mal anschaust. > ../seri.c:30: warning: data definition has no type or storage class Da Zuweisungen außerhalb von Funktionen nicht erlaubt sind, geht der Compiler davon aus, daß du mit
1 | i=1; |
eine Definition meinst, wo du nur den Typ vergessen hast...
> ../seri.c:30: warning: type defaults to 'int' in declaration of 'i'
... und nimmt deswegen an, daß du int meintest. Wenn du dich fragst,
wieso er sowas macht: int als Default ist noch aus grauer Vorzeit
übriggeblieben.
Er macht also ein
1 | int i=1; |
daraus. Da du aber direkt davor schon ein i mit anderem Typ (uint8_t) definiert hast, erkennt der Compiler, daß es hier einen Konflikt zwischen zwei unterschiedlichen Definitionen von i gibt: > ../seri.c:30: error: conflicting types for 'i' > ../seri.c:29: error: previous declaration of 'i' was here Die restlichen Warnungen/Fehler sind dann nochmal das gleiche für weitere Variablen.
Vielen, vielen Dank Rolf Magnus, natürlich weiß ich, dass man Variablen nicht außerhalb von Funktionen beschreiben kann. Also zumindest wusste ich es mal. Bin nur nicht drauf gekommen. Das mit dem Semikolon hinter dem Include ist durch spätnächtliches rumprobieren entstanden und ist natürlich Blödsinn. Vielleicht sollte man einfach nur einen Schutz in die PCs einbauen das nach 00 Uhr nicht mehr programmiert werden kann. Da kommt nix bei rum. Auf jeden Fall LÄUFT es jetzt und ich kann weiter arbeiten. Bin wohl auch ein bisschen verwöhnt von der ganzen Matlab-Programmiererei. @Huch: Nett, dass du versuchst hier das Forum für die wirklich Hilfestellenden leichter zu machen. Natürlich habe ich hier auch ein C Buch liegen und natürlich kann ich meinen Code auch selber korrigieren(Hab ich das etwa gefordert?). Und ich denke ich zeige schon genug Selbstständigkeit, habe schon seit 1,5 Tagen an diesem Problem gesessen. Hatte nur das Gefühl das ich einen ganz kleinen Fehler übersehe und wollte fragen ob ihn jemand sieht. Aber vielleicht kannst du mir ja ein noch ein gutes C-Buch empfehlen? Oder noch besser ein Compiler-Meldungen verstehen für Dummies. Ich denke an denen ist schon so mancher Programmierer verzweifelt. Ich bin durchaus des Englischen mächtig, aber manchmal sprechen die Compiler halt ihre eigene Sprache. Und außerdem wofür ist das Forum doch dafür da Hilfe zu erhalten, oder hab ich da was falsch verstanden? Nochmals THX Magnus. Gruß Ulli
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.