mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C oder Assembler


Autor: Steff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich bin gerade am überlegen welche Sprache ich genauer lernen werde.

Was sagen die erfahrenen Profis dazu ASS || C;

Autor: Bertram S. (bschall)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Use the Search engine...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Assemblerkenntnisse helfen sehr beim Verstehen des Controllers bzw. 
seiner Architektur. Gute C-Programmierer (auf Controllern!) verstehen 
normalerweise auch Assembler.

...

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C && ASM

Kommentar vergleichbar dem von hannes ;-)

Autor: Steff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das leuchtet mir ein.

Aber welcher uC ist empfehlenswert, erfahrung habe ich mit 89LPC932.

Der Preis ca. 9€ ist aber etwas teuer.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt drauf an, was Du machen willst. AVRs sind doch ganz nett?

Autor: Steff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
89LPC932 ist von Philips wennst dass meinst.

Ich hab ne zeit lang mit Jcontrol Programmiert

da ist halt gleich ein GraphikDisplay mit 128x64 Pixl integriert.

Gibts solche Displays auch für AVRs

Autor: Johannes A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der Preis ca. 9€ ist aber etwas teuer.

Finde ich auch. Wo kostet der denn noch soo viel? Bei reichelt steht er 
doch schon für nur noch 2,35 Euro in der Liste...

Aber ich bin hier als AVRler bekannt und das soll auch so bleiben :-) 
Also rede ich auch für die AVRs, die übrigens dasselbe Preissegment 
beschicken wie die 8051er Derivate, die Du schon kennst.

Klar gibt es für die AVRs auch Grafik-Displays - das ist auch keine 
Kunst, weil Displays grundsätzlich erstmal so von allen 
Controller-Familien angesteuert werden können. Von den AVRs allerdings 
bevorzugt per SPI, den die Teile eh alle beherrschen, weil sie darüber 
in-system-programmiert werden. (Ein vergleichweise günstiges "Pictiva" 
128x64-Pixel-OLED-Display gibt es wiederum bei reichelt.)

Nicht so klar, aber praktisch umso wichtiger ist die hervorragende 
Software-Entwicklungsunterstützung für AVRs mit Low- bis No-Cost-Tools 
vom AVRstudio von Atmel (IDE, Assembler und Debugger/Simulator) über 
WinAVR (von Atmel unterstütztes GCC-Derivat) bis hin zu kommerziellen 
Compilern für Basic, C oder auch Pascal, je nach Vorliebe, für ein- oder 
zweihundert Euro. Und für alle gibt es sehr rege Foren wie dieses. Eine 
entsprechende Low-Cost-Schiene gibt es für den 8051 meines Wissens 
bisher nicht, da klafft zwischen dem kostenlosen, sehr 
gewöhnungbedürftigen SCC und den "richtigen" Compilern von IAR und Co 
noch immer eine Lücke von mehreren tausend Euro.

Und nicht zuletzt bringen AVRs von den frei käuflichen 8bit-Controllern 
wohl immer noch die meisten MIPS pro MHz Oszillatortakt, nämlich 0,8-0,9 
für normale Programme. Und das bei bis zu 16 oder 20 MHz, je nach 
Generation. Die LPC900er von Philips sind für einen 8051-Core allemal 
"heftig" und im allgemeinen Vergleich auch echt nicht schlecht, liegen 
mit <0,5 MIPS/MHz bei max 12 MHz aber doch noch deutlich unter den AVRs.

Ansonsten noch zu Deiner Frage vom Anfang: C und Assembler gehören 
einfach zusammen. Also wenn Du mit Assembler anfängst, ist C die 
logische Fortsetzung nach oben, und wenn Du mit C anfängst, ist 
Assembler der Unterbau, den lesen zu können, sich allemal lohnt.

