Forum: Mikrocontroller und Digitale Elektronik Nachfolger für ATMega gesucht


von Falk B. (falk)


Lesenswert?

Udo K. schrieb:

> Ich habe ja letztens seit langer Zeit wieder Nachhilfe in Mathe gegeben.
> Ich habe ganz schön gestaunt, wie ich gesehen habe, dass bei
> eine Mathe Schularbeit heute gar nicht mehr gerechnet wird!
> Da gab es nur mehr Verständnisfragen - das Rechnen übernimmt eh
> das Computerprogram.

Einfach Irrsinn! So werden Massen an Klugscheißern generiert, die "alles 
verstehen" aber nix gebacken kriegen und für einfachste Rechnungen einen 
Computer oder Handy brauchen. Überschlagsrechnung? Abschätzung? 
Größenordnung?

Wenn ich was WIRKLICH verstanden habe, dann kann ich es auch umsetzen. 
Denn viele dieser "Verständnisfragen" sind Dünnbrettbohrerei und oft als 
Multiple Choice angelegt. Da reicht raten, um im Mittel zu bestehen!

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Joerg W. schrieb:
>> Und wozu? Weil man zu faul oder zu doof ist auf eine Hochsprache zu
>> wechseln?
>
> Nein. Weil man's kann. Und man bei Anwendungen wie z.B. Emulatoren
> erhebliche Geschwindigkeitszuwächse gegenüber C-Compilaten erreicht.


Dass C deutlich besser das geschriebene in Assembler übersetzt hatte 
Yalu schon vor 4 Jahren bewiesen:
Beitrag "Re: C versus Assembler->Performance"

von Falk B. (falk)


Lesenswert?

Udo K. schrieb:
> Das stimmt schon.  Aber in dieser Schularbeit gab es auch keinen
> Rechenweg wie ihn aus meiner Schulzeit kenne (also länger als eine
> Zeile).
> Da fand ich auf dem Papier grad mal 1-2 einfache Gleichungen.
>
> Das war mehr eine Art von Multiple Choice Test mit hinterlistig
> gestellten
> Fragen zum ankreuzen.

Genau dieser Schwachsinn hat rein gar nichts mit mathematischem Wissen 
und dessen Abfrage zu tun. Das ist importierter Irrsinn aus Amiland!

> Der Taschenrechner ist inzwischen durch einen symbolischen Rechner
> (wie Wolfram Mathematika) auf dem Laptop ersetzt worden.

Völliger Käse. Denn damit lernt und trainiert niemand die Mathematik, 
weder das Verständnis der Zusammenhänge noch das Kopfrechnen etc.

Verblödung mit Ansage!

Das Leben ist KEIN Multiple Choice Test!

von Anton M. (Gast)


Lesenswert?

Cyblord -. schrieb:
> Da habe ich in der Tat so meine Schwierigkeiten.

Wundert mich nicht wenn Du Asm nach eigener Aussage für AVR nie 
verwendest.

> Möglich ist natürlich alles in ASM. Aber irgendwann macht es keinen Sinn
> mehr

Darauf können wir uns verständigen.
Allerdings nicht aus den angeführten Gründen, sondern weil Asm in der 
Implementierung neuer, noch nicht in einer vorhandenen Codebasis 
erarbeiteten Dinge ein Stück weit aufwändiger ist. Das ist aber alles 
auch extrem erfahrungsabhängig.

> Und wozu? Weil man zu faul oder zu doof ist auf eine Hochsprache zu
> wechseln?

Weil Asm, dessen Freiheiten und Gestaltungsspielraum Spaß machen? Ohne 
erst IT studieren zu müssen?
Und außerdem: Beim System-Design, beim Entwurf von Inter-Device 
Kommunikation und Netzen, Regelungen und Steuerungen steht sehr oft die 
Lösungsweise der Aufgabe, der Algorithmus, das Verfahren im Vordergrund 
und gerade nicht Details der Implementierung, in welcher Sprache auch 
immer. Das ist durchaus kreative, intellektuelle Anforderung genug.

von Joerg W. (joergwolfram)


Lesenswert?

> Dass C deutlich besser das geschriebene in Assembler übersetzt hatte
> Yalu schon vor 4 Jahren bewiesen:
> Beitrag "Re: C versus Assembler->Performance"

Ja wenn das so ist, dass das schon BEWIESEN ist, dann habe ich wohl die 
letzten Jahre auf dem falschen Planeten gelebt:

PDP11-Emulator: ca. 2x schneller (PowerPC, nur teilweise ASM)
Gigatron-Emulator: über 4x schneller (STM32)

