Hallo,
ich studiere derzeit Software Engineering, und habe seit diesem Semester
einen Kurs, der sich mit Mikrocontrollerprogrammierung, und Sensoren
etc. auseinander setzt.
Bei der erstem Vorlesung hat uns der Prof am Ende ein AVR STK600 (Atmega
2560) und ein 2x16 LCD Display in die Hand gedrückt, und gemeint wir
sollen bis nächste Woche ein kleines Programm mit LCD - Ausgabe (in C)
schreiben.
Da ich kompletter Neuling auf diesem Gebiet bin (bis auf 2
Veranstaltungen zu Signalverarbeitung) wollte ich mich im Netz schlau
machen, jedoch finde ich nicht die Infos die ich brauche, oder kann
damit nicht umgehen (zu komplex, oder unverständlich für Leihen) und
werde von Schaltbildern etc. erschlagen.
Meine Frage ist nun: Kennt ihr ein paar gute Quellen (Internetseiten,
Bücher etc.) die Einsteigerfreundlich sind, und einen Schritt für
Schritt an dieses Thema heran führen? Das fängt schon damit an, dass ich
nicht weiß wie ich den LCD Display überhaupt an das Board anschließen
muss, ohne irgendwas zu beschädigen. Ein Einsteigertutorial für C
(ausgelegt für Mikrocontroller) wäre auch sehr hilfreich, falls jemand
ein gutes kennt.
Ich würde mich über schnelle Antworten sehr freuen :)
Lukas schrieb:> Hallo,>> ich studiere derzeit Software Engineering, und habe seit diesem Semester> einen Kurs, der sich mit Mikrocontrollerprogrammierung, und Sensoren> etc. auseinander setzt.>> Bei der erstem Vorlesung hat uns der Prof am Ende ein AVR STK600 (Atmega> 2560) und ein 2x16 LCD Display in die Hand gedrückt, und gemeint wir> sollen bis nächste Woche ein kleines Programm mit LCD - Ausgabe (in C)> schreiben.
Unrealistisch. Nach der 1. Vorlesung soll binnen einer Woche ein µC
Programm entwickelt werden? Ohne dass dazu irgendwas vorher beigebracht
wurde? Erzähl doch nichts!
Außerdem weiß ich ja nicht wie Vorlesungen so im neuen Bologna Zeitalter
ablaufen, aber bei uns waren Vorlesungen rein theoretischer Natur.
Praktische Dinge gab es, oh Wunder, in Praktikas und sog. "Laboren".
Und dass ein prof. in einer Vorlesung Hardware austeilt (wie viele
hundert Stück waren das?) hab ich auch noch nicht gesehen.
O tempora, o mores.
Hi,
die besten Tutorials die ich kenne sind hier:
https://newbiehack.com/MicrocontrollerTutorial.aspx
Dann fängst du am besten mit "MCU First Program" an und machst ein paar
weitere Tutorials. Irgendwann landest du bei "First LCD Program".
Vermutlich kannst du auch ein paar zwischendurch überspringen.
Wenn du die Tutorials abarbeitest, bist du fit. Je nach
Vorbildung solltest du aber in einer Woche mit diesen Tutorials ziemlich
weit kommen.
Das ist alles bestens mit Videos erklärt. Englisch solltest du aber
verstehen.
Gruß,
thoern
Wenn du den LCD treiber in der Zeit auch noch selbst programmieren
sollst, tust du mir Leid.
Im meinem Einsteiger Buch
(http://stefanfrings.de/mikrocontroller_buch/index.html) ist das eins
der letzten Kapitel. Allerdings kannst du vermutlich die Hälfte der
Grundlagen von Band 1 überspringen und bei Band 2 die Vorstellung von
coolen IC's und Grundschaltungen auslassen. Dann schaffst du es
vielleicht, das ganze innerhalb von 4 Tagen durchzuarbeiten.
In meinem Buch verwende ich hauptsächlich inen ATtiny13 und einen
Arduino Nano, Du kannst das alles aber auch mit dem STK nachvollziehen.
Im grunde genommen sind die Unterschiede nur eine Frage von mehr oder
weniger I/O Pins.
Das von Johannes genannte Tutorial solltest du auf jeden Fall lesen. Da
stehen viele wissenswerte Details drin, die ich in meinem Buch gar nicht
erwähne.
Hallo Lukas,
ich finde es ebenfalls sehr unwahrscheinlich, dass man einem Studenten
ein Controller-Board vor die Füße schmeißt ohne vorher ausreichend
Grundlagenwissen vermittelt und Literatur an die Hand gegeben zu haben.
Für viel wahrscheinlicher halte ich es, dass man bereits genug an die
Hand bekommen und einfach dieses Grundlagenwissen noch nicht
verinnerlicht hat.
Ich studiere selber technische Informatik und hatte erst im 4. Semester
eine Projektarbeit mit zwei anderen Kommilitonen und einer trivialen
Aufgabenstellung, für die wir 8 Wochen (!) Zeit hatten. Vorangegangen
waren ausreichend Vorlesungen zu Mathematik, Rechnernetzen, Digitalen
Schaltungen, Algorithmen und Datenstrukturen u.v.m.
Wenn du also tatsächlich so unter Zeitdruck stehst und etwas abliefern
musst, so kommt für dich wahrscheinlich nur die Copy & Paste-Lösung
infrage. Denn mit den Voraussetzungen, wie du sie beschreibst, wirst du
in einer Woche wohl kaum was lernen und am Ende mit nichts dastehen.
Schnapp dir also irgendein Tutorial, wo ein LCD - höchstwahrscheinlich
einer mit einem H44780-Controller drauf (schreib dir die Bezeichnung
besser auf ;) ) - und schau, wie der an dein STK600 geklemmt wird.
Häufig findest du ein Tutorial, wo du keinen Schaltplan lesen musst,
sondern mit einer einfachen Tabelle beschrieben ist, welcher LCD-Pin an
welchen Controller-Pin kommt. Dann nimmst du den Code von diesem
Tutorial, flashst ihn und freust dich, dass es läuft. Dann kannst du
anfagen, die ausgegebenen Texte in dem Code zu verändern, bis im Display
das steht, was dein Prof/Tutor sehen will. Zum Schluss sorgst du am
besten noch dafür, dass dein Prof nicht erfährt, dass du diesen Code
einfach nur kopiert hast.
Wenn du danach noch was lernen möchtest, fängst du am besten mit dem AVR
C-Tutorial hier bei Mikrocontroller.net an. Damit habe ich selber vor
Jahren, damals genauso ein Laie wie du jetzt, angefangen zu lernen und
kam schnell voran (also eigentlich habe ich mit dem ASM-Tutorial
angefangen, um zu verstehen, was in einem Controller überhaupt
passiert). Und ich möchte dabei hervorheben, dass ich damals wirklich
noch blutiger Anfänger war, d.h. mein Studium lag noch in weiter
Zukunft, Assembler war ein völliges Fremdwort für mich und ich hatte bis
dahin noch keine einzige Zeile C geschrieben und hatte nicht die
leiseste Ahnung, wie der Code überhaupt auf einen Controller kommt. Ich
hatte nur etwas Programmiererfahrung in Delphi.
Damit will ich sagen, dass die Ausrede, du hättest nichts geeignetes für
einen Laien gefunden, nicht gilt. Es gibt zigtausend gute Anleitungen
und einige Hundert sehr gute Anleitungen im Netz, die beschreiben, wie
man deine Aufgabe löst. Die Sucharbeit musst du schon selber machen,
denn von nichts kommt nichts, und darüber hinaus wissen wir nicht, was
du für ein Lerntyp bist (lernst du besser durch langen Fließtext und
Quellcode-Studium oder eher durch Bilder und Video-Tutorials?) Das musst
du schon selber für dich wissen :)
Freundlichen Gruß
Ansonsten gibts noch Arduino "für Doofe"* mit super Tutorials bezüglich
dem Anschluss der Hardware und den Grundprinzipien der
Displayansteuerung.
An diesen kann man sich durchaus orientieren, aus Funktionen der Libs
kann man sich ein nettes Strukturgramm basteln und es dann
nachprogrammieren.
Da ändert sich ja physikalisch nix und C bleibt C. Man muss da halt "nur
noch" eine Ebene tiefer gehen und ein paar Register beglücken.
Vorallem hat ein blutiger Anfänger vermutlich keinen Durchblick, wie die
Programme ablaufen müssen, damit sie wie gewünscht funktionieren.
Deswegen ist es durchaus sinvoll sich an eine funktionierende Vorlage
anzulehnen.
Zumindest so lange, bis man sich die Art zu denken angewöhnt hat, die es
braucht um gut strukturierte Programme schreiben zu können.
*Für Doofe ist keine Beleidigung gegenüber Aruinonutzer. Es soll halt
nur verdeutlichen, dass viele der Tutorials ziemlich anfängerfreundlich,
nahezu idiotensicher, sind. Der Beginner ist immer, mangels Wissen und
Erfahrung doof, da müssen wir alle durch, wenn wir uns mit Neuem
beschäftigen.
Also erstmal vielen Dank für die schnelle, und umfassende Hilfe. Das mit
der Aufgabe wurde evtl falsch verstanden. Ich hatte 2 Veranstaltungen,
in denen es aber hauptsächlich um logische Schaltungen, Automaten etc.
geht, aber ich denke dass der Prof es so gemeint hat, dass wir uns da
mal einarbeiten sollen, und uns das anschauen sollen, jedoch nicht dass
die Aufgabe sehr komplex sein muss (ein hello world oder ein einfaches
Programm / Ausgabe auf dem Display würde wahrscheinlich reichen).
Trotzdem danke nochmal, ihr habt mir schon viel geholfen
Lukas schrieb:> Bei der erstem Vorlesung hat uns der Prof am Ende ein AVR STK600 (Atmega> 2560) und ein 2x16 LCD Display in die Hand gedrückt, und gemeint wir> sollen bis nächste Woche ein kleines Programm mit LCD - Ausgabe (in C)> schreiben.
..und hat vermutlich ein einem Nebensatz erwäht wo ihr Beispielcode von
der Uni Webseite laden könnt. Korrekt funktionierende LCD Treiber
schreibt ein Anfänger nicht mal eben so einfach.
Ansonsten fängt man mit einer blinkenden LED an: Das ist eins der
einfachst möglichen Programme und soll zeigen dass die Toolchain (IDE,
Compiler etc.) inklusive flashen des Controllers funktioniert. Das alles
sollte in den Unterlagen des Kurses haarklein beschrieben sein...
Soll das heißen der Prof. hat für jeden der 30+ Studenten so ein Kit?
Und wenn eines kaputt geht wird nachgekauft? Da muss ja Geld vorhanden
sein. Zumal es wesentlich billigere Kits - sogar mit Debugger - für 8051
oder ARM gibt. Es gibt sogar das Arduino Zero mit Debugger drauf.
Hallo
da frage ich mich als jemand der nie studiert hat - warum gibt es
eigentlich Universitäten?
Ja ist natürlich etwas ketzerisch gemeint, aber eine Aufgabe ist es doch
Menschen etwas bei zu bringen, zu erklären, und bei Problemen zu helfen.
Wenn solch ein Vorgehen wie es der TO beschreibt, und wie man es immer
wieder auch wo anders lesen und in Videos sehen kann, aber der Wahrheit
entspricht, könnte man doch, zumindest am Anfang, auf die Universität
verzichten da man sowieso alles selbst herausfinden und sich erarbeiten
muss - teure (für den einzelnen Studenten) könnte ja direkt auf
Leihbasis, wie es rudimentär sogar schon in manchen öffentlichen
Bibliotheken gemacht wird, den Studenten mitgegeben werden.
Ganz generell und natürlich nur von Außen betrachtet kommt es mir vor
als wenn bei (technischen?) Universitäten und artverwandten
Bildungseinrichtungen nur Druck ausgeübt wird und Nettigkeit und echte
Hilfe Fremdworte sind.
Das es auch anders geht zeigen die Allgemeinbildenden Schulen bis etwa
zur 9 oder 10 Klasse und die Beruflich Fortbildung, innerbetriebliche
und externe Schulungen und ähnliche Veranstaltungen.
Jemand
Jack schrieb:> Könnte es sein, dass der Herr Professor ein paar angeberische Softwerker> in ihre Schranken verweisen wollte?
Und diesen Angebern auch noch ein STK600 an die Hand gibt? Eher
unwahrscheinlich.
Lukas A. schrieb:> wir sind nur 7 Leute im Kurs, da geht das schon ;D
Der Prof hat also kein Problem damit an 7 beliebige Stundenten 7 STK600
(> 200 Euro/Stück) auszugeben, die besten Chancen haben, die Teile zu
schrotten? Das ist kaum zu glauben.
Dazu dann noch die Aufgabe, die recht komplex ist, in einer Woche zu
schaffen? Bei uns war es so, dass wir zuerst im Labor ein Programm
schreiben sollten, dass schlicht eine LED ein- und ausschalten sollte,
das beliebte "Hello Word" für Mikrocontroller: Der Blinker. Euer Prof
scheint da ein ziemlich fieser Kerl zu sein.
Tutorial gibts hier auf der Seite:
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
Das findet man ganz leicht indem man bei Google "AVR LCD Tutorial"
eingibt, es ist dann der erste Treffer, den Google findet. Da du schon
diese Aufgabe offenbar nicht meistern konntest wäre ich fast geneigt dir
ein anderes Studium zu empfehlen.
Jemand schrieb:> Ja ist natürlich etwas ketzerisch gemeint, aber eine Aufgabe ist es doch> Menschen etwas bei zu bringen, zu erklären, und bei Problemen zu helfen.
Studium bedeutet sich selbst etwas beizubringen, das Lernen zu lernen.
Der Prof zeigt nur in welche Richtung man gehen soll, den Weg muss man
dann selbst beschreiten und am Ende wird man darüber quasi ausgefragt
als Kontrolle, ob man den Weg auch wirklich gegangen ist und sich nicht
nur die Wegbeschreibung dazu durchgelesen hat.
Zu meiner Zeit jedoch, so vor 15-20 Jahren, konnte man mit Problemen
aber auch durchaus den Prof fragen und er erklärte dann...sofern er auch
gemerkt hatte, dass man sich wirklich mit dem Thema beschäftigt hatte
(und das merkt man sehr schnell ob sich jemand mit einem Thema
beschäftigt hat oder nicht).
Jemand schrieb:> da frage ich mich als jemand der nie studiert hat - warum gibt es> eigentlich Universitäten?
Eine Uni ist keine Schule. Wenn du auf eine Uni gehst solltest du in der
Lage und Willens sein dir Wissen selbst beizubringen.
Deshalb heisst es auch "VORLESUNG" und nicht "Unterricht".
Jemand schrieb:> Das es auch anders geht zeigen die Allgemeinbildenden Schulen bis etwa> zur 9 oder 10 Klasse
In dem Stil würde ein E-Technik oder Informatik Studium 20 Jahre dauern!
Jim M. schrieb:> Korrekt funktionierende LCD Treiber> schreibt ein Anfänger nicht mal eben so einfach.
Völlig überzogen.
Hier geht es um
a) Wie funktioniert das Display (8 bit parallel, /WE, /CS, Dotmatrix).
b) Welche Initialisierung muss ich machen (Delayschleife 1ms, eine Hand
voll Werte)
c) Wie wackle ich mit den Ports um ein /WE und ein /CS zu erzeugen
(Bitoperationen)
d) Wie schreibe ich ein Unterprogramm das ein Zeichen auf das Display
schiebt
e) Wie kann ich das ganze in ein Programm für ein "Hello!" bringen.
Und: Wie bin ich organisiert um diese Tasks einigermaßen vernünftig
abzuarbeiten um nächste Woche im Praktikum tatsächlich mit einem
eingermaßen vernünftigen Programm aufzuschlagen und dort mir in 90min
nicht alles von Praktikumsbetreuer vorkauen lassen zu müssen bis ich es
verstanden habe (und das x Anzahl der Praktikanten).
rgds
Als Arduino Jünger, mit fundiertem Halbwissen, würde ich natürlich zur
Arduino IDE greifen.
In ca 1/2 Stunde ist eine Board Definition für den ATMega2560 am STK600
angepasst/geschrieben. Wenn der Sensor nicht zu exotisch ist, dann hat
man die Sensorwerte nach ca einer weiteren Stunde auf dem Display.
Gut, das geht nur mit etwas Vorwissen, und unter Nutzung der übliche
Arduino Libs.
Zeitaufwand insgesamt nicht über 2 Stunden.
----
Fängt man allerdings bei Null an...
1. C lernen
2. Umgang mit IDE/Toolchain lernen
3. Datenblatt von ATMEGA2560, STK600, Display und Sensor lesen UND
verstehen.
4. Programm vollständig selber schreiben
Dann ist 1 Woche, nicht zu schaffen.
Das geht in die Monate.
Ich behaupte:
Das Problem ist also nicht die Anwendung selber, sondern die da rund rum
nötigen Grundlagen.
Die Aufgabe hat vermutlich nur einen erzieherischen Wert.
Da spazieren die Sprösslinge in die Vorlesung, meinen sie seien die
Kings weil sie das Abitur bestanden haben und meinen sie könnten alles.
Mit so einer Aufgabe möchte der Prof erzielen dass die Leute realisieren
"ich bin doof".
Aber ganz ehrlich: So schwer ist das nicht. Das sollte man sich locker
in einer Woche erarbeiten können, es gibt hervorragende Anleitungen und
zudem spricht nichts dagegen ein fertiges Grundgerüst zu nehmen. Für
Sensoren und Display gibt es garantiert fertige Bibliotheken.
Nogler schrieb:> Aber ganz ehrlich: So schwer ist das nicht. Das sollte man sich locker> in einer Woche erarbeiten können
Das meine ich auch! Zumal von Sensoren oder einem "echten" Treiber für's
Display ja gar nicht die Rede ist! Es würde nach seiner Beschreibung ja
schon reichen, da irgendwie ein paar Zeichen auf's Display zu bringen.
Ich wüsste gar nicht, womit man sich dafür eine Woche lang beschäftigen
sollte!
6a66 hat das oben in seinem Post ja ganz gut beschrieben, was zu machen
ist.
Nogler schrieb:> Die Aufgabe hat vermutlich nur einen erzieherischen Wert.>
Yep
> Da spazieren die Sprösslinge in die Vorlesung, meinen sie seien die> Kings weil sie das Abitur bestanden haben und meinen sie könnten alles.>
Nicht Alle
> Mit so einer Aufgabe möchte der Prof erzielen dass die Leute realisieren> "ich bin doof".
Keineswegs. Normalerweise geht das Semster nicht damit an, dass der Prof
Evalboards verteilt. Sondern da kommt schon mal eine Bemerkung wie "Wir
werden das und das machen, und da braucht Ihr ... Kenntnisse". Wer
zuhört und nicht nur ins Skript schaut, der hat hat schon mal die IDE
runtergeladen und mal damit gespielt bevor es in das erste Praktikum
geht. Und - oh - da gibt es ja SOOO viele Praktika.
Wer aber meint er sitzt das Praktikum ab der muss schnell realisieren
dass das nicht so geht. Ob er dann den Schluss zieht "Mann, war ich
doof" oder das ganze dem Prof zuschiebt ist eben auch Lerneffekt.
rgds
Jemand schrieb:> da frage ich mich als jemand der nie studiert hat - warum gibt es> eigentlich Universitäten?
Wie bereits einige Vorredner gesagt haben: um das Lernen zu lernen! Das
es bei einer solchen vermeintlich banalen Angelegenheit eklatante
Defizite gibt, merke ich jeden Tag an nicht wenigen Kommilitonen, die
sich die einfachsten Informationen nicht besorgen können - selbst wenn
diese in fetter roter Schrift auf einem Info-Bildschirm vor ihnen
blinken.
Nach meinem Empfinden ist dies besonders bei den frischen Schulabgängern
der Fall, weniger bei bereits berufserfahrenen Menschen. Die
"Frischlinge" (so bezeichne ich die Schulabgänger jetzt mal) sind es
gewohnt, dass ihnen der Lehrer (was der Professor ja nun keinesfalls
ist) ständig den Hintern hinterher trägt und eben alles vorkaut und zur
Not zusieht, dass alle auf dem gleichen Stand bleiben. Dem Prof ist das
relativ egal und ihn kümmert es wenig, wie schnell man mit dem Stoff
persönlich voran kommt und ob man es denn nun begriffen hat. Dafür hat
man das nötige Werkzeug, die Unterlagen und Hilfsformate, wie z.B.
Tutorien, an die Hand bekommen. Wer das nicht für sich zu nutzen weiß,
hat wahrscheinlich das Konzept dieser gesamten Institution Hochschule
nicht verstanden.
Daher darf eine Hochschule/Uni nicht einfach als Fortsetzung der Schule
verstanden werden mit gesteigertem Schwierigkeitsgrad und ansonsten
gleichem Vorgehen. Die Aufgabe der Hochschule ist es, dem Menschen
beizubringen, wie er sich in seinem gewählten Studiengang die nötigen
Informationen selbst besorgt, um später neues Wissen daraus zu schaffen
(daher ja auch "Wissenschaft"). Und das eben unter Verwendung
wissenschaftlicher Standards. Dafür stellt einem die Hochschule die
entsprechenden Einrichtungen und Netzwerke zur Verfügung, die man für
ebendieses Selbstlernen benötigt. Selbstlernen besteht schließlich nicht
nur, wie du vielleicht meinst, aus dem bloßen Selbststudium zuhause
durch das Lesen von Texten, sondern eben auch durch das praktische
Lernen an (technischen) Einrichtungen, die sich eben kaum eine
Privatperson leisten könnte. Oder möchtest du von einem Menschen am Hirn
operiert werden, der seine medizinischen "Kenntisse" nur durch das
Sezieren von Fröschen zuhause erlernt hat? Und auch was das theoretische
Wissen in Form von Texten oder Vorlesungen angeht, so gibt es auch da
gravierende Unterschieden zu dem, was man aus dem Internet herausfindet.
Ich habe schon oft erfahren, dass es bestimmte Informationen in der Form
einfach nicht im Netz zu finden gibt. Da war ich froh, dass ich einen
Professor oder Tutor hatte, der mir diese nützliche Information
vermittelt hat.
Natürlich lässt sich über Themen, wie die Betrueuungsdichte von
Studenten im deutschen Hochschulsystem oder dass Hochschulen gefühlt
immer mehr dazu tendieren über wirtschaftliche Faktoren, wie
hochdotierte Forschungsaufträge, statt über Wissen miteinander zu
konkurieren, streiten. Das lässt Meiner Meinung nach aber immer noch
nicht das Argument zu, Hochschulen seien überflüssig, weil man
schließlich ja auch zuhause lernen könnte, statt sich von jemandem "da
vorne berieseln" zu lassen. Hochschule ist eben doch noch mehr, als nur
das.
Gruß