Hallo Zur Zeit erweitere ich meine Website mit einigen Codebeispielen für die ATmega Mikrocontroller. Die Idee dahinter ist, ganz einfache, funktionierende Programme zu veröffentlichen, die einem helfen, die Peripherien verschiedener Megas schnell und fehlerfrei aufzusetzen und zu testen. Dazu hab ich auch ein Tutorial geschrieben, wie man den Code schnell schnell und Unkompliziert auf den Controller bringt. Wer Lust hat, es sich anzusehen, darf mir gerne ein Feedback geben. Bin um jeden Tipp, was man noch verbesern könnte, dankbar. Das Tutorial ist erst heute fertig geworden und auf meienr Seite noch nicht verlinkt. Man erreicht es aber über folgende Adresse: http://www.electronicsplanet.ch/mikrocontroller/avr-tutorial-c/avr-tutorial-c.htm Die Codesammlung ist bereits verlinkt, auf die Startseite kommt man aber auch über: http://www.electronicsplanet.ch/mikrocontroller/source-code/source-code-index.htm Wer Zeit und Lust hat, sich das anzusehen und mir ein Feedback zu geben tut mir damit einen grossen Gefallen. Viele Grüsse Kresley
Du hättest dir die Mühe sparen können, und anstelle dessen das auf diesen Seiten existierende Tutorial von seinen Schwachstellen (die du ihm durch eine eigene Arbeit ja unterstellst) befreien können. Die Beschränkung auf teure (und alte) Hardware (STK500) finde ich zudem auch nicht gut, ein gut strukturierter Bericht, wie man den Atmega mit einem Programmer auf einem Steckbrett in Betrieb nimmt ist da eher Zielführend, als 80 Euro für das dicke Ding. M2C Michael
Ich finde die Seite gut gemacht. Aber auch ich würde sagen, dass die Welt nicht noch ein Tutorial für die AVRs braucht... Nimm doch mal ein Cortex-M3/M4 (nicht unbedingt die STM32, gibt ja noch einige andere).
Ergänzung: Du hast vergessen, die Verbindung von Tastern und LED zu den entsprechenden Ports zu beschrieben (soweit ich mich erinnere, sind hier auch so Flachbandkabel um die LED/Taster an verschiedenen Ports betreiben zu können) Eine leere "for" finde ich hier auch eher nicht so schön, eine "while" ist hier meiner Meinung nach geläufiger. Um auch konstruktiv zu sein...
Hallo Michael und Denis Danke für eure Feedbacks und die Ehrlichkeit, dass ich mir die Mähe hätte sparen können. (ich musst lachen, als ich das las) Mir ist bewusst, dass es schon Tutorials gibt. Das ich ein eigenes geschreiben habe, hat folgende Gründe: * Das Tutorial ist nur eine kleine Nebenseite zu meinen Codebeispielen. Der Hauptinhalt der Website, sind die Codebeispiele und nicht das Tutorial. Ich will die Besucher meiner Website nicht mit den Codeschnipseln alleine lassen, sondern ihnen gleich zeigen, wie sie sie praktisch zum laufen bringen. * Die meisten Tutorials im Web, erklären zum Beispiel, wie man einen Timer zum laufen bringt. Mein Tutorial erklärt, wie man einen existierenden Timercode in den Controller bringt. Beide Arten von Tutorials haben ihren eigenen Zweck und ihr eigenes Zielpublikum. * Meins ist auf die kompilierung von kleinen Codes ausgelegt, wie sie auf meienr Seite zu finden sind. Es ist eine sinnvolle (sogar notwendige) Ergänzung zu den Codebeispielen. Es zeigt den kürzesten Weg zum laufenden Code. Und das ist das Ziel meiner Codesammlung: Dass man einen Code sofort zum laufen bringt. * Die Tutorials, die ich jetzt gesehen habe, sind nicht wirklich ausführlich bebildert. Ich liebe Anleitungen mit Bildern anstatt solche, die mich nur zutexten. > anstelle dessen das auf > diesen Seiten existierende Tutorial von seinen Schwachstellen (die du > ihm durch eine eigene Arbeit ja unterstellst) befreien können. Das ist deine Meinung, und ich weiss, dass sie falsch ist. Ich hatte nie den Gedanken, dass das Tutorial dieser Seite Schwachstellen hat. Ich habe das Tutorial auf dieser Seite nämlich nur kurz überflogen und gesehen, dass es nicht das ist, was zu meiner Codesammlung passt. Danke aber für den Tip mit der Hardware. Tutorials, wie man auf dem Steckbrett einen Controller zum laufen bringt, gibt es ja schon viele. Vieleicht werde ich mal eines verlinken. Zum Thema andere Controller: Wenn ich die populärsten Megas in meiner Samlung habe, überlege ich mir, noch andere Controller in die Sammlung einzufügen. Aber für den moment bleibe ich noch bei den Controllern, die ich kenne.
Michael schrieb: > Ergänzung: > Du hast vergessen, die Verbindung von Tastern und LED zu den > entsprechenden Ports zu beschrieben (soweit ich mich erinnere, sind hier > auch so Flachbandkabel um die LED/Taster an verschiedenen Ports > betreiben zu können) > Eine leere "for" finde ich hier auch eher nicht so schön, eine "while" > ist hier meiner Meinung nach geläufiger. > > Um auch konstruktiv zu sein... Hui, danke. Stimmt. Das Foto von den Verbindungen habe ich schon gemacht, aber ich vergas, es einzufügen. Danke
Hi David! Erstmal ein großes Lob, dass du sowas ins Netz stellst. Das ist grundsätzlich nicht schlecht. Ich persönlich bin aber auch ein wenig zwiegespalten über den Nutzen. Die Atmegas gehören zu den Controllern für die es gefühlt die meisten Tutorials gibt. Der Controler ist ja DER Bastelcontroller überhaupt. Ich selbst bin schon eine Weile von diesen Controllern weg und würde sie auch einem Anfänger nicht mehr ans Herz legen. Dies hat mehrere Gründe: - Atmegas sind leistungsschwach - Atmegas sind teuer - Debugger/Programmer sind teuer - Die Möglichkeiten sind stark eingeschränkt. - Cortex gibts auch schon im DIP Seit die Hersteller von Cortex-M Devices in einen derart ausufernden Preiskampf verfallen sind (Entwicklungsplattformen inklusive Debugger für wenige Euro --> kostet bei AVR gleich 100 Euro oder mehr) und es zudem auch freie ARM-IDEs gibt, wird der ATmega für mich sehr unattraktiv. Grade in dieser Umschwungzeit wären Tutorials für die Cortexe heiß begehrt. Da gibts noch nicht so viel. lg stm
@stm Mit sicherheit hast du Recht, mit dem, was du sagst, aber ich denke für "Einsteiger" sind die AVRs immer noch die bessere Wahl. Wenn ich das mal aus der Sicht eines µC-Anfängers betrachte, bin ich froh wenn ich nicht direkt mit 5 Timereinheite, 7 UARTs, usw. zugeworfen werde (ist nur ein Beispiel). Und da bin ich der Meinnung das so ein kleiner ATmega8 wirklich gut geeignet ist. Wenn man dann verstanden hat, wie die Dinge funktionieren kann man auch umschwenken auf größere Sachen. Als du deinen Führerschein gemacht hast, bist du ja auch nicht gleich mit nem Porsche los gefahren ;) Vom Prinzip denke ich, das es relativ "egal" ist, welchen µC man da vor der Nase hat, solange man verstanden hat, wie die Dinge funktionieren. Mein umstieg von den µC die wir im Studium hatten (68HC11, 68HC12, 68332) auf AVR hat sehr gut funktioniert. Zu der "Leistungsschwäche" von den AVRs: Was hast du denn damit vor? einen vollwertigen PC-Ersatz wird man damit nicht bauen können, das ist richtig, aber dafür sind sie auch nicht gedacht. und 8/16MHz und 8/16/32/64kB flash reicht für die meisten Anwendungen aus. Ein Porsche für 10km durch die Stadt, ist halt ein bisschen overkill. Es ist immer eine Ansichtssache und die eigenen Vorgaben, was man realisieren will. Das ist meine Meinung :) @David auf den ersten Blick sieht die Seite gut aus, werd sie mir in den nächsten Tagen mal genauer anschauen. Grüße
@all -David Jungs, wir haben es versucht. Manche sind halt Beratungsresistent und können sich alles schönreden ohne wirklich Ahnung zu haben. @David Weiter so, darauf hat die Welt gewartet! Wir wünschen dir, dass die Menge der interessierten alle Erwartungen bei Weitem sprengt! Aber erwarte bitte keine Lobeslieder von uns, wird nicht kommen...
Danke viel mal für alle Komentare Über Sinn und Unsinn der Codebeispiele für den ATmega8 lässt sich sicher sehr gut Diskutieren. Ich hab auch nicht hier geschrieben, um Lobeslieder zu erhalten, sondern eben um etwas Kritik zu ernten. Ich will die Seiten ja noch verbessern. Trotzdem Danke für die lobeden Worte. Um die Besucherzahlen geht es mir übrigens nicht mal gross (ok, jedem Webseitenbetreiber geht es ein wenig um Besucherzahlen). In erster Linie will ich einfach den Programmiereinsteigern eine kleine Freude machen ;-) Ich habe dabei für mich auch einiges gelernt.
STK500 und ATMega8 - meine beiden meistgehassten Produkte der Firma Atmel. Sorry, David, du hast dir zwar viel Mühe gemacht, aber das ist eine Kombination, mit der du vor 5 Jahren jemandem Freude gemacht hättest. Heute allerdings ist dieser Zug abgefahren. Ich streue noch ein bischen Salz in die Wunde: * Warum nicht wenigstens die modernen Nachfolger des Mega8, wie den Mega48/88/168/328? Die haben Pinchange Interrupts, 3 schöne Timer usw... - und die Arduino Fraktion liegt dir zu Füssen :-) * Ist es nicht sinnvoller, gleich modernere Prozessoren zu lehren, wo noch nicht so viel bekannt drüber ist - z.B. LPC oder STM32? Da gibt es wirklich offene Fragen: Einrichten einer Toolchain, Registerprogrammierung usw., die hier immer wieder auftreten. Und die STM32 Boards sind ungeschlagen preisgünstig und brauchen keinen Programmierer. * Ein moderner Programmierer wie z.B. der AVRISP MkII hätte zumindest mal erwähnt werden müssen. Immerhin ist er deutlich billiger als das STK500, kann neben ISP auch PDI und TWI und ist damit in der Lage, alle AVRs zu programmieren. Bisschen schade um die Arbeit.
> Ich streue noch ein bischen Salz in die Wunde: Salz ist ja genau das, was ich hören will ;-) > > * Warum nicht wenigstens die modernen Nachfolger des Mega8, wie den > Mega48/88/168/328? Die haben Pinchange Interrupts, 3 schöne Timer usw... > - und die Arduino Fraktion liegt dir zu Füssen :-) Die kommen noch. Schau dir mal die Peripherien der Controller an. Die sind jeweils sehr ähnlich. Um einen Timer von einem Controller auf den andern zu Exportieren, musst du oft nur ein paar Bits umschreiben. Hast du den Timer1 für einen Contorller programmiert, läuft der Code auch auf 3 anderen Controllern. > * Ist es nicht sinnvoller, gleich modernere Prozessoren zu lehren, wo > noch nicht so viel bekannt drüber ist - z.B. LPC oder STM32? Da gibt es > wirklich offene Fragen: Einrichten einer Toolchain, > Registerprogrammierung usw., die hier immer wieder auftreten. Und die > STM32 Boards sind ungeschlagen preisgünstig und brauchen keinen > Programmierer. Das wäre ein anderes Thema. Ich wollte etwas mit AVR Controller machen, weil hier auch immer wieder die selben Fragen auftreten. "Wie bringe ich meinen Timer zum laufen?" wird immer wieder gefragt. > * Ein moderner Programmierer wie z.B. der AVRISP MkII hätte zumindest > mal erwähnt werden müssen. Immerhin ist er deutlich billiger als das > STK500, kann neben ISP auch PDI und TWI und ist damit in der Lage, alle > AVRs zu programmieren. Das kann ja noch kommen :-) Ich bin noch nicht fertig. Danke für den Tip. > > Bisschen schade um die Arbeit. Mir machts Spass und die Seiten werden bis jetzt ganz ordetlich besucht.
Ich habe die Beispielprogramme schon vor einer Weile entdeckt und finde es genial! Wie oft bin ich schon am Aufsetzen einer Peripherie verzweifelt? Mit einfachen Code Exaples, die ich hätte kopieren und dann für meine Bedürfnise erweitern können, wäre mir viel Frust erspart geblieben. Danke für die Sammlung. Wäre toll, wenn du sie noch erweitern würdest. UART, SPI, usw. Das Tutorial ist sicher ok, wenn man ein STK hat. Ansonsten ist der Nutzen aber nicht so wahnsinnig.
Danke Szacha SPI Codes stehen schon einige bereit. Aber vorher werde ich die bestehenden Codes noch auf weitere Controller erweitern. Timer, adc und interrupt werden meiner Meinung ncvh häufiger gebraucht als die SPI. Gruss David
stm schrieb: > - Atmegas sind leistungsschwach Dein ARM ist auch leistungsschwach im Vergleich zu meinem PC. > - Atmegas sind teuer Käse. Mein Lieblingsavr bleibt der Mega48 für unter 1€. Gibts da einen vergleichbaren ARM? > - Debugger/Programmer sind teuer Braucht man eher selten. Dragon ist nicht wirklich teuer. > - Die Möglichkeiten sind stark eingeschränkt. Wenn man sie sowieso nicht braucht? Wenn man mehr Peripherie braucht kann man den Xmega nehmen. Für Leistungshungrige Projekte kann man Arms nehmen. Für das meiste andere sind Avrs doch ideal.
Hallo David, ich verstehe deine Hintergründe und bin noch einmal konstruktiv: Es sind definitiv zu viele Klicks nötig, um in der Codesammlung dahin zu kommen, wo man hinmöchte - reduzieren ist dringend nötig (gab da glaube ich mal eine Regel beim Websitebau, möglichst alle Infos mit 2 Klicks erreichen zu können... oder warens 3? Sind hier jedoch 4 bis zum Ziel, wenn man den Klick auf die Codesammlung mitrechnet (den ich wg. des Links ja nicht hatte bzw. der durch den Link ja represäntiert wurde). Vorschlag: Mache ATMega8 und 16 als Überschrift und zähle darunter auf (so groß ist die zahl der Unterkapitel ja nicht) oder, wenn größer werdend, lasse die zugehörigen Kapitel aufklappen bei Klick auf den Controller, ist zumindest besser als so (ja, wieder nur (m)eine Meinung) Zum anderen sind zwischen Code und Signalplot (+ Erklärung) leider ab und an Unstimmigkeiten: "ATMega16 Timer0 Normal" -> - DDRA wird genutzt, Kommentar sagt "Set PB3 as Output" (Code verwendet PORTA und DDRA, wäre also damit zu rechnen der Kommentar ist falsch) - Bei der Legende zum Plot wird auch von "PB0" und "PB1" gesprochen, PA0 und 1 dürften gemeint sein Ich gehe nicht alle Seiten durch, diese Unstimmigkeit ist aber auch anderweitig zu finden (noch bei ATMega8->Timer0 Overflow -> hier sprichst du beim Plot nur von "P0" ohne A, B, ... (hier wäre "PB0" angebracht :) ) Die restlichen Fehler darfst du selbst suchen, du weißt ja jetzt, worauf du schauen musst :) Viel Spaß noch weiterhin MFG
Hallo David, auf der Startseite befindet sich im Beispielprogramm ein Fehler. In Zeile 11 muss es PORTC heißen denke ich. Servus Peter
Hallo David, gratuliere daß du den Mut hast etwas zum Atmega vorzustellen. Die Art mit den Bildern finde ich sehr gut, speziell bei den Servos und Laser Tausch. Laß dir die Seite nicht madig machen. Ich lach mich immer krumm, wenn die "Experten" behaupten, der Mega8 ist zu klein, zu langsam und überhaupt... Du mußt unbedingt Cortex u.a. verwenden, ist Schachsinn. Der einzige Kritikpunkt wäre die Nichtnennung von USB-ISP oder ASP Programmierer. Kurze Programme, welche schnell erstellt werden müssen mache ich übrigens auch gerne per Bascom oder überhaupt in Assembler. Ihr könnt die Chips-Tüte stecken lassen, es lohnt nicht. :-)
Sieht so aus als hätte ich eine Diskussion losgetrete, welcher Controller der beste ist. Das war natürlich nicht meine Absicht ;-) @Michael: Danke für die Anregungen. Das mit der Tiefe der Seitenstruktur ist tatsächlich ein wichtiger Punkt. Moentan wteigen normale Besucher meiner Website über die avigation direkt in die richtige Unterkategorie, so dass an mit zwie Klicks in jeden Code kommt. Die Struktur, die oben in jeder Seite steht, erreicht man anfangs deshalb nur "von vorne her" und man kann sich, wenn man Lust hat in den Kategorien zurückklicken. Aber schon bald gibt es zu viele Kategorien um sie in der Navigation eufzulisten. Dann muss ich in die Richtung gehen, die du vorgeschlagen hast. Danke auch für die Erwähnung der kleinen Fehler. @petersp Äh, welche Startseite hat eine Codezeile 11? Die Codes sind nicht auf der Startseite. Aber ich werde den Fehler sicher finden, wenn ich demnächst sowieso jede Seite nochmals genau durchlese und kleine Fehler behebe. Die Programmcodes sind übrigens alle inzeln getestet. Relevante Fehler sollten köchstens in den Kommentaren vorkommen. @KIM-1 Ja, andere Programmierer werde ich auch noch erwähnen. Ich bin eben ein alter STK-500 Hase und kenne gar nicht viel anderes ;-) Liebe Grüsse an alle David
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.