Forum: Mikrocontroller und Digitale Elektronik AtmelStudio, GCC, WinAVR, und was noch?


von Roy T. (thinnes)


Lesenswert?

Hallo,

Ich habe genau diesen Post bereits in einem Anderen Thread von mir 
gepostet, jedoch ging es in diesem Thread um Programmiersprachen. 
Deshalb poste ich es hier nochmal neu mit passendem Titel, und hoffe so, 
Hilfe zu erlangen.

Ich habe nun ein wenig rumprobiert in ASM so gut wie in C.

Ich habe AS4 und AS6.2 mit einem STK500. Mit AS4 schaffe ich es
zumindest mal den ASM-Code auf den ATmega16 zu bekommen. Aber den C-Code
bekomme ich weder mit AS4 noch mit AS6.2 drauf. Dazu kommt dass AS6.2 SO 
enrom lahm ist, dass es schon keinen Spass mehr macht damit zu arbeiten. 
Ich weiss nicht ob mein PC einfach sch*iss ist, oder ob AS6.2 einfach zu 
viel Ressourcen benötigt.

Irgendwie scheine ich da was falsch zu machen. Ich habe nun auch WinAVR
ausprobiert und da klappt es auch nicht auf Anhieb :-(

Da jedoch der ASM-Code mit AS4 funktioniert hat, liegt es ja wohl eher
nicht am STK500, dem uC oder der Software...

Gibt es denn da kein Entwicklertool das alles macht? Also wo man den
Code schreibt, dann auf einen Button drückt und das Tool compiliert und
erstellt alle Dateien die man braucht??

Mit AS4 (irgendwie übersichtlicher und viel einfacher als AS6.2) habe
ich zumindest eine Konkrete Fehlermeldung beim "Make" bekommen.
Ich habe zwar das Make per Kommandozeile von Windows ausgeführt, aber
zumindest kam ne Fehlermeldung... Und zwar vermisst er eine .o Datei.

Was genau habe ich vergessen zu machen? Und wie bereits gefragt, geht
das nicht simpler??

mfG
Roy

: Gesperrt durch Moderator
von Rene H. (Gast)


Lesenswert?

Du kannst, darfst und musst davon ausgehen, dass der Fehler bei einer 
Fehlbedienung von dir liegt.

Du schreibst nicht was Du genau machst, zB. wie das Projekt aufgebaut 
ist in AS.
Mach doch mal Screenshots.

von Draco (Gast)


Lesenswert?

Also ich weiß nicht, in AS sowie auch WinAVR schreibe ich meinen Code 
und drück nen Knöpfchen, den Rest machen beide von allein... 
Compilieren, ausgeben und auf den µC schreiben.... mit einem Klick, von 
Haus aus, ohne Make etc...

von Dieter F. (Gast)


Lesenswert?

Roy T. schrieb:
> Ich habe zwar das Make per Kommandozeile von Windows ausgeführt

Und warum machst Du das so? AS kann das alles von Haus aus ... es sei 
denn, es ist nicht korrekt installiert.

von Roy T. (thinnes)


Lesenswert?

Hallo,

Ich wollte nun die Screenshots machen, doch da ist nun ein anderes 
Problem aufgetreten.

Und zwar beim verbinden mit dem Controller, meldet AS dass die 
Signaturen unterschiedlich zum gewählten uC sind. Ich habe allerdings 
ein Atmega16 drin so wie ich ihn auch ausgewählt habe.

Und davor hat es auch funktioniert, das ASM Programm konnte ich ja drauf 
laden und auch am Board mit den Tastern und LED's testen. Danach habe 
ich den uC gelöscht mit "Erase Device" und versucht das C-Programm hoch 
zu laden. Das konnte ich allerdings nicht machen, da ich zum hochladen 
ja diverse Dateien brauche, die ich ja nicht hergestellt bekomme.

Was kann da jetzt schief gelaufen sein, und wie bekomme ich jetzt 
erstmal den Controller wieder hin, dass ich Screenshots machen kann?

mfG
Roy

von Wolfgang (Gast)


Lesenswert?

Roy T. schrieb:
> Gibt es denn da kein Entwicklertool das alles macht? Also wo man den
> Code schreibt, dann auf einen Button drückt und das Tool compiliert und
> erstellt alle Dateien die man braucht??

Gibt es - nennt sich "Arduino". Und den STK500 kannst du dir dann auch 
sparen.

von Roy T. (thinnes)


Lesenswert?

Hallo,

Ja ok. Es gibt wohl modernere Lösungen als meine Steinzeitcontroller...

Aber ich möchte vorerst nur "rumspielen", C erlernen, und vor allem, 
nicht sofort wieder Geld ausgeben. STK500 und ATmega16 und 32 hab ich 
hier liegen und kosten nichts..

Dazu kommt dass ich ein Layout geroutet habe, und die Platine nur 
herstellen brauche. Sprich, ich habe bereits Hardware passend zum 
ATmega16/32 entwickelt...

Ich will also unbedingt mit meinem Bestand arbeiten und will also eine 
"praktische" Lösung finden wo ich nicht wieder investieren muss.

Screenshots folgen demnächst, ich habe gerade erst das Signaturen 
Problem gelöst...

mfG
Roy

von Roy T. (thinnes)


Lesenswert?

Hallo & Guten Morgen,

Ich habe mir jetzt SEHR viel Zeit genommen, (mein Rechner ist sehr 
langsam und AS6.2 noch viel mehr - einige "Clicks" dauerten 5-10sekunden 
bis überhaupt etwas passiert ist), und habe nun Schritt-für-Schritt mit 
Screenshots verfolgt ein NEUES Projekt (ohne etwas um zu konfigurieren, 
was AS6.2 vorgibt).

Wie bereits erwähnt AtmelStudio 6.2:

Zuerst der Start-Bildschirm wo ich ein Neues Projekt erstelle:
http://www.thinnes.eu/PIXs/1-New_Project.jpg

Dann, Projekt Auswahl:
http://www.thinnes.eu/PIXs/2-Projekt_Auswahl.jpg

Dann, Auswahl des uC:
http://www.thinnes.eu/PIXs/3-uC_Auswahl.jpg

Dann, Start-Bildschirm für's Programm
http://www.thinnes.eu/PIXs/4-C_Programm_start.jpg

Dann, mein Code:
http://www.thinnes.eu/PIXs/5-C_Programm_ende.jpg

So weit so gut, jetzt kommt das, wo ich nicht so richtig verstehe, was 
ich machen muss, und was passieren soll, und wie ich am Ende die Dateien 
bekomme, die ich für den Controller brauche.

Fangen wir mal an mit Build Solution (ohne Fehlermeldung, den Screenshot 
habe ich nach dem Ausführen gemacht):
http://www.thinnes.eu/PIXs/6-Build_Solution.jpg

Dann, Build uC (ohne Fehlermeldung, den Screenshot habe ich nach dem 
Ausführen gemacht):
http://www.thinnes.eu/PIXs/7-Build_uC.jpg

Dann, Compile (ohne Fehlermeldung, den Screenshot habe ich nach dem 
Ausführen gemacht):
http://www.thinnes.eu/PIXs/8-Compile.jpg

Dann rufe ich das Programmierfenster auf für den Controller:
http://www.thinnes.eu/PIXs/9-Device_Programming.jpg

Dann, uC auswählen und Signaturen lesen (das zeigt automatisch ob die 
Verbindung steht):
http://www.thinnes.eu/PIXs/10-Device_Select&Read.jpg

Danach, Programmieren???? Ich finde die "gewünschten" Dateien NUR im 
Debug Ordner des Projektes und dazu kann ich nach dem Auswählen immer 
noch kein "Program"-Button clicken:
http://www.thinnes.eu/PIXs/11-Production_File.jpg


So nun, bitte nicht zu hart sein, und mich nicht direkt in der Luft 
zerfetzen, aber was mache ich falsch, nicht oder zu viel??? Und was muss 
ich machen damit es klappt?? Wie gesagt ein Test mit einem ASM-Programm 
hat geklappt aber das hier bekomme ich nicht hin...

mfG
Roy

von Dieter F. (Gast)


Lesenswert?

Programmieren über "Memories" - nicht über "Production File".

Die erforderlichen .hex und .elf Dateien findest Du im "Debug"-Ordner.

Viel Erfolg :-)