Gruß Johannes

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmmm, der sdcc ist nicht gewöhnungsbedürftiger als der gcc für den AVR.
Zudem gibt es 8051er, die 100Mips machen und DSP-Einheiten onBoard 
haben.
Was das angeht, so ist die 8051er Familier mit Sicherheit vielfältiger 
und auch in der Spitze leistungsstärker als die AVRs. Nur die 
Philips/NXP-Derivate halt nicht.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehe ich auch so wie Michael, zum SDCC ist zu sagen das er in der 
letzten Zeit erheblich dazugewonnen hat.

Autor: Steff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab damals das Zeugs bei ELV gekauft.

Das ist soweit ich weis ein teurer Tandler.

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Meinung ist, dass man ab einer 16-bit Maschine gut auf Assembler 
verzichten kann. Ich würde gleich mit C einsteigen. Das gewonnene Wissen 
ist einem auch auf anderen Plattformen und dem PC nützlich.

Später kann man sich dann allenfalls immernoch mit Assembler 
beschäftigen, wenn es nötig wird.

Autor: Johannes A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ok, bei nem ARM verzichte ich auch selber gerne auf Assembler, und 
bei den abgedrehten 16Bittern, die gegen die 8051er anzustinken 
versuchen, auch.

Ich meine übrigens, mich klar auf die 8bitter bezogen zu haben, also was 
soll der Quatsch?

@Michael und Joe,
nennt doch ganz einfach mal Eure Super-Controller, den man z.B. bei 
reichelt oder sonstwo noch für einen vernünftigen Preis kaufen und dann 
auch noch mit einem simplen Low-Cost-Tool in-system programmieren kann.

Im übrigen kenne ich keine 8051-Derivate, die tatsächlich mit 300 oder 
600MHz internem Clock fahren, die für 100MIPS mindestens nötig wären...

Gruß Johannes

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und ich hatte für solche Fälle gehofft, eine Löschtaste zu bekommen. Ich 
bewerbe mich weiter, irgendwan klappts.
Und dann sind solche postings schneller verschwunden, als Merkel 
"dauerhaften Aufschwung" sprechen kan.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Steff.
Bitte nicht mit ASM oder noch schlimmer mit BASIC anfangen das ist zwar 
mal ganz nett, aber wenn Du regelmäßig Projekte bearbeitest wirst Du 
merken das C einfach die bessere Wahl ist.

Z.B. wechsel ich teilweise von Projekt zu Projekt die Prozessor Familie.
In ASM bedeutet das:   alles noch mal schreiben.
In BASIC bedeutet das: beten das es den BASIC Interpreter für den µC 
gibt.

Und in C? Einfach Kopieren und eventuell an die Hardware / Compiler 
anpassen fertig.

Außerdem gibt es kaum etwas was in C nicht genauso schell und 
platzsparend geschrieben werden kann wie in ASM.

ASM ist nur in ausnahmen mal interessant (zB. RTOS Kontext switch), aber 
wer schreibt schon so was selber.

Und wenn ich schon höre "BASCOM forever"  wird mir schlecht, warum nicht 
gleich Forth? Wäre immerhin noch das bessere elend.

Und wenn Du es ganz wild treiben willst, kannst Du ja alles VHDL machen.
Damit geht auch alles zu bauen.

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ASM ist schon ne feine sache - empfehlenswert für einsteiger. und 
herrlich nahe an der hardware aber schlecht zu portieren. C ist schöner 
zu programmieren und auch recht nahe am controller. basic hat imho 
garnix in der nähe eines µC verloren.

pumpkin

