Forum: Mikrocontroller und Digitale Elektronik Starthilfe für Anfänger bei ATmega + SW


von Ho W. (howu75)


Lesenswert?

Hallo,

ich benötige Euren Rat!!

Ich möchte den Einstieg in die µP-Technik wagen und habe mir als Basis 
einen ATmega64L ausgesucht. Ich habe mir eine eigene Hardware bereits 
zusammengestrickt und möchte nun eine mir verständliche 
Entwicklungsumgebung einrichten. Aus diversen Beiträgen und der 
Atmel-Seite habe ich mir schon Informationen über die 
Programmierumgebung besorgt. Ich habe also aufgrund dieser 
Hilfestellungen nun WinAVR und AVRStudio 3.56 installiert (Die neuesten 
Versionen von AVRStudio - 4.12 & 4.13 - konnte ich nicht starten, 
Fehlermeldung bei Start).

Nun mein Problem :

1.) Gibt es vernünftige Dokumentationen (gerne auch in Englisch) für 
diese SW-Tools, die mir für das Programmieren in C/C++ den Einstieg 
super leicht machen? Habe bisher nur für AVRStudio eine Anleitung für 
Version 4 gefunden (bezieht sich leider auf Assembler).

2.) Welchem dieser beiden Tools soll ich für das Erstellen des Programms 
den Vorzug geben? Wenn, warum? Welches Tool benötige ich für das 
Übertragen des Programms auf den µP? Oder können alle alles?

3.) Gibt es bei Anleitungen auch konkrete Angaben über den Umgang mit 
s.g. Fuses? Ich habe soviel darüber gelesen und gehört, dass ich nicht 
weiss, wann sie automatisch und wann manuell eingestellt werden müssen.

Für zahlreiche Hilfestellungen danke ich schon mal im Voraus!!

von Seven-of-Nine (Gast)


Lesenswert?

Steht doch alles hier im Forum.
Da gibt es das AVR-Tutorial und das AVR-GCC Tutorial.
Und wenn Du unter dem Suchbegriff AVR und FUSES mal suchst kommen eine 
Menge Ergebnisse.

von Patrick (Gast)


Lesenswert?

Wenn Du von C keine Ahnung hast, kann ich Dir folgenden Link empfehlen:
http://www.pronix.de/pronix-4.html

von Quehl (Gast)


Lesenswert?

die Anleitungen zu den Fuses stehen in den dazugehörigen Datenblättern.
Wenn Du von C genausowenig Ahnung hast wie von Assembler, dann würde ich 
Assembler empfehlen. Die Programme sind kleiner und schneller. Durch 
deutsche Kommentaranweisungen, die man da reinschreibt, halte ich das 
Programm auch für lesbarer als C. Und man weiß, was der µc macht. Bei C 
muß man immer erst raten, was da eigentlich gemacht wird. Hierzu gibt es 
auch einen Thread mit Floating Point.

Mich würde die näheren Umstände interessieren, warum Studio nicht 
startet. Bei mir startet Studio auch nur mit einer Fehlermeldung. Ich 
habe Win98, Studio Vers. 4.11 mit Service Pack 3, Bord K7S5A mit AMD 
XP1500+. Office nicht vorhanden. Javascript im IE abgeschaltet. 
Vielleicht gibt es Gemeinsamkeiten, die den Fehler näher einkreisen. In 
einem anderen Forum gab es den gleichen Fehler mit Win2000 und durch 
Update auf Service Pack 4 funktionierte das dort. Bei der Studio Version 
3.56 habe ich das Gefühl, das dort noch Fehler vorhanden sein könnten 
oder nicht mein ATMEGA32 unterstützt werden könnte. Darum habe ich das 
noch nicht installiert. Außerdem weiß ich ja nicht, ob das besser läuft.

von Patrick (Gast)


Lesenswert?

>Durch deutsche Kommentaranweisungen, die man da reinschreibt, halte ich das 
Programm auch für lesbarer als C.

Das kommt auf die Vorkenntnisse an. Ich z.B. hab vorher Java 
programmiert. Der Umstieg auf C ist mir nicht schwer gefallen, aber mit 
Assembler hab ich immer noch meine liebe Mühe. Es sollte jeder für sich 
entscheiden, was er besser und lesbarer findet.
Ich bezweifle auch, dass Assembler für einen blutigen Anfänger geeignet 
ist.

von Christian Erker (Gast)


Lesenswert?

>Ich bezweifle auch, dass Assembler für einen blutigen Anfänger geeignet
ist.