von Georg G. (df2au)


Lesenswert?

Roy T. schrieb:
> langsam und AS6.2 noch viel mehr

Wenn es keinen zwingenden Grund gibt, AS6.2 zu verwenden, bist du mit 
AS4.19 (oder AS4.18SP3) deutlich besser bedient, speziell bei einem 
etwas langsameren Rechner.

von Roy T. (thinnes)


Lesenswert?

Dieter F. schrieb:
> Programmieren über "Memories" - nicht über "Production File".
>
> Die erforderlichen .hex und .elf Dateien findest Du im "Debug"-Ordner.
>
> Viel Erfolg :-)

Hallo und vielen Dank, das hat sogar geklappt... Nur das Programm 
funktioniert nicht wie ich wollte... Aber ich muss es ja irgendwie 
lernen :-P

@Georg, auch dir Danke, wenn AS4 auch alles kann was ich für C brauche, 
dann werde ich AS6.2 wieder runter schmeissen... Weil AS4 läuft viel 
besser bei mir, obwohl mein PC jetzt auch nicht SO alt ist... Aber sogar 
Photoshop läuft runder als AS6.2...



EDIT: Ich habe soeben probiert, das Ganze mit AS4.19 zu machen, aber da 
kommt beim "BUILD" ein Fehler: avr-objcopy: 'LED-TEST.elf': No such file