Autor: Lanius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C
...und nebenbei öfters mal ansehen was der Compiler daraus macht.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich seh das ganz pragmatisch:
C (und von mir aus auch Bascom) nehmen mir soviel Arbeit ab, dass ich 
gar nicht drüber nachdenke, ob ich das in asm programmiere (mache ich 
schon seit Jahren nicht mehr).
Trotzdem nehme ich mir mein Controllerchen zur Brust und möchte 
zumindest in Grundzügen verstehen, wie der tickt. Und schau mir auch 
regelmässig die erzeugten Assembler-files an, einfach um zu sehen, wie 
das vom Compiler gelöst wurde.
Es bringt mir auch nichts, eine rasend schnelle, in mühevoller Arbeit 
optimierte (und mehrfach reparierte) asm-Routine zu haben, die ein 
Problem doppelt so schnell löst, danach aber den MC in die Warteschleife 
schicke und der drauf giert, wieder was zu tun zu bekommen, 99% der Zeit 
ist aber warten angesagt. Dann lieber nur 98% warten, aber in 5min 
programmiert statt in mehreren Nächten.
Und wer schon mal komplexere Rechnungen gemacht hat, wird umso mehr die 
Annehmlichkeiten des Compilers zu schätzen wissen. Man kann sich nämlich 
in der Regel drauf verlassen, dass das Problem so gelöst wird, wie man 
es in einer Zeile hingeschrieben hat, statt sich in ellenlangen 
asm-files zu verirren und sich mit fremdem code oft dubioser Herkunft 
herumärgern zu müssen. Wer von den asm-Programmieren schreibt denn 
wirklich seine math. Funktionen selber? Ne, da wird copy & paste 
betrieben, in der Hoffnung, dass alles funktioniert und man sich auf die 
Schulter klopfen kann: Ich habs in asm programmiert!
Den grössten Vorteil sehe ich allerdings in der 
Speichernutzung/Variablenverwaltung. Kaum ein Mensch kann derart 
ökonisch mit RAM umgehen wie ein guter Compiler. Und das Schönste: 
beachtet man einige wenige Regeln, gibts keine Konflikte, wogegen der 
Assemblerprogrammierer ständig getrieben ist zwischen Optimierung, 
Verschwendung und Fehlern.

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Crazy Horse,
"Kaum ein Mensch kann derart
ökonisch mit RAM umgehen wie ein guter Compiler", tja ich kann ein 
einzelnes Bit als Speicherstelle benutzen und verwalten, Dein Compiler 
nicht, C will minimum ein Byte haben !! Sowviel dazu

Im übrrigen lassen sich viele Berechnungen in Tabellen ablegen.
wer in ASM wirklich viel rechnet ist selber schuld

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Steff,

http://www.silabs.com/tgwWebApp/public/web_content...

http://www.keil.com/dd/search_parm.asp

Nenn mir irgendein Controller Derivat welches durch mehr Hersteller 
supported wird (ca. 600 Stk. beim 8x51).

C oder ASM ist eher eine philosophische Diskussion. Beides ist ein muß 
!!!

Nicht du, sondern deine zukünftigen Auftraggeber entscheiden. Ebenso 
öffnet C dir den Zugang zu "allen" Controllern. Ich beschäftige mich 
nicht nur mit den 8x51 Typen.

Autor: rebs88 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da muss ich Joe recht geben, das entscheidet dein Arbeitgeber denn 
schließlich ist es ja auch eine Preisfrage.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Grunde genommen ist die Frage "C oder Assembler" in sich schon ein 
Entscheidungsfehler - es sollte vielmehr lauten

"C und Assembler".


Einerseits hilft Assembler-Verständnis beim C-Lernen (gerade beim 
Verstehen von Pointern ...), andererseits ist Assembler-Verständnis beim 
Debuggen auch sehr hilfreich, um zu verstehen, was irgendwo schiefgeht.

Auch ist es hilfreich, um zu verstehen, warum manche C-Konstrukte auf 
manchen Prozessoren eher ineffektiv sind (ein Prozessor ohne 
Barrelshifter braucht halt zum Schieben um mehr als eine Bitposition 
proportional mehr Zeit ...).

Also:

Beides.

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber beides gleichzeitig halte ich persönlich nicht für sinnvoll. ich 
habe erst C auf PC's programmiert, dann ASM auf nem 8051 derivat. der 
umstieg auf C im AVR hat reibungslos geklappt und hat keinerlei 
kopfschmerzen gemacht - einzig die nicht ANSI konformen funktionen sind 
halt neu. am ende kann man wohl sagen dass es relativ egal ist wie und 
wo man einsteigt - solange man verstanden hat wie ein µC im grunde 
funktioniert.

pumpkin

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.