Forum: Mikrocontroller und Digitale Elektronik Tip´s für Einsteiger/Buchtipp


von d0um (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

http://www.mikrocontroller.net/articles/AVR-Tutorial

Wenn du Schwierigkeiten mit irgendwelchen Begriffen hast,
bist du herzlich eingeladen hier zu fragen.

von d0um (Gast)


Lesenswert?

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

von Niels H. (monarch35)


Lesenswert?

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
void main (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
void main(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 :)

von Karl H. (kbuchegg)


Lesenswert?

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.

von Christoph E. (gluema)


Lesenswert?

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.

von norad (Gast)


Lesenswert?

@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

von Robert K. (molch) Benutzerseite


Lesenswert?

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

von Netbird (Gast)


Lesenswert?

> 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 ...

von d0um (Gast)


Lesenswert?

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

von Netbird (Gast)


Lesenswert?

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 ..

von d0um (Gast)


Lesenswert?

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

von Netbird (Gast)


Lesenswert?

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.  :-)

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.