Und ja, er macht mir die .hex und die.elf Dateien nicht. So dass ich da 
nicht programmieren kann

Ich werde also doch mit AS6.2 weiter machen müssen.

mfG
Roy

: Bearbeitet durch User
von Dieter F. (Gast)


Lesenswert?

Roy T. schrieb:
> Ich werde also doch mit AS6.2 weiter machen müssen.

Also ich habe 6.2 mit Serviece-Pack 2 auf einem 7 Jahre alten Rechner 
mit Windows 7 am Laufen.

Der Start braucht etwas aber dann geht es recht flüssig. Ich habe keine 
Probleme mit der SW. Ggf. st der Speicher ein Problem - ich bin mit 16 
GB gut ausgestattet (habe ich irgendwann von 4 auf 16 für wenig Geld 
aufgerüstet).

Was soll Dein Programm denn tun?

Aktuell schaltet es den kompletten PORTB permanent (gaaanz) kurz ein und 
aus (länger ein als aus wegen des Sprung-Befehls zum Ende der 
While-Schleife) - und zwar so lange, bis PIND0 (mit einem Schalter ...) 
auf GND gezogen wird. So lange PIND0 auf GND gezogen wird bleibt PORTB 
an (und geht nicht gaaanz kurz aus).

von Roy T. (thinnes)


Lesenswert?

Hallo,

Naja ich hab 8GB. Evtl. liegt es daran...

Ja, zur Info: ich arbeite mit dem STK500. Ich benutze also dessen LED's 
und Switches.

Es sollte eigtl. so sein dass die LED's aus sind und nur leuchten wenn 
und solange ich den ersten Taster drücke.

Aber ich habe da wohl was falsch gemacht...

mfG
Roy

von Dieter F. (Gast)


Lesenswert?

Roy T. schrieb:
> Aber ich habe da wohl was falsch gemacht...

