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
http://www.mikrocontroller.net/articles/AVR-Tutorial Wenn du Schwierigkeiten mit irgendwelchen Begriffen hast, bist du herzlich eingeladen hier zu fragen.
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 | 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 :)
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. :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.