Achja? Wie hat man es in den 70ern / frühen 80ern gemacht .. da hat man 
noch teilweise die Bits einzeln in Speicher geklopft. Hab ich (mitte 
90er) bei meinem ersten µC-System (noch schön mit CPU, RAM-Karte, 
IO-Karte) auch gemacht.. da war ich so 11-12 Jahre alt. Das geht wenn 
man einmal weiss wie man mit Bitschubsen Probleme löst :D

Aber ja, ich habs auf AVR probiert, C ist bequem. Aber extrem 
zeitkritische Sachen bekomm ich in ASM besser und schneller hin.

Gruß,
Christian

von Michael U. (Gast)


Lesenswert?

Hallo,

sehe ich wie Christian Erker.
Wenn man kommplett anfängt, ist es ziemlich egal, man schreibt mit 
Sicherheit erstmal keone komplizierten und komplexen Programme.

Man muß das Würterbuch, Rechtschreibung und Grammatik der 
Programmiersprache (die Syntax eben) lernen.
Da kommt man mit Assembler erstmal besser weg.

Label: Befehl Ziel, Quelle ; Kommentar

Das war es erstmal schon, kein Klammersalat, keine Pointer, keine 
Datentypen usw.

Ein paar Präprozessor-Direktiven sollte man sich anschauen:

.include
.org
.def
.equ
.byte
.db

Das ich eine Schleife selber bauen muß, also
Zählvariable setzen
Schleife:
...
Zählvariable erhöhen
Vergleich, ob Endwert erreicht ist
Wenn nein, denn eben nochmal Schleife

Die Programmiersprache ist nur ein Handwerkzeug, das Problem ist die 
Umsetzung einer Idee, Zerlegen in Einzelteile, einen Ablaufplan daraus 
zu machen.

Das muß man für jedes Programm in jeder Sprach und genau das ist für die 
meisten das Schwerste.

Gesichtspunjte wie Portierbarkeit, Zeitaufwand, Lesbarkeit, Wartbarkeit 
sind am Anfang zumindest für Hobbysachen erstmal zweitrangig.

Über Wartbarkeit beginnt man nachzudenken, wenn hier im Forum "gemault" 
wird, allerdings kann ich jedem nur empfehlen, möglichst schnell den 
Sinn von Vereinbarungen zu verstehen, Registernamen und Bitnamen, 
Variablen- und Konstantennamen statt irgendwelcher Bitmuster zu 
benutzen.

.def COUNT = r16  ; Register 16 bekommt den Namen COUNT

und dann
  ldi COUNT,23    ; Jetzt wird in dieses Register 23 geladen

statt
  ldi r16,23

ist spätestens nach 3 Wochen wesemtlich lesbarer.

Außerdem hat es einen sehr wesentlichen Vorteil: wenn ich das selbst 
immer einhalte, kann ich mit einer Änderung solche Programmteile 
woanders weiter benutzen. Wenn da z.B. r16 schon benutzt wird, dafür 
aber r20 noch frei ist, kostet es genau die Änderung einer Zeile

.def COUNT = r20  ; Register 20 bekommt den Namen COUNT

Wehe aber dem, der irgendwo in seinem Programm aus Bequemlichkeit mal 
statt
ldi COUNT,12
ldi r16,12
geschrieben hat...

Ok, ich hör auf und gehe erstmal wieder Umzugskisten packen... ;(

Gruß aus Berlin
Michael



von Patrick (Gast)


Lesenswert?

Eben, wie ich schon sagte. Grundsätzlich ist es Geschmacksache und jedem 
selber überlassen. In Zukunft werde ich auch nicht mehr behaupten, 
assembler wäre für blutige Anfänger ungeeignet ;-)
Für mich persönlich war C einfacher zu lernen, weil ich die ganzen 
Schleifen (if, while, switch...) aus java schon kannte. Ausserdem werden 
bei uns in der Firma alle uC Programme in C geschrieben.

Was Michael sagt, ist auch sehr wichtig. Immer Aussagekräftige und 
nachvollziehbare Variablennamen verwenden. Und kommentieren. Grade wenn 
mehrere am gleichen Projekt arbeiten ist es für die anderen eher 
verständlich. Und für den Programmierer nach ein paar Wochen auch noch.

Übrigens: Java hab ich nicht so aus Spass an der Freude gelernt, sondern 
war Teil meines Studiums. Ich konnte mir also meine erste 
Programmiersprache nicht aussuchen ;-)

Grüsse aus der Schweiz
Patrick

von Michael U. (Gast)


Lesenswert?

Hallo,

ich bin der Meinung, wenn man wirklich erstmal halbwegs programmieren 
kann, ist ein Wechsel der Sprache relativ unproblematisch.