Nicht böse gemeint - aber ich würde mich an Deiner Stelle mal da 
durcharbeiten:

https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

von Georg G. (df2au)


Lesenswert?

Roy T. schrieb:
> Und ja, er macht mir die .hex und die.elf Dateien nicht. So dass ich da
> nicht programmieren kann

Das sollte das geringste Problem sein. Damit er das HEX-File macht, muss 
man bei den Projekt Optionen nur einen passenden Haken machen und für 
das ELF-File sollte man ein Verzeichnis angeben (was üblicherweise AS 
vorschlägt). Ansonsten keine Schnörkeleien wählen (für den Anfang), kein 
externes Makefile und keine externen Werkzeuge, die AVR Toolchain ist 
prima.

Es gibt einige sehr gute Tutorials für AS. Schon mal durchgelesen?

von Roy T. (thinnes)


Lesenswert?

Hallo,

das AVR-GCC Tutorial habe ich mir schonmal angesehen. Aber da steht so 
viel drin, aber keine ganz simplen Beispiele wie meins jetzt. Wo man 
einfach sieht wie man einen Taster einliest und wie man eine LED 
ausgibt...

Ich werde natürlich weiter versuchen alles ein wenig zu verstehen. Aber 
für mich geht das erlernen einer Programmiersprache am Besten mit 
einfachen Beispielen.

Ein AS Tutorial habe ich bisher noch nicht gelesen. Die .elf Datei macht 
er einfach nicht... ich habe bereits versucht den Ordner zu verändern, 
aber auch dann macht er keine elf datei...

ich werde jetzt einfach mit AS6.2 weiter machen... es hilft mir nicht 
jetzt wieder Tage und wochen rum zu spielen bis as4 läuft...

mfG
Roy

von Stefan F. (Gast)


Lesenswert?

Normalerweise installiert man zuerst WinAVR und dann das AVR Studio 
4.19. Konfigurieren muss man dann nichts. Die Verbindung zwischen den 
beiden Programmen wird automatisch hergestellt.

Alle späteren Versionen von Atmel Studio laufen auf meinem Laptop (Dual 
Core 1,3Ghz mit 4 virtuellen Kernen, 8Gb RAM, SSD) unerträglich langsam. 
Am schlimmsten war Atmel Studio 5, das stürzte auch noch häufig ab.

Alternativ magst du vielleicht Eclipse oder Netbeans verwenden. Diese 
Entwicklungsumgebungen laufen auf allen Computern flott, sind aber 
wesentlich komplexer zu bedienen, als AVR Studion 4.19. Und du müsstest 
dich mit Makefiles auseinander setzen. Wobei du das früher oder später 
wahrscheinlich sowieso tun wirst.

Anleitung dazu: http://stefanfrings.de/avr_hello_world/index.html

Beitrag #5240871 wurde von einem Moderator gelöscht.
Beitrag #5837008 wurde von einem Moderator gelöscht.
Beitrag #5838159 wurde von einem Moderator gelöscht.
Beitrag #5838224 wurde von einem Moderator gelöscht.
von Stefan (Gast)


Lesenswert?

@TO: Dein Projekt liegt bei Dir ja auf Laufwerk F. Wenn das ein USB 2.0 
Stick o.ä. ist, dann könnte das der Grund sein, warum bei Dir alles so 
langsam läuft.

von Stefan F. (Gast)


Lesenswert?

In den vergangenen 3 Jahren hat er es sicher hinbekommen. Wenn nicht, 
ist ein neue Hobby wohl besser.

von Ottos Mops (Gast)


Lesenswert?

Hallo

gerade weil der Thread schon recht alt ist, sich aber leider nichts 
geändert hat:

"...das AVR-GCC Tutorial habe ich mir schonmal angesehen. Aber da steht 
so
viel drin, aber keine ganz simplen Beispiele wie meins jetzt. Wo man
einfach sieht wie man einen Taster einliest und wie man eine LED
ausgibt..."

