µC Programmer >> welchen && wie?

  • Hallo Zusammen,


    möchte mir einen µC- Programmer zulegen und mal nach einer aktuellen Meinung fragen, welcher hier empfehlenswert wäre.
    Man findet im WWW zwar zahlreiche Foren welche sich mit dem Thema beschäftigen aber iwie sind alle nicht mehr so ganz Uptodate :huh:


    Ich würde den µC gerne über USB flashen.
    So weit ich bisher bescheid weiß gibt es da zwei Möglichkeiten:


    1. das Pollin ATMEL Evaluations-Board mit einem entsprechendem USB-RS232 Wandler.
    Soll aber in Punkto Geschwindigkeit nicht so der Bringer sein.
    Vorteil: Steckplätze für verschiedene DIP-Gehäuse
    Nachteil: kein USB


    2. ein USB-ISP Adapter wie von myAVR
    Vorteil: USB :thumbup:
    Nachteil: Ich müsste mir für den entsprechenden µC eine ISP- µC Adapterplatine selber bauen. (Ist meine Theorie hier richtig!?)


    3. Komplettlösung USB-Mikrocontroller von myAVR plus eine entsprechende Steckplatine für die µC´s.
    Vorteil: is feddich
    Nachteil: Kostet 60 Euronen



    Könnt Ihr mir hier eventuell iwas passendes empfehlen?? (kein COM-Port am PC)



    Vielen Dank schon mal,
    Gruß Frank

  • Hi,


    ich empfehle den AVRISP MKII.
    Hier hat man einfach den Vorteil, dass man ziemlich schnell neue Firmware Updates bekommt.
    Hiermit habe ich persönlich bisher die besten Erfahrungen gemacht. Aus Eclipse und AVR Studio kann man z.B. problemlos flashen.
    Gerade wenn man auch mal an neueren Controllern Interesse hat, ist ein solcher Programmer zu empfehlen.
    Auch der Atmel AVR Dragon soll ganz gut sein. Der kann auch Debuggen, weshalb ich mir diesen bald zulegen werde.


    Das Pollinboard mit USB ---> COM Wandler kann ich dir eher weniger empfehlen, da es hier immer wieder zu Funktionsstörungen/Treiberproblemen usw. kommt. Außerdem ist es ziemlich langsam. Wenn dann direkt über Com Port, dann ist es ok!


    Eine andere Alternative ist es als ersten Controller z.B. einen AT90USB162 zu nehmen. Diese Controller kommen mit einem Bootloader und können über Flip problemlos geflasht werden. Hierzu habe ich auch schon kleine Entwicklungsboards gesehen. Gibt auch noch weitere wie Atmega8U2 und Atmega32U4 usw....


    Fängst du mit Bascom, Asm oder C an?


    Gruß Flo

  • AVR ISP mkII kann ich auch nur empfehlen...klappt problemlos...


    Zur Sprache : Bascom zu lernen halte ich nicht gerade für sinvoll.... Im Studium wirds dich wohl gar nichts brigen. Fang mit Asm oder C an... Wenn du mit Asm anfängst kommst halt gleich besser mit den Internen abläufen im µC klar. C ist halt der "Standard" in der Programmierung von Mikrocontrollern.


    greetz

  • Wenn du nicht vorbelastet bist (ich kam berufsmäßig aus der Basic-Ecke) und beide Sprachen neu lernen müsstest, fang direkt mit C an. Ich hab damals zu Bascom gegriffen, weil mir der Basic-Slang einfach geläufiger war, aber bin recht schnell an den Punkt gekommen, wo fertige Module für fast alles nicht nur Vor- sondern auch Nachteile hat. Das AVR-GCC-Tutorial vom µC-Forum ist eine gute Einstiegslektüre.

  • Ich denke es kommt immer auch drauf an wie schnall man ans Ziel kommen will. Ich habe mir mal alles zum proggen für C besorgt, also Bücher usw.. Einmal reingeschaut, nichts begriffen und alles wieder verkauft.
    Erst 8 Jahre später bin ich auf Bascom gekommen. 3 Wochen später war der Mini-RGB-Fader fertig und 9 Monate später der Eiwomisa Code (obwohl an dem Eiwomisa Code nur ca. 2 Monate lang jeden Abend programmiert wurde, so wie ein Berufstätiger eben Zeit hat).


    Was das Studium oder die PC Programmierung angeht, so finde ich hat keines von beiden, egal ob C oder Bascom einen besonderen Vor- oder Nachteil. Ich kenne einen beruflichen C-Programmierer der mit seinem Wissen bei C-µC-Code überhaupt nicht anfangen kann.
    Man sollte hier daran denken, man programmiert µC und keine PC-Software. C oder Bascom (Basic) sind hier nur der Syntax, dieser muss aber so geschrieben werden das dieser auch zur Hardware passt.


    Was die internen Abläufe angeht, im Grunde sind mir diese recht egal solange alles läuft. In der ganzen Zeit wo ich jetzt schon progge gab es vielleicht einmal ein Problem wo eben ein interner Ablauf, bzw. mein mangelndes Wissen darüber, mir im Weg gestanden ist. Dieses wurde dann aber recht schnell in entsprechenden Foren geklärt und dann war das klar.
    Wobei bei diesen Problemen es sogar recht egal gewesen wäre ob ich mit ASM, C oder Basic gearbeitet hätte. Da ging es einfach um interne hardwaretechnische Abläufe auf die man nur kommen könnte wenn man ins Datenblatt schau, zumindest von der Theorie her. Praktisch gesehen kommt ein Anfänger aber nicht mal darauf wenn er sich das ganze Datenblatt erst durchliest sondern da bringt die Erfahrung einfach am meisten weil die Zusammenhänge sehr komplex sind und die Datenblätter immer unübersichtlicher.


    Aber wie man weiß, viele Wege führen nach Rom ;)


    Gruß, Benny.

  • Bascom ist eventuell leichter zu lernen, wenn man aber eine Programmiersprache später im Beruf braucht, wird es eher C sein als die anderen 2. Bascom habe ich noch in keiner Stellenanzeige gesehen und Assembler nur in einigen wenigen Spezialbereichen. Mit C steht dir da deutlich mehr offen. Von C auf Bascom runter, ist es dann auch nicht so schwer...

  • Naja, um es mal besser auseinander zu halten. Bascom ist nur ein Compiler. Also wenn man hier Vergleiche anstellt dann besser Basic mit C bzw. das neuere Basic mit C++ eventuell, da kenne ich mich jetzt dann doch nicht so gut aus da es hier bei den höheren Versionen ganz in richtung PC geht.


    Und eben das meine ich damit. C hat für mich keinen großen Vorteil gegenüber Basic wenn es um die Programmierung von µC geht. Bei Basic finde ich gut das man quasi fast alle Befehle deuten kann ohne in einem Handbuch nachzuschlagen. Wenn ich in Bascom meinen Code einigermasen ordentlich schreibe und sinnvolle Variablennamen benutze dann kann ich den Code auch noch nach 2 Jahren ohne Kommentierung des Codes schnell nachvollziehen.


    Was Größe und Geschwindigkeit des generierten Codes angeht wird auch in verschiedenen Foren, von Usern die beides beherrschen, immer wieder gezeigt das es da keine nennenswerte Unterschiede gibt. Manche Codeschnipsel wurden von Bascom sogar besser umgesetzt. Manche vom C Compiler, wobei es da immer nur um Peanuts ging.
    Ein richtiger Unterschied wurde erst mit ASM erzielt und da dies bei beiden einbaubar ist, schenkt sich da nix.


    Ich finde es auch interessant das, User die beides wirklich gut können, meist auch beides einsetzen. Selbst das Argument, für C bekommt man mehr Hilfe, zieht nicht mehr. Das MCS Forum ist schon gut gewachsen und man bekommt für so gut wie alles eine Lösung. Das ist auch ein Punkt wo ich mich auf der Basic-Seite besser aufgehoben fühle -> in den C Foren für µC haben die doch alle eine recht überhebliche Art teilweise weil die ja alle so gut sind. In den Basic Foren hingegen geht es meist recht locker zu.


    Aber mir ist das persönlich wurscht was andere machen. Ich wollte halt nur anmerken wie es mir mit meinem C Versuch ging und wie mit dem Basic Versuch.


    Gruß, Benny.

  • Allerdings wäre es hinsichtlich des Studiums sicherlich besser gleich mit C zu arbeiten..

    Dann nim C. Denk aber immer dran, C ist fast so primitiv wie Assembler. Es nimt dir einige lästige Standardprobleme ab (Stackverwaltung bei Unterprogrammaufrufen, ...) Aber im Endeffekt ist C Bitpfriemeln wie Assembler, nur auf leicht erhöhtem Abstraktionsniveau. Das muss man immer im Hinterkopf haben.


    Wenn du noch garkeinen Plan von uC etc. hast solltest du mit Grundlagen wie der Von-Neumann- / Harvard-Architektur anfangen und einige kleine Programme in Assembler schreiben. Verstehe z.B. die Schaltpläne der Portpins im Datenblatt und was Memory-Mapped-IO bedeutet. Einfach nur um zu wissen was hinter der Kulisse abgeht. Beim Programmieren von uCs in C rutscht man mit dem nackten Hinterm auf dem blanken Eisen. Solide Kenntniss der Grundlagen hinter dem Compiler helfen.

  • C ist fast so primitiv wie Assembler

    im Endeffekt ist C Bitpfriemeln wie Assembler, nur auf leicht erhöhtem Abstraktionsniveau

    Beim Programmieren von uCs in C rutscht man mit dem nackten Hinterm auf dem blanken Eisen

    Ich bin einigermaßen erstaunt - Du warst doch immer so ein C-Verfechter, das sei ne ganz andere Nummer (also im Sinne von viel besser) als Asm...?! - oder verwechsle ich Dich jetzt... ?(

    Stackverwaltung bei Unterprogrammaufrufen, ...

    Das macht die Hardware, da muss man sich auch in asm nicht drum kümmern ;) - nur, dass man halt die Register sichert (eben auf dem Stack), die man mehrfach benutzen will, und das Statusregister nicht vergessen...


    oder meintest Du das..? - also dass man die Register selbst sichern muss, weil es keine globalen bzw. (wie heisst das Gegenteil?) Variaben gibt...?


    ich habe mir C mittlerweile auch abgeschminkt, sehe einfach keinen großen Vorteil darin - klar, es gäbe ein paar Libs, FAT16-Dateisystem auf SD-Karte o.ä., aber die finden sich in asm bestimmt auch irgendwo...


    und, wie Du schon sagtest, soo groß ist der Unterschied eben nicht, aber ich weiß jedenfalls, was in welchem Register steht und kann bei timingkritischen Sachen auch genau abzählen, wie viele Takte was braucht...


    Bascom ist für mich sowieso nicht interessant, trotzdem empfehle ch es ab&zu für Einsteiger, man kommt halt wirklich schnell zu nem Erfolgserlebnis... aber wenn's drum geht, das Wissen dann später auch mal beruflich anzuwenden, ist das wohl wirklich nicht das wahre...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • perfekt, vielen Dank für die vielen Antworten!
    Den AVRISP MKII habe ich mir bestellt und werd dann mal mit dem C-Tutorial arbeiten. Mach duales Studium (nur Arbeiten keine Ausbildung) und die in der Entwicklung arbeiten anscheinend auch mit C also trifft sichs ganz gut ;)


    Mal ne andere Frage: Wenn man auf seinem Board einen ISP-Anschluss vorsieht, muss es doch nicht unbedingt der "normierte" große, sperliche Standartstecker sein oder? Einfach ein Adapterkabel und dann entsprechend eine x-Polige Stiftleiste.
    Die Frage kommt deßhalb, weil ich im Rahmen eines Praktikums eine KSQ für eine 1Watt Laserdiode "entwickeln" soll und da eh schon überhaupt kein Platz habe...


    Dann noch was;
    In der Projektbeschreibung ist gefordert, dass die komplette Elektronik vibrationssicher und Schock-resistent ausgelegt sein muss (kommt in ein Flugzeug). Ich würd das mal so interpretieren dass ich möglichst nur SMD-Bauteile verwende.
    Wie mache ich das mit dem Mikrocontroller? Ich nehm mal an eine steckbare Variante mit Sockel scheidet da leider aus oder!?


    Danke und Gruß
    Frank

  • Ich bin einigermaßen erstaunt - Du warst doch immer so ein C-Verfechter, das sei ne ganz andere Nummer (also im Sinne von viel besser) als Asm...?! - oder verwechsle ich Dich jetzt... ?(

    Ich bin immer noch C Verfechter. Ich möchte nur Anfänger davor warnen, besonders wenn die von Java, PHP oder ähnlichem Dreck verseucht sind. Warnen nicht im Sinne von abschrecken, sondern warnen im Sinne von: "Immer im Hinterkopf behalten was der Compiler draus macht und wie die Hardware das verarbeitet." Deshalb sollte man am Anfang durchaus einige Programme mal in Assembler schreiben. Einfach um ein profundes Verständnis der zugrundeliegenden Abläufe in einem uC zu bekommen. Danach kann man sich das Leben mit C einfach machen.



    Zitat von »jkunz«
    Stackverwaltung bei Unterprogrammaufrufen, ...


    Das macht die Hardware, da muss man sich auch in asm nicht drum kümmern ;) - nur, dass man halt die Register sichert (eben auf dem Stack), die man mehrfach benutzen will, und das Statusregister nicht vergessen...


    oder meintest Du das..? - also dass man die Register selbst sichern muss, weil es keine globalen bzw. (wie heisst das Gegenteil?) Variaben gibt...?

    Ja, das meinte ich. Man muss nicht mehr selbst händisch mit den Registern jonglieren, man hat automatisch lokale Variablen, man muss sich keine Stackframes selbst ausdenken und sich nicht über die Parameterübergabe an Funktionen Gedanken machen, man hat strukturierte Datentypen und Typprüfung, 32 Bit Arithmetik auf einer 8 / 16 Bit CPU nimt einem der Compiler ab etc., ... Deshalb nehm ich C und kein Assembler. In C rutscht man genau so auf dem blanken Eisen wie mit Assembler. Aber C nimt einem die stupiden Routinearbeiten ab.


    Wer es etwas schräg haben will: AVRs kann man auch in Forth oder Scheme programmieren...

  • In der Projektbeschreibung ist gefordert, dass die komplette Elektronik vibrationssicher und Schock-resistent ausgelegt sein muss (kommt in ein Flugzeug). Ich würd das mal so interpretieren dass ich möglichst nur SMD-Bauteile verwende.
    Wie mache ich das mit dem Mikrocontroller? Ich nehm mal an eine steckbare Variante mit Sockel scheidet da leider aus oder!?

    Heutzutage macht man so und so alles SMD. Warum willst du den uC sockeln? SMD, auflöten, fertig. ISP heißt nicht umsonst "In System Programable".

  • Welches Programm nehm ich am Bestern für C?

    Wie meinen was? Welche Entwicklungsumgebung?


    Ich arbeite in einer unixoiden Umgebung, ganz klassisch mit Shell im xterm, (g)vi(m), make, avr-gcc, avr-libc und avrdude.


    Für die Leute, die glauben man könne einen Computer nur mit klickibunti-mausischubsi bedienen, gibt es natürlich auch Eclipse nebst passenden Plugins für avr-gcc etc..


    IIRC gibt es von Atmel das kostenlose AVR-Studio oder so mit C-Compiler für Windoofs.


    Was davon man nun benutzt ist Geschmackssache.


    Nachtrag: Gewöhn dir auch gleich an ein Versionskontrollsystem wie SVN / Subversion, git, ... zu benutzen.

  • Guten Abend,
    noch eine kleine Nachfrage:


    Und zwar hab ich den AVRISPmkII vor mir liegen und bau mir gerade eine Platine mit Sockeln für die verschiedenen Mikrocontroller.
    Im Roboternetz-Forum gibts dieses Bild:


    [Blockierte Grafik: http://www.rn-wissen.de/images…grundschaltung_mitisp.gif]


    Im AVRISPmkII- PDF steht aber, dass:
    The Reset line should not have a stronger pull up thand 4,7kohm. Any de-coupling capacitor should not be larger than 10uF.


    ( hier noch der Link zum Datenblatt: steht auf seite 26 )


    Was ist jetzt richtig? Brauch in den Widerstand und den Kondensator überhaupt?


    Vielen Dank.
    Gruß
    Frank