Das soll nicht im Gegenzug bedeuten, dass Compiler zu doof sind, 
effizienten Code zu generieren. In den beiden von mir genannten 
Beispielen habe ich halt den Vorteil, dass ich das ganze überblicken und 
die Struktur des Programms an die Aufgabe anpassen kann. Ein Compiler 
wird wahrscheinlich nicht "auf die Idee kommen", alle relevanten 
Variablen zusammenzuzählen und daraus schlussfolgern, dass man alles in 
Registern halten kann. Zumindest nicht bei komplexeren Programmen.
Wenn ich weiß, dass sich z.B. in einem Funktionspointer nur bestimmte 
Bits ändern können, dann kann ich z.B. auf PowerPC mit rlwinm nur diese 
Bits austauschen und muss nicht jedes mal den Pointer komplett neu 
berechnen. Und sorge nebenbei gleich mit dafür, dass der I-Cache 
möglichst effizient arbeiten kann (aligning).

Jörg

von Bernd K. (prof7bit)


Lesenswert?

Falk B. schrieb:
> Völliger Käse. Denn damit lernt und trainiert niemand die Mathematik,

Das ist wahr. Auch wenn man es 100% verstanden hat muß man es regelrecht 
trainieren um schneller und sicherer im Umgang damit zu werden. Als 
jemand der zur natürlichen Faulheit neigt habe ich das selbst deutlich 
erlebt: "Üben? Zeitverschwendung! Ich hab doch komplett verstanden wie 
es geht! Formel auswendig lernen? Wozu, ich weiß doch wie man sie 
herleitet!" Natürlich konnte ich es fehlerfrei durchführen, nur habe ich 
jedes mal dreimal so lange gebraucht wie manch anderer. Oft hats 
trotzdem noch gereicht für die volle Punktzahl aber manchmal ist mir 
dann einfach die Zeit ausgegangen, sehr ärgerlich. Der Effekt von 
Training (oder dem Fehlen desselben) war sehr deutlich.

: Bearbeitet durch User
von Dr. Sommer (Gast)


Lesenswert?

Joerg W. schrieb:
> Gigatron-Emulator: über 4x schneller (STM32)

Hast du ein Code-Snippet bei dem sich das unabhängig vergleichen lässt? 
D.h. wo der erzeugte Assembler-Code deutlich schlechter ist?

Davon ab ist ein Emulator ein ziemlicher Sonderfall. Von da auf 
allgemeine Anwendungen zu schließen ist schon gewagt. Auch beim Emulator 
kann man die nicht-geschwindigkeits-relevanten Teile problemlos in C(++) 
schreiben.

von Joerg W. (joergwolfram)


Lesenswert?

Ich habe auch nicht geschrieben, dass das generell so ist. Sondern nur 
darstellen wollen, dass:

> Dass C deutlich besser das geschriebene in Assembler übersetzt hatte
> Yalu schon vor 4 Jahren bewiesen:
> Beitrag "Re: C versus Assembler->Performance"

eben nicht allgemeingültig ist.

> Hast du ein Code-Snippet bei dem sich das unabhängig vergleichen lässt?

Nein. Und zwar deswegen, weil das Programm völlig anders aufgebaut ist. 
Es gibt keine zentrale Schleife, sonder eine Art "Code-Inseln", die bei 
Vielfachen von 256 beginnen. Jede dieser Inseln steht für einen 
Befehl/Opcode. Und am Ende jeder dieser Inseln wird aus dem HIGH-Byte 
des nächsten Opcodes und der Basisadresse eine neue Sprungadresse 
berechnen und dorthin gesprungen. Das ganze geht ohne Stack und auch R14 
wird als "normales" Register benutzt.
Es lassen sich sowohl der ASM Quellcode (Projekt) als auch der 
übersetzbare C-Quellcode (Projekt-Thread) herunterladen.

Wenn man genauso "denkt" wie der Compiler, dann wird der Compiler wohl 
in den meisten Fällen besseren Code erzeugen. Aber man kann ein Programm 
auch in manchen Fällen anders strukturieren als 
Eingabe->Berechnung->Ausgabe.

Da ich das Ganze nur als Hobby betreibe, muss ich mich nicht um 
Wartbarkeit oder Portierbarkeit scheren, sondern es macht Spaß, noch das 
eine oder andere Prozent Geschwindigkeit aus dem Controller 
rauszukitzeln.

Und für Portierbarkeit habe ich für C inzwischen meinen eigenen HAL 
(auch teilweise in ASM) geschrieben. Bzw. schreibe noch daran, weil sich 
so etwas beliebig erweitern lässt...

Jörg

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
Noch kein Account? Hier anmelden.