Das ist eigentlich nicht der Fall, es werden auch sehr einfache 
Beispiele gebracht. Aber das erkennt man erst wirklich wenn man diese 
Beispiele eigentlich nicht mehr braucht...

Die Erklärungen sind sehr "seltsam" gemischt im Anspruch und Qualität, 
teilweise extrem genau vor allem die Hardware betreffend(für jemanden 
mit Grundlagen in der Hardware fast schon quälend pedantisch) gefühlt 
fast schon für "Doofe"(Sorry ist nicht wirklich böse gegenüber den 
Lernenden gemeint und natürlich etwas aus den Blickwinkel von Jemanden 
der schon seit der Kindheit Wissen und Erfahrungen im Hardwarebereich 
angesammelt hat) aber eben leider auch betreffend des Programmieren 
allgemein und C speziell sehr oft schwer verständlich erklärt bzw. es 
wird Wissen in C und teilweise (aber deutlich weniger)auch in der 
Mathematik vorausgesetzt was, nicht nur, bei einen Programmieranfänger 
nun mal nicht (mehr) vorhanden ist.

Das scheint aber ein generelles Problem, bei Einsteigertutorials im µC 
Umfeld zu sein.
Selbst im Arduino Universum wird bezüglich der Software, abgesehen von 
den absoluten Grundlagen wenig erklärt und z.B. der Nutzen, Sinn und 
Erstellung eines Objekts, geschweige den was den nun genau hinter den 
Begriff Instanz, Klasse, Bibliothek usw. steht so gut wie nie wirklich 
erklärt- irgendwie klafft auch dort eine große Lücke zwischen den 
durchaus guten Erklärungen vieler Tutorials der absoluten Software 
Grundlagen (jeweilige Programmiersprache, allgemeine 
Programmiergrundlagen) und der oft schon in nur etwas anspruchsvolleren, 
also wo ernsthaften Nutzanwendungen beginnen, Programmen (Sketches) 
genutzten Programmmiersprachennutzung und Möglichkeiten.
Wenn man dann in einen Programm auf einmal liest: "Das Objekt xyz wurde 
instantiiert" hat man als vollkommender Anfänger der durchaus mehrere µC 
Tutorials durchgearbeitet hat nur noch Fragezeichen vor den geistigen 
Auge und fragt sich was in aller Welt nun jetzt gemeint ist - wird dann 
noch (als Unwissender nicht erkenntlich) der gleiche Name für das 
jeweilige Objekt wie die Bezeichnung der Klasse verwendet die sich nur 
von der Groß und Kleinschreibung unterscheiden, gerne auch als 
englischsprachige Abkürzung, trägt das ganz bestimmt nicht dafür bei das 
man wenigstens eine vage Vermutung hat was da nun wieder abläuft.

Googeln hilft ausgerechnet in diesen Bereich einen nun mal wenig 
wissenden Anfänger meist auch nicht weiter da es so gut wie immer nur 
Treffer gibt bei den es um Details bzw. tiefer gehende Fragen von 
Fortgeschrittenen Anwendern geht.

Nur durch lesen vieler Quellen, gezwungener Weise auch aus dem PC 
Bereich (der mich aber eigentlich nicht interessiert - ich möchte "nur" 
µC und das dort notwendige C , C++ oder "Arduino" also eine angepasste 
Mischung daraus, nutzen) habe ich langsam verstanden was mit 
"kryptischen" Kommentaren wie "Das Objekt xyz wir instantiiert" gemeint 
ist oder warum Befehle manchmal "so komisch" aussehen (Da taucht auf 
einmal ein Punkt, zwei Doppelpunkte oder eine "Zauberfunktion" aus den 
nichts auf).

