Hallo, ich hab mir als Ziel gesetzt AVR's mit C programmieren zu lernen. In meinem Fall der Atmega8. Mein großes Problem ist, dass ich einfach nicht auf den richtigen Pfad komme. Als erstes habe ich mir ein Bausatz mit Buch gekauft um einen strukturierten Einstieg zu erlangen. Das Buch war eher für Fortgeschrittene und die Platine mit dem AVR war auch eher schlecht als recht. Dann hab ich viel im Internet nach Tutorials gesucht und mithilfe dieser dann versucht zu programmieren. Leider fand ich meistens nur Bascom Tutorials oder welche, bei denen man C schon können sollte. Ich hab hier im Forum und überhaupt auf mikrocontroller.net viel gesucht gelesen und ausprobiert, aber ich bekomm es einfach nicht hin. Da viele mir auch geraten haben erst C am PC zu lernen und dann später mit dem hier bereitgestellten Tutorial an die AVR's ran zu gehen, hab ich mir ein Buch (Einstieg in die Programmiersprache C und C als erste Programmiersprache) besorgt. Ich hab mich jetzt auch damit beschäftigt, aber irgendwie ist das komplett von µC entfernt. Wie ich jetzt einzelne Ports, Pins, ... ansteuere wird ja in solch einem Buch nicht erwähnt. Das einzige was ich aus den Büchern gelernt hab ist ,wie ich bestimmte Algorithmen für z.B ein Zinsrechner aufstellen kann. Ich wollte nochmals mit AVR's durchstarten und hab mir eine Programmierplatine komplett selbst gebaut: - stabile Spannungsversorgung - Atmega 8 - 2x16 LC Display mit Standartcontroller - 4 LED - 2 Taster Aber mehr als eine blinkende LED oder ein Lauflicht bekomm ich nicht hin. Ich hab kein Anhaltspunkt wie ich was machen kann. Es heißt immer programmieren, programmieren, programmieren und dann wirds schon, aber ich brauche ja irgendwas, dass mir sagt wie ich was anfange. Es ist z.B auch nicht möglich, wenn ich mich in ein Raum setze ohne Internet und Wörterbuch, nur mit einem Stift und Blattpapier und jetzt diesen Text in chinesisch übersetzen soll. Was könnt ihr mir für einen Weg zum Ziel vorschlagen? Ich muss wissen, welche Bibilotheken ich brauch und wo her ich sie bekomme. Wie kann ich einzelen PIN als Ein oder Ausgänge definieren? Wie spricht man ein LCD an? So könnte es bücherweise weiter gehen. Ich hoff ihr hab einen Rat für mich. E-Nick
Also ich halte es auch für den richtigen Weg, erstmal etwas C/C++ am PC zu lernen. Da hast du bessere Debug-Möglichkeiten und weniger Stolperfallen. Pins und Ports ansteuern ist nichts anderes, als bestimmte Bits in einer Binärzahl (im Atmega ein "Register") zu verändern. Wenn du mit C halbwegs klarkommst, sprich Funktionen schreiben, Bit-Manipulation etc. dann kannst du das AVR-GCC-Tutorial durcharbeiten. LEDs blinken lassen, Timer verwenden, AD-Wandler benutzen, LCD ansteuern etc. Das wird da alles erklärt. Grundkenntnisse in C sind aber vorraussetzung um auch zu verstehen was da passiert! Dann entwickeln sich auch ganz schnell eigene Ideen und Anwendungsbeispiele. Viele Grüße Christian
Hey, sehe dir auf Youtube vll mal die Tutorials von Patrick Hood-Daniel an. Einfach mal Atmega32 eingeben, dann müste man ihn schon finden. Zwar konnte ichz vorher schon etwas C programmieren, aber ich fand seine Videos trotzdem sehr hilfreich. Sollte man kein abgeschlossenes Studium haben, oder sonst gute Grundlagen haben, hilft einem das sicher enorm. So erklärt er beim UART oder bei PWM Steuerung nicht nur dne Code, sondern auch dne Hintergrund, was es damit überhaupt auf sich hat. Hoffe das hilft dir in die richtige Richtung zu finden
Öffne gleichzeitig diese Dokumente bzw. Seiten: http://www.atmel.com/images/atmel-2486-8-bit-avr-microcontroller-atmega8_l_datasheet.pdf http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial http://www.mikrocontroller.net/articles/HD44780 Und fang an das Tutorial zu lesen. Hinten im Datenblatt vom Mega gibt es noch eine Tabelle mit Registern die kannst du dir schon mal ausdrucken (zusätzlich solltest du jedoch noch die Header Datei für den Mega8 öffnen bzw. Ausdrucken) Im Datenblatt stehen in den Einzelnen Kapiteln der Harware drinne wie diese aufgebaut ist und wie man sie benutzt. Das Tutorial ist für Leute die kein Englisch können einfacher zu verstehen.
und wie lange braucht man so im Schnitt bis man halbwegs C programmieren kann? Ich mach eine Ausbildung und hab nur abends Zeit. Und sollte ich mit den Büchern weiter arbeiten oder auf eine andere Art mein Glück probieren? Nick
Nico V. schrieb: > Da viele mir auch geraten haben erst C am PC zu lernen und dann später > mit dem hier bereitgestellten Tutorial an die AVR's ran zu gehen, hab > ich mir ein Buch (Einstieg in die Programmiersprache C und C als erste > Programmiersprache) besorgt. Richtige Entscheidung! > Ich hab mich jetzt auch damit beschäftigt, aber irgendwie ist das > komplett von µC entfernt. Das ist auch in Ordnung, sonst würdest du den zweiten Schritt vor dem ersten tun. > Wie ich jetzt einzelne Ports, Pins, ... ansteuere wird ja in solch > einem Buch nicht erwähnt. Das einzige was ich aus den Büchern gelernt > hab ist ,wie ich bestimmte Algorithmen für z.B ein Zinsrechner > aufstellen kann. Das Buch dient vor allem dazu die Grundlagen von C zu lernen. Wenn du das durch hast, kommt als nächstes das AVR-GCC-Tutorial. Darin gibt es u. a. das Kapitel "Zugriff auf Register", wo genau das mit den Ports und Pins drin steht. Wenn du aber zu früh auf dem Mikrocontroller herumexperimentierst, passiert die das, was vielen hier passiert: Sie haben mittels Copy-Paste aus den Beispielen im Tutorial ein Programm zusammengezimmert und stellen fest, dass es keinen Mucks von sich gibt. Sie fragen dann nach Details zu Timern oder ADCs, in Wirklichkeit haben sie aber einfach nur ein Array falsch definiert oder die Funktion einer Switch-Anweisung nicht richtig verstanden. Solche Dinge sollte man aber im Schlaf beherrschen, sonst ist man bei der Mikrocontrollerprogrammierung ewig auf der Fehlersuche. Du kannst natürlich, wenn du ungeduldig bist, mit der Mikrocontrollerei schon beginnen, bevor du das C-Buch ganz durchgearbeitet hast. Um eine LED zum Blinken zu bringen, brauchst du schließlich nicht den kompletten C-Sprachumfang. Wenn du dann aber auf Probleme stößt, solltest du nicht gleich das Forum scheu machen, sondern erst einmal überlegen, ob die Ursache dafür nicht in deinen noch unvollständigen C-Kenntnissen liegen könnte.
Nico V. schrieb: > und wie lange braucht man so im Schnitt bis man halbwegs C programmieren > kann? Ich mach eine Ausbildung und hab nur abends Zeit. Kannst du schon in einer anderen Sprache (Basic, Pascal ...) programmieren? Dann solltest du in zwei Wochen (jeden Abend 1 Stunde, am Wochenende etwas mehr) schon ziemlich weit kommen. Der Titel deines Buchs "C als erste Programmiersprache" lässt allerdings darauf schließen, dass du bei Null anfängst. Dann wird die Sache wohl etwas länger dauern. Wie lange genau, kann ich mangels Erfahrung schwer sagen, da ich selber C als vierte Programmiersprache (nach Basic, Assembler und Pascal) gelernt habe. Da ging das Lernen von C natürlich sehr viel leichter von der hand.
Yalu X. schrieb: > da ich selber C als vierte Programmiersprache (nach Basic, > Assembler und Pascal) gelernt habe. Da ging das Lernen von C natürlich > sehr viel leichter von der hand. Kennst du eine, kennst du alle. Nur ein paar andere Schlüsselwörter sonst nix. Programmieren findet auf einer höheren abstrakten Ebene statt. Ein entworfenes Programm in irgendeiner Sprache runterschreiben ist nur Fleißarbeit.
Trolloge schrieb: > Kennst du eine, kennst du alle. Nur ein paar andere Schlüsselwörter > sonst nix. Ganz so einfach ist es leider nicht, aber der Sprung von Pascal nach C (oder umgekehrt) ist wirklich nicht groß, und auch Basic ist nicht weit davon entfernt.
Noch etwas zum Lernen von C auf dem PC: Ich bilde mir ein, C ziemlich gut zu können (nutze es immerhin schon seit über 20 Jahren). Trotzdem: Wenn ich einen Algorithmus für einem Mikrocontroller schreiben möchte, der etwas komplizierter als Berechnung von ein paar Formeln ist, implementiere ich ihn erst auf dem PC. Da habe ich die Möglichkeit größere Datensätze reproduzierbar von einer Datei zu lesen und die Ergebnisse wieder in eine Datei zu schreiben, um diese Daten bspw. anschließend mit einem Plot-Programm grafisch darzustellen. Erst wenn der Algorithmus mehrere Tests erfolgreich durchlaufen hat, wird er in ein Mikrocontrollerprogramm eingebaut, das dann die Eingangsdaten nicht von einer Datei, sondern bspw. von einem Sensor liest. Wenn dann etwas nicht funktioniert, kann ich mir wenigstens halbwegs sicher sin, dass der Fehler nicht in meinem Algorithmus liegt. Debuggen auf dem Mikrocontroller ist nicht nur umständlicher, sondern auch schwieriger als auf dem PC. Deswegen sollte ein Programm, bevor man es auf den Mikrocontroller spielt, wenigstens zu 95% fehlerfrei sein. Sonst macht die Mikrocontrollerei überhaupt keinen Spaß.
Naja zu der Frage ob ich schon eine Programmiersprache kann, kann ich nur mit "eher nicht" antworten. Ich mach eine Ausbildung zum Elektroniker für Automatisierungstechnik und habe auf der S7 FUP also eine grafische Sprache gelernt. Wie es so in der Ausbildung ist natürlich nur Grundlagen. Mikrocontroller find ich viel interessanter und auch C ist besser wie das FUP, welches aus Quadrate und Stiche aufgebaut ist. So das heißt ich muss leider von 0 anfangen bzw. ich hab ja jetzt schon ein paar Sachen gelernt, dann halt ein paar Seiten weiter. Wenn ich die ganzen Tipps mal zusammenfasse: - als erstes C lernen - und dann erst AVR's - selbst Projekte verwirklichen und mich tierisch freuen das ich das Ziel erreicht hab! Nico
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.