Man hat nämlich den Vorteil, daß man weiß, WAS mach gerade machen will, 
nur nicht, wie es in der neuen Sprache ausgedrückt wird.

Wenn ich eine Schleife brauche, suche ich eben in der Sprachbeschreibung 
geziehtl danach, schau mir an welche Versionen es gibt und nehme die 
passende.

Wenn man nicht (sonderlich) programmieren kann, weiß man a) garnicht, 
daß jetzt eine Schleife fällig wäre oder b) hat immer nur 
zusammenkopiert, ohne zu verstehen.

Wenn man eine Kette von 20 IF-Abfragen gebastelt hat, ist man erstmal 
zufrieden, wenn es macht, was man erwartet.
Wenn man sich daran stört, sucht man Alternativen Switch/Case oder 
Tabellen z.B. und entdeckt Vereinfachungen.

Kann oder will man es nicht, macht man bei der nächtsen 
Programmerweiterung eben 40 IF-Abfragen draus und nimmt den 
nächstgrößeren AVR, weil der Flash knapp wird.

Assembler und Kommentare???
Was schwer zu schreiben war, soll auch schwer zu lesen sein.
Nur was man nicht in Assembler programmieren kann, muß man löten.

Letzteres scheint mir auch hier manchmal zuzutreffen, wenn man keine 
Multiplexroutine programmiert bekommt, nimmt man ein paar Schiebergister 
mehr. ;)

Gruß aus Berlin
Michael



von Ho W. (howu75)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!

Erst mal vielen Dank für Eure Ratschläge. Ich möchte einigen Ratschlägen 
zuvorkommen und kann daher mal folgendes über mich sagen :

Ich habe für meine Diplomarbeit einen Motorola-DSP auf Assembler 
programmiert, zu anderen Gelegegenheiten andere µPs auf C. Also mit ein 
paar Grundlagen komme ich schon klar. Aber bei der SW hatte ich entweder 
einen Kollegen, der mich persönlich eingewiesen hat, oder ich hatte eben 
ein "Rundumsorglospaket", sprich mit idiotensicherer (also : genau 
richtig für mich) Anleitung. Ich habe mir natürlich schon etliche 
Tutorials für den AVR durchgelesen/angelesen, aber mir fällt es eben 
schwer, die richtige und optimale Entwiklungsumgebung selbst 
zusammenzusuchen und damit auf Anhieb fertig zu werden.
Ich habe jetzt PonyProg, AVRStudio und WinAVR installiert. Ich bin im 
Moment noch dabei, die Kommunikation zwischen PC und Testboard 
herzustellen. Ich habe da wohl ein HW-Problem mit dem ICSP auf meinem 
Board (falsche Pinbelegung und Portpins ausgewählt). Aber ich bin der 
Lösung dank µP.net auf der Spur.

@Quehl:

Ich habe einen PC mit Win98SE. Ich konnte die 
AVRStudio-Installationsdateien nicht starten. Ich habe also gar keine so 
wirkliche Wahl zwischen den Versionen gehabt. Also blieb mir nur Version 
3.56. Die Installition verlief dafür aber auch reibungslos. Die 
Fehlermeldung habe ich mal als Bild angehängt.

Gruß aus Duisburg

von Wolfram Q. (quehl)


Lesenswert?

solche Fehlermeldungen erscheinen meist durch eine schlechte 
Speicherverwaltung von Win98(SE). Oft habe ich das, wenn zuviele 
Programme gleichzeitig geöffner sind und daher auch nicht mehr soviel 
Speicherplatz da ist. Ein Schließen hilft nicht. Meist hilft dann ein 
Neustart und sofortiger Aufruf des gewünschten Programms (Studio). Die 
Fehlermeldung wird von Windows erzeugt. Ich hatte nach dem Installieren 
und Aufruf von Studio eine Fehlermeldung, die von Studio erzeugt wurde.
War irgendwas mit Frames.

mfg

von danny (Gast)


Lesenswert?

hi! kann mir jemand sagen welche pinbelegung der atmega48-20pu hat (die 
dil version) 
schickt bitte die antwort an:  danny.wahrlich@gmx.de   DDAANNKKEE


GRINGEND!!!

von Johannes M. (johnny-m)


Lesenswert?

Oha, wieder jemand, der glaubt, hier stehen tausend Leute Schlange, die 
nur darauf warten, dass jemand sagt: Lad Dir bitte für mich das 
Datenblatt von XXXXX runter und lies es mir vor....

...SCNR...

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
Noch kein Account? Hier anmelden.