Hallo,
Ich habe mir vorgenommen mich ein bisschen mit µC´s zu beschäftigen.
Die Grundlagen in Elektronik sind vorhanden aber ich kann nicht den
gerinsten Ansatz an Programmiersprache.
Heute kam mein STK500 an.
Soweit klappt alles; auch mit Paste&Copy Texten.
Aber das ist ja nicht Sinn der Sache.
Es ist der ATmega8515 verbaut.
Außerdem habe ich noch einen ATmega16 und einen ATmega32
In den Tutorials wird schon in den ersten Sätzen mit Fachwörtern um sich
geworfen. Das verwirrt mich noch mehr....
Dann diese ständigen Streitereien ob nun Basic, Assembler oder C.
Im Moment stehe ich echt auf dem Schlauch.
Daher suche ich ein gutes Buch oder Tutorial was sich auch wirklich mit
den Grundlagen beschäftigt(Was tut das Register? Wie stehen die
Zusammenhänge zwischen den Befehlen? Wie bekomme ich es denn nun hin,
dass die LED im 2-Sekunden Takt blinkt?).
Ich bin echt ziemlich am verzweifeln.
Ich habe mir das Alles doch ein bisschen unkomplizierter vorgestellt.
Ich denke hier bin ich richtig.
Villeicht stande ja einer von Euch einmal vor der selben Hürde und kann
mir verraten wie er sie gemeistert hat.
Zeit ist genug vorhanden und Interesse auch.
Ich hoffe Ihr könnt mir helfen!
MfG
d0um
Ich habe es mir nun schon einige Male durchgelesen.
Aber selbst bei den IO-Grundlagen wird schon vorrausgesetzt zu wissen
was die einzelnen Befehle bedeuten.
Ich habe damals in der Schule leider nicht aufgepasst bei der
Digitaltechnik.
Ich bräuchte also ein Buch was alles nochmal auffrischt.
Sowohl die Digitaltechnik als auch die Grundlagen von AVR´s und
Assembler.
Außerdem bin ich eher ein Freund von gedrucktem Wissen.
Ich habe die letzen Tage mit mindestens 3 Stunden lesen/Tag
verbracht..aber ich bin immernoch nicht weiter.
Mein Ziel für den Anfang sind ein paar LED Spielchen.
Primitive Sachen wie die LED mit einer bestimmten Frequenz blinken zu
lassen.
Aber davon bin ich nich Welten entfernt...
Schönen Abend noch,
d0um
Starthilfe:
Zuerst solltest du dir Grundlagen der C-Programmierung anschauen, um mit
dem GCC (winavr) zurecht zu kommen. Den kleinsten C-Code, den es gibt,
sieht so aus: (nicht ganz standard-konform)
1
voidmain(void)
2
{
3
return;
4
}
Dieser Code macht erstmal garnichts! Er definiert lediglich den
Einsprungspunkt "main" und beendet die Code ausführung gleich (return).
Um nun eine LED an einem Port leuchten zu lassen, definiert man zu
nächst ein Portpin als Ausgang (durch setzen des Funktionsregisters
DDR).
1
DDRD=1;
Diese Zuweisung definiert Pin0 des Ports "D" als Ausgang, nämlich
dadurch das das erste Bit des 8-Bit-Breiten registers auf "High" als 1
gesetzt wird. Anschliessend bestimmt man den Zustand dieses Pins über
das "PORTD" register:
1
PORTD=1;
Der komplette Code sieht dann so aus:
1
#include<avr/io.h>
2
voidmain(void)
3
{
4
DDRD=1;
5
PORTD=1;
6
}
Wenn dieser Code auf deinem Controller gelaufen ist, solltest du am Pin
0 des PortD +5V messen können bzw eine angeschlossene LED mit der
Kathode nach GND sollte leuchten (bitte Vorwiderstand nicht vergessen).
Wenn du das soweit verstanden hast, ist es bist zu deinem Blinklicht
nicht mehr weit :)
d0um wrote:
> Ich habe es mir nun schon einige Male durchgelesen.> Aber selbst bei den IO-Grundlagen wird schon vorrausgesetzt zu wissen> was die einzelnen Befehle bedeuten.
Hmm. Gerade in diesem Artikel kommen noch nicht allzuviele
Befehle vor. Die werden auch beschrieben.
Du hast natürlich recht, alles ist da nicht wirklich beschrieben.
Zb. wird der Begriff 'Register' eingeführt ohne zu erklären was
das eigentlich ist.
> Ich habe damals in der Schule leider nicht aufgepasst bei der> Digitaltechnik.
Das würde dir wahrscheinlich auch nicht viel helfen.
Da gings wahrscheinlich um Gatter und deren Verschaltung.
Das hier ist zwar ähnlich aber doch ganz anders.
> Außerdem bin ich eher ein Freund von gedrucktem Wissen.
Lobenswert!
> Ich habe die letzen Tage mit mindestens 3 Stunden lesen/Tag> verbracht..aber ich bin immernoch nicht weiter.>> Mein Ziel für den Anfang sind ein paar LED Spielchen.> Primitive Sachen wie die LED mit einer bestimmten Frequenz blinken zu> lassen.
Blinken ist schon zu kompliziert. Blinken ist eigentlich
(wenn man es richtig macht, erstaunlich kompliziert. Das
Problem besteht darin, das Höllentempo eines µC auf ein
erträgliches Mass zu reduzieren, so dass man das Blinke
auch sehen kann :-)
Beschränke dich in deinem ersten Versuch einfach nur darauf, eine
Led gezielt zum Leuchten zu bringen. Mit 8 Leds an einem
Port, kannst du dann immerhin schon statische Leuchtmuster
erzeugen.
Und wenn du die hinkriegst, bist du bereit für die nächsten
Schandtaten.
> Aber davon bin ich nich Welten entfernt...
Augen zu und durch. Wir alle haben so angefangen.
Am Anfang ist vieles noch unverständlich. Aber die
Wissenslücken schliessen sich nach und nach.
Das Problem beim Computer programmieren: Eigentlich
müsste man alles gleichzeitig und auf einmal lernen, weil
alles mit allem in irgendeiner Form verknüpft ist.
Aber das geht nun mal nicht. An irgendeiner Ecke muss man
anfangen.
Ich kann Dich sehr gut verstehen, denn mir geht es genauso wie dir. hab
ds Tutorial schon zwimal durchgelsen aber immernochnicht hat es so
richtig klick gemacht. Ich vermisse sowas wie ein aar Übungsbeispiele wo
man sich Schritt für Schritt rantastet. Hab auch schon das Buch
"Anfängerkurs zum Erlernen der
Assemblersprache von ATMEL-AVR-Mikroprozessoren Gerhard Schmidt"gelesen
aber so richtig finde ich keinen Anfang wie man am Besten beginnt.
@d0um
Nun ja! Ich habe mich seit her auch damit herumgeschlagen und habe mir
dann ein von Pollin ein Board gekauft. Leider passte das Toutorial
nicht zu dem favovriserten Avr's Attiny12 und Attiny13.
Hab mich am Anfang auch wirklich schwer getan, die neue Befehle, Fusebit
kram usw.
Auf der (Hobby) Elektronikmesse habe ich mir dan das Lernpaket
Mikrokontroller von Franzis gekauft.
Soll hier nicht als Schleichwerbung dienen. Um Missverständnisse und
Lästermäuler vorzubeugen.
Das Lernpaket ist für einen der noch keine Erfahrung mit AVR's hat eine
gute Einsteigerhilfe.
Es gibt in diesem Lernpaket alles was das Herz begehrt: Blinkprogramm,
AD-Wandler, PWM, Bootloader, und noch ein paar nützliche Tools.
Schau es dir einfach mal an.
mfg
norad
Moin moin,
@d0um
Ich habe mit der "ganzen Sache µC" auch erst vor knapp 3 Wochen begonnen
mit dem Eval-Board von Pollin + ein ATmega 8.
Hab mir erstmal in beiden Tutorials (C und Assembler) nen Überblick
verschafft und dann mit ASM (Assembler) angefangen da ich mich dafür
schon eher mal interessiert habe. Werd aber wohl bald zu C übergehen
auch wenn ich mich dann erst noch mit dem WinAVR Compiler
auseinandersetzen muss.
Das erste Program war eine Erleuchtung, nicht meine, sondern eine der
LED 1 auf dem Board :-)
Danach das Einschalten bei gedrücktem Taster, dann ging sie beim drücken
an aber nicht mehr aus ^^
Dann hab ich mir eine kleine LED-Matrix aus 9 LEDs gebastelt, ein Muster
in den Flash-Speicher geladen und ein Programm geschrieben was in einer
Schleife nach und nach einen 6bit Wert aus dem Flash in ein Register
liest und ihn auf den Port ausgibt. Ergebnis: Ein roter Punkt flitzt
durch die Matrix.
Jetz sitz ich seit etwa 1,5 Wochen an einem LED Dimmer mit PWM in
Software Variante. Hoffe es heut endlich so zum Laufen zu bekommen wie
ich mir des vorstelle ;)
Wenn es was nicht ging oder nicht in meinen Kopf wollte - Tutorial
erneut lesen, Wiki befragen, googlen oder Foren durchstreifen.
Und wenn ich, um zu verstehen wer oder was ein(e) UART ist, auch bei
Wiki 5x Traffic verursachen musste kann ich jetz zumindest etwas damit
anfangen. Nächstes Teilprojekt soll die Kommunikation mit dem PC sein.
<EtwasOffTopicUmDieStammuserZuÄrgern>
Ich werde es erstmal mit dem Internen RC-Oszillator probieren um nich
aus Versehen meinen mega zu "defusen" (obwohl ich für diesen Fall mit
einem Klon vorgesorgt habe) :P
</EtwasOffTopicUmDieStammuserZuÄrgern>
Ein Buch kann ich dir leider nicht empfehlen da ich selbst keins kenne
und auch im Moment nich in die FH-Bibo komme (schade da ich auch lieber
gern etwas "in den Händen halte" und nich nur aufem Bildschirm wackeln
sehe :-0) aber hier gibts einen Link zu einer Seite mit
Bücherempfehlungen.
Als Tipp von mir: Fang einfach an. Die Tuts hier sind zwar nützlich aber
bei weitem nicht Alles! Da hilft es nur andere Quellen zu befragen und
oft auch ausprobieren. Der Simulator im AVR-Studio von Atmel ist da
wirklich eine große Hilfe. Und sollten dann wieder Fragen auftauchen -
die meisten Leute hier geben wirklich immer konstruktive Antworten und
helfen wo sie können.
Also nur nicht aufgeben
viele Grüe
Robert
> aber ich kann nicht den gerinsten Ansatz an Programmiersprache.
Dann würde ICH zu BASCOM greifen, führt zu schnellen Erfolgen. Zu
Assembler oder C kann man immer noch wechseln (je nachdem, was Du
vorhast)
* http://www.rowalt.de/mc/ ab Einführung drei oder sein Buch testen
* C.Kühnel,Programmieren der AVR ... mit Bascom-AVR
* Kursus in Bascom von der Pike auf, PDF-Datei herunterladen (in
Niederländisch, aber verständlich), mit guten kleinen Anwendungen, die
besonders mit em STK500 schnell funktionieren.
http://www.mcselec.com/index.php?option=com_content&task=view&id=74&Itemid=57
* U.A. im Roboternetz.de gibt es ein Bascom - Unterforum
> Was tut das Register? Wie stehen die Zusammenhänge zwischen den Befehlen?
Diese Fragen werden allerdings kaum bearbeitet, das ist ja einer der
Vorteile einer Hochsprache, dass man sich um etliche Details nicht
kümmern muss. Dann sind die Assembler- Hinweise besser.
Es hängt von deinen Ambitionen ab, was du wählst, die Meinungen anderer
Menschen können nur Denkanstöße geben.
Viel Erfolg ...
Danke für die Antworten.
Leider habe ich ein paar Probleme mit Bascom.
Ich habe die richtige Definitionsdatei eingebunden und auch den
richtigen Chip ausgewählt.
Aber es kommt immer "Could not identify chip with ID:00000000
Löschen kann ich den Chip aber also eine Verbindung besteht.
In der Tat kommt mir Bascom wesentlich verständlicher vor wie ASM oder
C.
Ich denke für meine Möglichkeiten wird Bascom dicke ausreichen.
Aber es muss ja auch erstmal richtig laufen...
Auf dem STK 500 muss ich nichts umstecken um mit Basecom zu
programmieren?
Also den Sockel mit ISP verbinden? Das sollte ja das gleiche sein.
MfG
d0um
SPROG3 muss mit dem ISP6PIN verbunden sein, das sollte alles sein.
Steckt der 8515 in der richtigen Fassung? Dann müsste eigentlich be
richtiger Einstellugn alles klappen ..
Ja sicher ich habe ihn ja vorher schon mit AVRStudio programmiert!
Ich probiere es morgen mal mit einem Mega16 oder 32.
Aber am Chip sollte es eigentlich nicht liegen.
MfG
d0um
Dann bleib doch dabei, ich erzeuge aus Bascom das Hex-File und schiebe
dieses mit dem AVR-Studio auf den MC. Ich erinnere mich jetzt dunkel,
dass es von Bascom direkt nicht klappte und ich zu faul war, alles
anzupassen. :-)