Es fehlt wirklich, auch hier im Forum, an einen echten C, C++, "Arduino" 
und von mir aus auch einen Assemblertutorial das sich vollständig auf µc 
Nutzung beschränkt und von wirklich "Null Wissen" bei der Programmierung 
ausgeht, dafür aber nicht über Seiten hinweg (übertrieben) beschreibt 
was Masse ist, wie man saubere 5V bekommt und wie der jeweilige Sensor 
oder Aktor angeschlossen wird oder was ein Widerstand ist und wie dessen 
Wert mittels Farbringen Codiert ist, wie ein Transistor genutzt wird, 
warum es ein Lowlevel MOSFET sein muss, das bei einer LED der Strom das 
wichtige ist usw.

Otto Mops

von c-hater (Gast)


Lesenswert?

Ottos Mops schrieb:

> Es fehlt wirklich, auch hier im Forum, an einen echten C, C++, "Arduino"
> und von mir aus auch einen Assemblertutorial das sich vollständig auf µc
> Nutzung beschränkt und von wirklich "Null Wissen" bei der Programmierung
> ausgeht, dafür aber nicht über Seiten hinweg (übertrieben) beschreibt
> was Masse ist, wie man saubere 5V bekommt und wie der jeweilige Sensor
> oder Aktor angeschlossen wird oder was ein Widerstand ist und wie dessen
> Wert mittels Farbringen Codiert ist, wie ein Transistor genutzt wird,
> warum es ein Lowlevel MOSFET sein muss, das bei einer LED der Strom das
> wichtige ist usw.

Nein. Die Grundlagen der jeweils verwendeten Sprache lernt man besser 
nicht im Kontext der µC-Programmierung, sondern auf dem PC. Denn damit 
ist das um vieles leichter.

Wenn man die Grundlagen der Sprache dann irgendwann wirklich 
beherrscht, dann ist der Punkt erreicht, an dem man tatsächlich auf den 
µC als Zielsystem wechseln kann. Da gibt es dann noch genug Probleme, 
weil vieles von der dann schon gewohnten Infrastruktur teilweise oder 
ganz wegfällt. Das ist genau der Punkt, den diese Tutorials zum Thema 
haben, sie können und wollen aber nicht die Grundlagen der Sprache 
vermitteln. Die muß man einfach vorher lernen.

von Stefan F. (Gast)


Lesenswert?

Otto Mops,
ich bin etwas unsicher, ob du ein gutes Tutorial suchst oder nur deine 
Meinung dazu äußern wolltest.

Falls du suchst, schau Dir meins mal an: 
http://stefanfrings.de/mikrocontroller_buch/index.html

Es führt in die Programmierung von AVR Mikrocontrollern in C ein, ohne 
Grundlagen voraus zu setzen.

Was Arduino angeht, habe ich schon einige Bücher in der Hand gehalten, 
die einen guten Eindruck machen. Ich denke, es ist keine Schande, für 
ein Buch mal 30 bis 60 Euro auszugeben. Wer sich nur auf kostenloses 
Material beschränkt, sollte besser nicht meckern.

Dass es nur wenig Tutorials gibt, die nur die Programmierung ganz ohne 
Hardware vermitteln, halte ich für absolut richtig. Wie der c-hater 
schon schrieb, lernt man die Programmierung besser auf einem PC, als auf 
so einer abgespeckten Hardware. Wenn man Mikrocontroller im Hobby 
einsetzt, dann doch gerade deswegen, um Sensoren und Aktuatoren 
anzusteuern. Kein normaler Bastler Mensch kauft sich ein fix und 
fertiges Board mit ein paar LEDs und Tastern, um nur diese Komponenten 
zu nutzen. Das wäre extrem langweilig.

Beitrag #5839191 wurde von einem Moderator gelöscht.
Beitrag #5839397 wurde von einem Moderator gelöscht.
Beitrag #5839431 wurde von einem Moderator gelöscht.
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thread gesperrt, weil offenbar ein Roboter Müll drauf absondert...

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.