Hi Ich möchte mich in meiner Freizeit erstmals mit µC befassen. Habe allerdings keinerlei Erfahrung auf diesem Gebiet. Nun habe ich mich mal umgesehen, womit man einsteigen könnte. Hängen geblieben bin ich beim BASCOM-AVR. Die mir erscheinenden Vorteile sind: - kostenlose Software (demo). Unbegrenzt lauffähig, aber nur bis 4kb Code. Das dürfte für den Anfang reichen. Die Vollversion gibt es für 80-90 Euro. - den ATMEGA8 gibt es im bedrahteten DIL-Gehäuse. Zum Experimentieren auf der Steckplatte ideal. Der Preis für den ATMEGA8 (um die 3 Euro) ist auch OK. Ich habe mir auf Youtube ein paar Videos angesehen, wo die ersten Schritte in Wort und Bild gut erklärt werden - deshalb der ATMEGA8. Und erhältlich ist er auch in kleinen Mengen, bzw. auch einzeln. Man kann damit LCDs ansteuern, PWM-, Timer-, ADC-, etc. Schaltungen bauen. - Da ich kaum Englischkenntnisse habe, finde ich auch das Buch "Mikrocontroller programmieren mit Bascom" http://www.conrad.at/ce/de/product/191514/ in deutscher Sprache sehr hilfreich. - Einen passenden Programmer (USB to ISB) habe ich auch schon entdeckt. Die Demo "BASCOM-AVR" habe ich bereits auf meinem PC (Win7/32) installiert, und sie läuft - Programmer muss ich erst besorgen. Nun möchte ich hier mal reinfragen, ob ich mein Vorhaben so angehen kann, oder ob etwas dagegenspricht. Ich weis auch noch nicht was ich mir mit einem µC mal bauen möchte. Aber die Ideen kommen bestimmt mit fortschreitenden Verständnis der Programmierung. lg
Nutze kein Bascom. Steig mit C ein. Nutze keinen uralten Mega8, sondern nimm einen modernen Pendant wie z.B. die Mega88 Reihe (88/168/...)
:
Bearbeitet durch User
Es ist unglaublich wie oft dieses Thema hier nach gefragt wird, mindestens einmal die Woche ;)
Ich finde, Du kannst das sehr gut so machen (auch wenn hier gleich wieder der Glaubenskrieg losgehen sollte.. :-) Die Vollversion braucht man nicht so schnell. Ich kann dieses Buch empfehlen: http://www.rowalt.de/ das kann man in einer älteren Version sogar online sogar durchblättern - fairer geht es nicht.
Oder man nutze, im Vergleich zu Bascom alt, eine moderne Programmiersprache: LunaAVR - http://avr.myluna.de/doku.php
Hallo, besser ist wenn du mit C einsteigst. Macht mehr Spaß beim Programmieren wenn die Programme größer werden. Ansonsten nutze Atmel Studio. Da hast du keine Speicherbegrenzung. Als Controller würde ich auch den Mega88 benutzen, statt die ältere Version Mega8. Zum programmieren kannst du den MK2 von Atmel nehmen. Der hat einen ISP-Anschluss (ca. 50€). Oder meine Empfehlung, das AVR-Dragon. Dieser Programmierer hat zusätzlich noch einen JTAG-Anschluss. Mit dem kann man bei bestimmten µC auch noch Debuggen. (ca. 70€). Den benutze ich selber. Diverturtle93
Der ATmega8 ist veraltet. Ein pinkompatibler Nachfolger ist der ATmega328 (1,95€) https://guloshop.de/shop/Mikrocontroller/ATmega328::24.html Und mit Arduino-Bootloader (2,95€): https://guloshop.de/shop/Mikrocontroller/ATmega328-mit-Bootloader-fuer-Arduino-Uno::38.html?XTCsid=f1ig83g676p86cilpri5ngsp00 Dann brauchst Du nichtmal ein Programmiergerät.
Ich arbeite gern mit Bascom, und zum Einstieg darf es auch ein Mega 8 sein. Der TE will ja das System AVR erstmal kennenlernen. Ich habe mit dem Pollin Evaluationsboard und der Erweiterung angefangen. Für Portbeschaltung, ADC, PWM, Timer und LCD-Ansteuerung reicht das durchaus. Das Eval.-Board hat jetzt zwar nicht massig Taster und LEDs, aber ein Erfolgserlebis stellt sich schnell ein. Eine sympathische Seite ist diese: http://halvar.at/elektronik/kleiner_bascom_avr_kurs Da sind die wichtigsten Grundlagen sehr schön beschrieben. Das weiter oben genannte Buch habe ich nicht, habe aber bisher nur positives darüber gelesen, wird glaube ich auch von dem Seitenbetreiber empfohlen. Bascom finde ich einfacher für Einsteiger, als C, zumal ich vor 30 Jahren viel mit LNW-Basic unter Newdos 80 programmiert habe. Ach ja, da war dann noch das Extended Basic für den TI99/4A :-)
Der ATmega 8 ist ein guter alter Klassiker. Fast alles, was du mit dem lernst, kannst du auch bei den anderen AVR Modellen genau so anwenden. Ich würde Dir allerdings zu einem Arduino Nano kompatiblen Modul wechseln, denn da hast du einen USB-UART Adapter mit drauf und mehr Speicher. BASCOM ist nicht mein Ding. Nimm lieber C oder Arduino.
Thomas S. schrieb: > Der TE will ja das System AVR erstmal kennenlernen. Das steht so aber nicht im Eingangspost. Ich nutze auch sehr gern die Atmel Controller und habe schon etliche Projekte erfolgreich abgeschlossen ( insofern ein Abschließen bei eigenen Projekten möglich ist. :-) ) Der Controller ist Geschmackssache, ob er nun eine Mega8 oder 88 nimmt auch erstmal egal. Allerings rate ich von Bascom auch ab. Die Community wird kleiner und mit C hat man auch den Umstieg auf einen anderen Controller wesentlich einfacher.
Dennis K. schrieb: > Allerings rate ich von Bascom auch ab. Die Community wird kleiner und Durch welche gesicherte Quelle wird die Aussage gestützt? Ohne Not ist es nicht erforderlich die C-Community zu stärken. Kritik zur Sprache läßt sich überall direkt und indirekt finden. Wird zwar nicht so schnell gelingen aber die Sprache gehört so langsam ausgemustert. Die Bascom IDE ist einfach zu installieren und zu verwenden und die Sprache hat noch den Vorteil sehr einfach Assembler inline mitzuverwenden.
Ich würde aber lieber Arduino empfehlen. Denn dort hat man auch die Chance, "echtes" C zu lernen und zu nutzen. Das bringt auf Dauer mehr als BASCOM. Wenn es aber so oder so nur eine nette Spielerei und Hobby sein soll, dann geht auch BASCOM.
Thomas S. schrieb: > Eine sympathische Seite ist diese: > http://halvar.at/elektronik/kleiner_bascom_avr_kurs Danke Thomas, bin schon mitten drin :-) lg,
Hallo, die Programmiersprache ist am Anfang doch wenig entscheidend. Entscheidend ist doch, ob man schon programmieren kann oder es erst lernen will. Programmieren lernen heißt doch zuerst, daß man lernen muß, ein Projekt in seine möglichen und /oder nötigen Teilabläufe zu zerlegen. Daß man Grundlagen lernen muß, also Datentypen warum und wozu Schleifen welche gibt es Was sind Bedingungsabfragen Was sind Subroutinen (Unterprogramme) Was sind Interrupts und wozu braucht man die Wie arbeitet eigentlich prinzipiell so ein Microcontroller? Der macht alles schön nacheinander, der kann nichts wirklich gleichzeitig, der arbeitet nacheinander ab, was man ihm per Programm gesagt hat. Das sind doch in etwa die Dinge, die Probleme bereiten wenn man anfängt. Man kann in Bascom, ASM, C, C++ strukturiert programmieren oder den tollsten Spahetti-Code produzieren. Bascom hat wie die Arduino C/C++ Variente den Nachteil, daß man viel als Baukasten in fertigen Libraries bekommt und darüber vergißt, sich darfüt zu interessieren, was hinter den Kulissen passiert. Man kann auch in Bascom ein HD44780-Display "zu Fuß" ansteuern und jedes Pin einzeln bedienen. Sollte man eben auch mal machen, mit dem Datenblatte des LCD-Controllsers um zu verstehen, was hinter den Kulissen passiert und Fehler zu finden. Später macht man das meist nur, wenn man etwas wirklich neues benutzen will, wo noch keiner die Vorarbeit geleistet hat und dann hilft es sehr, wenn man da mal genauer reingeschaut hat. Gruß aus Berlin Michael
Karl M. schrieb: > Oder man nutze, im Vergleich zu Bascom alt, eine moderne > Programmiersprache: > > LunaAVR - http://avr.myluna.de/doku.php Oh, oh, er hat Jehova gesagt - gleich schlägt MWS hier auf :)
Jonny S. schrieb: > Nun habe ich mich mal umgesehen, womit man einsteigen könnte. Hängen > geblieben bin ich beim BASCOM-AVR. Für den Anfang würde ich wärmstens Assembler empfehlen. Nur so lernt man den Prozessor wirklich im Detail kennen. Dieses Wissen ist enorm hilfreich in verschiedenster Hinsicht. Wenn man noch überhaupt nicht programmieren kann, dann ist Assembler vielleicht sogar der einfachste Einstieg. Mit Assembler liegt am Anfang recht viel drin, aber man wird die Limits - unübersichtlicher Code und aufwendiges Codieren selbst einfacher Operationen - schnell bemerken. Für einen Umstieg auf C hat man dann aber die perfekte Basis, so dass es sehr leicht fallen dürfte.
Ich empfehle auch einen Atmeg328 oder neuer. Keinesfalls mehr mit einem Atmega8 beginnen, das ist ein Opa. IMO beginnt man am besten mit Arduino Uno. Hier muss man grad mal 10 Euro investieren und wenn es einem zu eng wird mit der Arduino IDE kann man den Atmega328 auf dem Arduino Uno Board auch in C programmieren da alle Pins des Atmegas herausgeführt sind und man einen ISP-Anschluss hat.
Wie wäre es mit meinem Assembler Workshop? http://stefanfrings.de/avr_workshop/index.html Wenn Du das durchgespielt hast, würde ich mit C weiter machen. Denn ich denke auch, dass ein bisschen Assembler Grundlagen hilfreich sind, aber man muss nicht gleich alles in Assembler umsetzen.
stefanus schrieb: > Wenn Du das durchgespielt hast, würde ich mit C weiter machen. Denn ich > denke auch, dass ein bisschen Assembler Grundlagen hilfreich sind, aber > man muss nicht gleich alles in Assembler umsetzen. Dem schließe ich mich an ;)
Man muss aber erstmal nicht unbedingt genauer reinschauen. Du hast auf der einen Seite gesehen schon Recht, aber der TE soll erstmal fühlen, was da geht, und dann erst warum es so geht. Also erstmal die Funktionen des µP erforschen, und dann mit den zeitkritischen Herausforderungen konfrontiert werden. Einfach geschrieben: Der Prozessor soll erstmal das tun, was man ihm sagt. Eben Taster abfragen und reagieren. Dann soll da ne Ausgabe auf den Rechner oder das LCD folgen, und darauf soll sukzessive aufgebaut werden. Der TE Steht ja noch ganz am Anfang. Wenn er mal Blut geleckt hat, dann wird er selber herausfinden, dass C oder asm eher seinem Gusto entspricht. Wenn er mit Bascom anfangen möchte...Warum nicht? If, then, else, for-next ist intuitiver als jr; oder ld;a etcpp, obgleich ich zwar mal asm gelernt habe, so vor 30 Jahren, es dann aber wieder neu lernen müsste, und es auch gar nicht so schlecht finde.
Thomas S. schrieb: > Du hast auf > der einen Seite gesehen schon Recht, aber der TE soll erstmal fühlen, > was da geht, und dann erst warum es so geht. Also erstmal die Funktionen > des µP erforschen, und dann mit den zeitkritischen Herausforderungen > konfrontiert werden. Sehe ich umgekehrt. Es ist besser zunächst die innere Funktionsweise des Prozessors zu lernen, darauf basierend selbst einfache Dinge zusammenzubasteln, und wenn man das dann mal verstanden hat schliesslich auf eine Hochsprache zu wechseln, wo man sich nicht mehr um die Details kümmern muss. Auch jemand ohne Programmierkenntnisse lernt in ein paar Stunden, wie man z.B. eine LED in Assembler zum blinken bringt. Dann hat man bereits sehr gut kapiert, was im innern des Prozessors geht. Bei C oder noch mehr bei BASCOM hingegen ist es immer eine gewisse Magie. Aber ja, ich bin eher der Lerntyp, der am Anfang die Details ganz genau kennen will und dann Schritt für Schritt die Möglichkeiten erweitert. Gibt sicher auch den umgekehrten Ansatz.
Pollin Evaluationsboard und Mega8 im DIL-Gehäuse plus Bascom sind zum Laufenlernen vollkommen OK, man muss sich nicht gleich zu Beginn mit kryptischem C herumschlagen. Basic ist gerade für Einsteiger intuitiv und gut les- und programmierbar, so kann man sich zunächst einmal auf die Arbeitsweisen und Eigenarten der µC selbst konzentrieren. Wer dann masochistisch genung veranlagt ist kann noch immer auf C umsteigen ;-). Es hängt dann auch etwas von den Wünschen und Erwartungen ab. Geht es dir mehr ums Programmieren an sich? Dann sicher C oder gar Assembler. Oder gehts dir mehr ums Endergebnis? Dann Bascom, da gehts weitaus bequemer. Denn lass dir bloss nicht einflüstern Bascom-Code wäre lahm, viel zu gross, könne nix...das ist Quark. Zumal Programme in den seltensten Fällen wirklich zeitkritisch sind, und wenns mit dem Speicher mal eng wird dann nimmt man halt für schmales Geld einen grösseren Controller. Übrigens lässt sich in Bascom auch Assembler-Code integrieren, man kann also wo gewünscht oder notwendig auch sehr maschinennah programmieren. Man muss es aber nicht. Ich hatte mich auch ein Weilchen mit C beschäftigt, aber bei AVR bin ich letztlich doch bei Bascom hängen geblieben. Weil ich nicht täglich programmiere und in erster Linie am Ergebnis interessiert bin. So wie ich auch bei Desktop- und Mobile-Anwendungen in Pascal programmiere, da kommt man nach einer Pause einfach viel schneller wieder rein. Just my 2ct ;-)
Ich würde wenn fürs Steckbrett ist eher ein DIP40 Typen einsetzen, also ATM16 oder nen moderneren Nachfolger. Schadet nie wenn man noch ein paar Pins übrig hat. Ansonsten eine Arduino Mega2560 Board gibts bei Aliexpress ab 6€ inkl. Versand günstiger kommt man nicht an ein fertig aufgebautes Board mit einem großen ATMega drauf.
Schließe mich an: kauf dir nen Arduino oder Clone. Du brauchst nix weiter dafür und kannst sehr gut einsteigen. Und wenn du die Arduino-IDE nicht mehr magst oder darüber "hinauswächst", kannst du mit C/C++ ohne die Stützräder von Arduino weitermachen. Mit BASCOM machst du nicht nur unnötig abhängig von einer bestimmten Firma, und teuer ist der Kram auch noch (jedenfalls im Verhältnis dazu, was man bekommt).
Mal etwas von meinem ersten Erfahrungen: 1.) Da das Porto meist teurer ist als der µC, kauf dir gleich ein paar Modelle. 2.) Ich hatte zu Anfang den Mega32; tiny2313 und den tiny13, gerade den tiny13 kann ich als Anfängerchip empfehlen, da er einen nicht gleich mit einem monströsen Datenblatt konfrontiert. 3.) Zum Programmer, es gibt viele Modelle und eine große Preisspanne. Ich empfehle den "MySmart USB light". Gründe dafür sind : kostengünstig; versorgt die Schaltung beim Programmieren mit Strom; leichte Programmeinbindung in AVR-Studio; eigene einfache Programmoberfläche. 4.) Zur Programmiersprache sag ich NICHTS.
Ich stand am Anfang ähnlich da wie Du. Von nix eine Ahnung, aber viel Interesse. Letztlich bin ich beim Arduino mit dessen IDE gelandet. Da man damit auch diverse Attinys programmieren kann, die für kleine Projekte allemal ausreichen, bin ich dann erst mal bei den Tinys gelandet, die ich über die Arduino IDE programmiere. Inzwischen habe ich mir dieses Bundle zugelegt: http://www.pollin.de/shop/dt/Mjg3OTExOTk-/Fundgrube/Literatur/AVR_Programmierung_und_Hardware_in_C_inkl_Evaluation_Board.html Das ist eine andere Hausnummer als die Arduino IDE, aber wenn man es konsequent durcharbeitet (bin selber noch mittendrin), lernt man eine Menge!
:
Bearbeitet durch User
Fred F. schrieb: > 3.) Zum Programmer, es gibt viele Modelle und eine große Preisspanne. > Ich empfehle den "MySmart USB light". Gründe dafür sind : kostengünstig; > versorgt die Schaltung beim Programmieren mit Strom; leichte > Programmeinbindung in AVR-Studio; eigene einfache Programmoberfläche. Hallo Fred Ich habe mir genau diesen Programmer gekauft. Aber eine Programmoberfläche dazu habe ich nicht gesehen. Was meinst du damit ? lg
Paul P. schrieb: > ... so kann man sich zunächst einmal auf > die Arbeitsweisen und Eigenarten der µC selbst konzentrieren. Wenn das das Ziel ist, wäre wohl erstmal Assembler nicht schlecht. Das fördert ungemein das Verständnis für die Arbeitsweise eines µC. Später, wenn es darum geht, die Ergüsse von irgendeinem Hochsprachencrosscompiler zu beurteilen/optimieren, können einem diese Kenntnisse nur helfen.
Mit "Arbeitsweisen und Eigenarten" meinte ich zunächst einmal simple Sachen wie: - Unterschiede zwischen Ein- und Ausgängen - Was ist ein Timer, wie werte ich ihn aus, was mache ich damit? - Was ist ein externer Interrupt, wie werte ich den aus? Usw usw...solche Themen treiben Anfänger zu Beginn um, nicht um wieviel Millisekunden ein Code schneller ist oder wieviel Byte Speicherplatz man sparen kann. Ob man für solche Basics dann unbedingt mit Bitschubserei, Stacks und direkten Registerzugriffen beginnen muss...? Hier bietet z.B. Bascom (mag bei Arduino ähnlich sein) eine direkte Hilfefunktion innerhalb der IDE die da schon recht hilfreich ist. Und wenn man Mist programmiert hat meckert der Compiler, sehr im Gegensatz z.B. zu C der i.A. so ziemlich jeden Blödsinn frisst. Mit der Folge dass simple Schreibfehler für Chaos und ratlose Gesichter sorgen. Persönlich für den Einstieg sehr hilfreich fand ich auch dass sich das gesamte Programm in einem Fenster befindet und nicht auf mehrere Dateien verteilt ist, dass direkt in der IDE compiliert werden kann und man danach direkt brennen kann...nix mit irgendwelchen Kommandozeilen-Tools die gerade zu Beginn noch mehr verwirren. Das sind alles Dinge die zu Beginn vom eigentlichen Kern ablenken, man muss sich das Leben da nicht unnötig schwer machen.
gert schrieb: > Die Bascom IDE ist einfach zu installieren und zu verwenden und die > Sprache hat noch den Vorteil sehr einfach Assembler inline > mitzuverwenden. Und AVR Studio ist schwierig zu installieren? Und inline Assembler ist in C schwierig?
1 | asm("call 0x0000"); |
:
Bearbeitet durch User
greg schrieb: > Mit BASCOM machst du nicht nur unnötig abhängig von einer bestimmten > Firma, und teuer ist der Kram auch noch (jedenfalls im Verhältnis dazu, > was man bekommt). Das ist doch für den privaten Bastelbereich nun wirklich egal. Ich hab auch mit Bascom angefangen. Wenn man dann irgendwann an Grenzen stößt ist ein Umsteigen auf z.B. Luna Avr auch kein Problem. Ein bisschen Einarbeitungszeit ist zwar angesagt, aber dann ists auch gut. Gibt immmer Ausweichmöglichkeiten.
Vergiß alles hier! Fang einfach an. Egal was du machst, du wirst dich weiterentwickeln, wenn es Spaß macht. Man muß nicht perfekt sein am Anfang und die optimale Lösung haben. Typisch Deutsches Denken. Los geht's: https://www.blafusel.de/misc/my_first_mc.html
Paul P. schrieb: > Und > wenn man Mist programmiert hat meckert der Compiler, sehr im Gegensatz > z.B. zu C der i.A. so ziemlich jeden Blödsinn frisst. Mit der Folge dass > simple Schreibfehler für Chaos und ratlose Gesichter sorgen. Schon lange nicht mehr mit C gearbeitet, oder? Also der aktuelle AVR-GCC meckert auch so ziemlich alles an. OK, oft sind es auch nur Warnings aber ich habe schon viele (Hobby) Programmierer kennen gelernt, die sich dafür wenig bis nicht interessieren und es dann der Sprache anlasten wenn komische Fehler auftreten. Mein IT-Prof hat uns in den ersten Vorlesungen und Übungen als erstes eingebläut: Es gibt keinen Grund Warnings zu ignorieren. OK, das ist jetzt auch schon über 15 Jahre her.
Dennis K. schrieb: > Und AVR Studio ist schwierig zu installieren? Jedem seine persönliche Präferenz. > Und inline Assembler ist in C schwierig? >
1 | > asm("call 0x0000"); |
2 | > |
Das sieht ja wirklich einfach aus. Du hast mich überzeugt. Ich würde aber trotzdem bei Bascom bleiben wollen weil mir da ein !call &H0000 oder auch !call label ausreicht und ich nicht wissen wollen würde, wie ein etwas komplexeres Inline Codestück in C aussehen würde.
Ich geb hier jetzt einfach auch mal meinen Senf dazu: Bleib vom atmega 8 weg, nimm einen seiner Nachfolger, also die 88, 168 oder 328. Ein Arduino (Klon) ist auch eine tolle Plattform und spart Ärger mit der Verkabelung aufm Steckbrett. Ich hab mit C angefangen, Atmel Studio und AVR ISP mk2. Nutze aber derzeit einen Arduino Nano Klon mit dem Bootloader darauf, aber ohne Arduino IDE.
Jan H. schrieb: > ... nimm einen seiner Nachfolger, also die 88, 168 oder 328. > Ein Arduino (Klon) ist auch eine tolle Plattform und spart Ärger mit der > Verkabelung aufm Steckbrett. Ein Arduino (Klon) IST ein Hardware mit oft einem ATmega328. Wieso also "auch"?
Wolfgang schrieb: > Jan H. schrieb: >> ... nimm einen seiner Nachfolger, also die 88, 168 oder 328. > >> Ein Arduino (Klon) ist auch eine tolle Plattform und spart Ärger mit der >> Verkabelung aufm Steckbrett. > > Ein Arduino (Klon) IST ein Hardware mit oft einem ATmega328. Wieso also > "auch"? Dann halt nochmal ausführlicher. Nimm lieber einen 88, 168 oder 328. Dazu kann ein Arduino herhalten, zum Beispiel der Uno oder Nano, die sind ein einfaches Board mit Atmega328 drauf (In den aktuellen Versionen) und USB-Serial Adapter direkt auf der Platine, außerdem ein Quarz und ein Spannungsregler.
Wenn Du lieber mal in C reinschnuppern willst, kannst Du hier die ersten Schritte gehen: https://www.cognasse.de/start.html
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.