www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit WinAVR-Programmierung (ATmega8)


Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, habe ein myAVR-Board, und will es mit WinAVR programmieren, doch
leider ist mir nach bislang 10-maligem lesen des Tutorials noch immer
nicht klar, wie man damit jetzt was wo und wie macht...hab folgendes
gemacht (so in der Art hätte ich mir eine Beschreibung im Tutorial auch
gewünscht...)

1. WinAVR installiert
2. Programm "Mfile" gestartet
3. MCU = ATmega8 eingestellt
4. Output format = IHEX
5. Programmer = SP12
6. Port = LPT1

die restlichen Einstellungen habe ich so gelassen.

Dann habe ich mir aus dem Netz eine .c-Datei und eine .h-Datei gezogen,
diese dienen zur Ansteuerung eines Display, habe die Dateien schon auf
meine Hardware "abgeändert" (im "Original" war das Display an Port
C, bei mir ist es an Port B)....

Also, ich hab die Dateien lcd.c und lcd_tools.h, die in der lcd.c
"included" wird...

Wie mache ich jetzt weiter? Programmieren selber kann ich auch mit dem
myAVR-Workpad, aber ich brauche ja erstmal eine HEX-Datei...

Wenn ich auf "Makefile ALL" gehe im WinAVR "Programmers-Notepad",
kommt der Fehler:

"> "make.exe" all
makefile:5: *** missing separator.  Stop.

> Process Exit Code: 2
"

Au man, warum kann man es nicht ganz einfach machen, und muss über 7
verschiedene Programme gehen?!?!?!

Also, wäre für jede Hilfe dankbar!

Autor: GrossmeisterB (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal die Dateien

Autor: GrossmeisterB (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und die .h-Datei...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe zwar keine Ahnung von C, glaube aber mal gelesen zu haben, dass
Programmcode in einer Headerdatei nix zu suchen hat. Dort gehören nur
Definitionen rein.

Aber dazu können dir die "großen Meister" vielleicht mehr sagen.

...

Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mmmmmmh...hat sich eh erledigt, Bascom funzt jetzt, also progge ich
jetzt da mit... ;-)

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuchs doch mal mit Assembler (AVR-Studio von www.atmel.com), damit
lernt man die Architektur der AVRs bedeutend besser kennen.

Das ist übrigens viel einfacher als Viele hier meinen. Da genügt als
Informationsquelle das Datenblatt des AVRs und das Befehlsverzeichnis
(auch bei ATMEL zu finden).

...

Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, Assembler wäre auch eine Möglichkeit, aber habe mich jetzt so
langsam an das Bascom gewöhnt...*ggg*

Gibt's da eigentlich "Listen" mit den Befehlen zur Ansteuerung des
ADCs?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für die Ansteuerung eines ADCs braucht man keine speziellen Befehle.

Man schaut sich im Datenblatt die I/O-Register des ADC an und setzt die
betreffenden Bits, mit dem OUT-Befehl. Mit dem IN-Befehl kann man dann
das Ergebnis der Wandlung aus den ADC-Registern auslesen.

Listen für die I/O-Register und die unterstützten ASM-Befehle enthält
das Datenblatt des AVRs. Aber darauf achten, dass das vollständige
Datenblatt benutzt wird, nicht die "Marketing-Kurzfassung".

Viel Erfolg...

...

Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, Bascom läuft, das Display und der ADC auch, aber ich möchte es
trotzdem mit C/C++ versuchen, habe jetzt nochmal WinAVR installiert,
und möchte nochmal die genaue Reihenfolge geklärt haben...

Also, meiner "Meinung" nach müsste es wie folgt funktionieren:

1. Schreiben des Programmes im "Programmers Notepad", als .c-Datei
speichern
2. Aufrufen von "Mfile", einstellen aller Parameter, inklusive der
richtigen in 1. geschriebenen Datei
3. "Make All" auswählen
4. Hex-Datei auf Controller brennen

Ist diese "grobe" Reihenfolge soweit richtig?

Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, habe es jetzt mal wieder mit WinAVR versucht, bin auch ein Stück
weiter, er fängt an mit

-----begin--------
bla bla bla

make.exe: ***No rule to make target 'main.o', needed by 'main.elf'.
stop.

Process Exit Code: 2



Was ist denn jetzt noch falsch?!?!

Autor: _CH_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
das hört sich ganz danach an, dass da mit dem Makefile was nicht passt.
Hast du im Makefile deine main.c eingetragen?

Gruß,
Christian

Autor: Hermann Günther (hahgeh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Hast du vielleicht vergessen im Makefile TARGET = lcd anstatt dem
Standardwert TARGET = main anzugeben?

Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mmmmh...ich werde das nochmal genau prüfen...aber ich habe immer noch
nicht genau verstanden, welche Datei sich in welchem Verzeichnis
befinden muss...

Also, ich schreibe das Programm mit dem "Editor", speichere es als
"lcd.c" ab, die .h-Datei ist im selben Verzeichnis, dann mit Mfile
das Makefile erstellen, auch "Save As" in das gleiche Verzeichnis wo
auch schon lcd.c und die .h-Datei ist, dann im "Editor" auf Make
Clear, dann auf Make All??!!?

Autor: Michael Wolf (mictronics) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du den Code in lcd.c schreibst, und dieses dann als solches
abspeicherst, dann must Du in MFile unter Menü "Makefile" -> "Main
file name..." eintragen "lcd" anstatt "main".

MFile geht davon aus, das sich die Hauptroutine main() in einer Datei
befindet die main.c heist.

/Michael

Autor: Gross Meisterb (grossmeisterb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich werde das nochmal versuchen, ich denke ich habe es soweit
"fertig", aber der Compiler haut trotzdem jede Menge Fehler raus.
Welche Include-Dateien muss ich denn wie vorher "includen"?
Also welche Dateien müssen Standardmäßig enthalten sein?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich werde das nochmal versuchen, ich denke ich habe es soweit
> "fertig", aber der Compiler haut trotzdem jede Menge Fehler raus.

Welche denn?

> Welche Include-Dateien muss ich denn wie vorher "includen"?
> Also welche Dateien müssen Standardmäßig enthalten sein?

"Standardmäßig" müssen gar keine enthalten sein. Du brauchst halt die
Header, die die von dir benutzen Funktionen deklarieren.

Autor: Gross Meisterb (grossmeisterb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Standardmäßig muss keine drin sein?
Keine stdio.h oder so?!?!

Habe nur immer was von "avr/io.h" gelesen...

Mmmh...ich teste nachher direkt mal, und schreibe dann rein was für
Fehler er anzeigt.
Man könnte doch auch die Funktionen, die in der .h-Datei stehen, vor
die main-funktion setzen, und hätte ja somit das gleiche "Gebilde",
richtig?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Habe nur immer was von "avr/io.h" gelesen...

Die brauchst du halt, wenn du irgendwelche I/O-Registernamen oder
Funktionen aus diesem Header benutzt.

> Man könnte doch auch die Funktionen, die in der .h-Datei stehen,
> vor die main-funktion setzen, und hätte ja somit das gleiche
> "Gebilde", richtig?

Ja, aber Header sind ja gerade dazu da, daß man sich das sparen kann.

Autor: Gross Meisterb (grossmeisterb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, aber um eine "Fehlerquelle" auszuschließen werde ich das mal
versuchen...das dass der Sinn ist war mir auch klar... ;-)

Habe aber nochmal geschaut, es kommt diese Meldung/Fehler:

Compiling: main.c
avr-gcc - -mmcu=atmega8 ...

main.c8: warning: function declaration isn't a prototype
main.c:34: "         "         "          "       "
main.c:74: "         "         "          "       "
main.c:97: error: parse error before "Main"
main.c: In function 'Main':
main.c:99: warning: implicit declaration of function 'lcd_init'
main.c:101: warning:   "          "            "
'lcd_writechar'
.
.
.
.
.

make.exe*** [main.o] Error 1
Process Exit Code: 2

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht denn Dein main.c aus?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.