Forum: Mikrocontroller und Digitale Elektronik Hilfe bei dem RFID RC522 in Assembler


von Andreas D. (dandy)


Lesenswert?

Hallo,
ich bräuchte Hilfe beim Ansteuern, bzw. in Betrieb setzen des RC522. Ich 
habe das Modul an einen ATMega16 per SPI angeschlossen und programmiere 
in Assembler. Man findet im Netz milliarden beispiele für die dämlichen 
Aruinos (sorry) und ihre Bibliotheken bei deren Benutzung man eh nichts 
lernt sondern sich nur dran erötzt etwas in Betrieb nehmen zu können was 
ein anderer geschrieben hat. Sorry, musste ich mal los werden :-)
Jedenfalls habe ich keinerlei beispiele in Assembler gefunden die mir 
auf die Sprünge helfen könnten. Aus dem Datenblatt mit den tausend 
Registern und deren Funktionen werde ich nicht wirklich schlau, was ich 
wo konfigurieren, wo was reinschreiben was, wie, wann auslesen um die 
UID eines Tags zu erhalten. Die Möglichkeiten mit all den Registern ist 
für mich derart komplex dass ich vermutlich vor lauter Bäumen den Wald 
nicht sehe. Jedenfalls blick ich da nicht durch

Es geht mir nicht um den assembler Code, den schreib ich mir schon 
selbst, es geht um die grundlegende Ansteuerung des Moduls, was muss 
wohin in welches register um einen Tag zu lesen und wie erhalte ich dann 
die UID dessen.

Evtl kennt jemand die Vorgehensweise und kann mir mal genau erklären wie 
das Modul zu initialisieren und zu lesen ist.
Dass die Daten letztendlich im FIFo stehen welchen ich auslesen muss 
kann ich mir gerade noch so zu zusammen reimen.
Mich interessiert die Prozedur, ich möchte verstehen wie das geht.

Also, Wie gesagt das Modul hängt an einem Mega16 an der SPI. Display ist 
auch dran. Die Routinen zum Senden und empfangen von Adressen und Daten 
hab ich auch schon geschrieben. Jedenfalls kann ich mir zB das Versions 
Register 0x37 auslesen, und erhalte den Wert 0x92, was wohl eine gültige 
Verionsnummer ist. Die kommunikation mit dem Modul scheint also zu 
funktionieren.

Hilfreich wären jetzt nicht aussagen wie: Les das Datenblatt, 
Initialisier das Modul erst mal, schalt die antenne ein, setze das gain, 
... ja, soweit war ich auch schon. Oder gar hol dir nen Arduino und lad 
dir die erforderlichen Bibliotheken..usw, nee, genau das möchte ich 
nicht. Mich interessiert was genau in welche Register muss zur 
initialisierung, zum Aktivieren des Moduls, suchen nach einen Tag, Nach 
dem erkennen eines Tags, Wie die UID lesen und wie das ganze aus dem 
Modul holen....

Für Hilfreiche Beiträge wäre ich daher echt dankbar.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Andreas D. schrieb:
> Evtl kennt jemand die Vorgehensweise und kann mir mal genau erklären wie
> das Modul zu initialisieren und zu lesen ist.

In der Arduino-Bibliothek steht das doch schon drin. Wenn du den 
Arduino-Code nicht verstehst, lass ihn dir von ChatGPT erklären. Warum 
sollte sich jemand die Mühe machen, hier so ein komplexes Thema zu 
erläutern, wenn es in Form von Arduino-Code schon fertig hingeschrieben 
ist?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas D. schrieb:
> Mich interessiert was genau in welche Register muss zur initialisierung,
> zum Aktivieren des Moduls, suchen nach einen Tag, Nach dem erkennen
> eines Tags, Wie die UID lesen und wie das ganze aus dem Modul holen....
Blöderweise steht genau das im Datenblatt, in Appnotes und in 
übergelagerten Dokumenten zu den Protokollen (wie z.B. 
https://www.nxp.com/docs/en/application-note/AN10833.pdf), die zur 
Kommunikation mit Mifare- und anderen RFID-Tags nötig sind.

Und wenn du das mal gemacht hast, dann ist dir völlig klar: es gibt 
Sachen, da ist es völlig sinnlos, die in Assembler machen zu wollen.

Aber wenn mich mein Chef mit viel Geld dazu zwingen würde, dann würde 
ich genau diesen Arduino-Sourcecode "reverse engineeren".

Das dort ist auch interessant:
- https://community.nxp.com/t5/NFC/RC522-Application-Note/m-p/963985

"Please take into account that this part is not recommended for new 
design. for new designs we recommend MFRC630."

- 
https://www.nxp.com/products/rfid-nfc/nfc-hf/nfc-readers/standard-performance-mifare-and-ntag-frontend:MFRC52202HN1

"Not recommended for new designs."

: Bearbeitet durch Moderator
von Mario M. (thelonging)


Lesenswert?

Warum muss ich gerade an ein Gör denken, dass den ganzen Supermarkt 
zusammenschreit, weil ihm die Mutter nicht die Süßigkeiten aus dem Regal 
mit der Quengelware kaufen will. 🤔😂

von Andreas D. (dandy)


Lesenswert?

Niklas G. schrieb:
> In der Arduino-Bibliothek steht das doch schon drin. Wenn du den
> Arduino-Code nicht verstehst, lass ihn dir von ChatGPT erklären.

Lothar M. schrieb:
> Blöderweise steht genau das im Datenblatt, in Appnotes und in
> übergelagerten Dokumenten zu den Protokollen (wie z.B.

Nun, zu meinem Bedauern bin ich kein Ingenieur sondern nur 
Hobbypfuscher. Demnach habe ich mit Arduino Code und Arduino 
Bibliotheken nichts am Hut. Ja, ich versteh den Arduino Code nicht und 
will ich auch gar nicht, sonst hätte ich mich schon damit befasst. Ich 
steh mehr aufs selber machen und nicht auf das nutzen von Code den 
andere erstellt haben und den ich nicht verstehe.

Nun Lothar, danke für deinen Beitrag, Aber ich studiere das Datenblatt 
jetzt schon mehrere Tage und ich habe leider noch kein explizites 
Beispiel darin gefunden wie man was wo rein schreibt um einen Tag zu 
lesen. Stattdessen schlagen mir 61 Register ins Gesicht deren 
Beschreibung ihrer 488 Bits nur Fragezeichen hinterlassen. Die 
"reserved" Register und Bits mal ausser acht gelassen.
Warum in Assembler? Weils mir spass macht und genau das ist was ich tun 
möchte. ICH muss es ja programmieren.


> Warum sollte sich jemand die Mühe machen, hier so ein komplexes Thema zu
> erläutern, wenn es in Form von Arduino-Code schon fertig hingeschrieben
> ist?

Evtl. weil es noch Leute gibt die anderen helfen möchten etwas zu 
verstehen. Ok, sollte es die nicht mehr geben (Du scheinst ja auch nicht 
dazu zu gehören) dann hatte ich halt Pech. Ein Versuch war es trotzdem 
Wert.
Solche aussagen sind halt nicht Hilfreich. Wenn keiner konstruktive 
Hilfe zu bieten hat, dann schreibt doch besser erst gar nicht anstatt 
Beiträge zu verfassen die keinem nützen. Vielen Dank

Also erst mal Danke für eher "keine" Hilfe.

Falls euch das "zu viel Mühe" ist, dann müsst ihr nicht Antworten. Dann 
stellt sich mir die Frage nach dem Sinn dieses Forums. Aber ich muss ja 
auch nicht alles verstehen. Auch nicht das Datenblatt des Moduls

von Andreas D. (dandy)


Lesenswert?

Mario M. schrieb:
> Warum muss ich gerade an ein Gör denken, dass den ganzen Supermarkt
> zusammenschreit, weil ihm die Mutter nicht die Süßigkeiten aus dem Regal
> mit der Quengelware kaufen will. 🤔😂

Naja, ich habe gelernt nichts zu erwarten, daher schreie ich nicht :-)

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Andreas D. schrieb:
> Ja, ich versteh den Arduino Code nicht und
> will ich auch gar nicht

Kompiliere ihn doch nach Assembler, dann verstehst du ihn und hast ein 
fertiges Beispiel.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas D. schrieb:
> Dann stellt sich mir die Frage nach dem Sinn dieses Forums.
Ein Forum ist nicht dafür da, Unmögliches möglich zu machen. Wenn die 
überzählige Quintessenz im Forum ist: "nein, das wird nichts mit dem 
Weg, den du gehen willst", dann musst du das akzeptieren oder das 
Gegenteil beweisen.

> Stattdessen schlagen mir 61 Register ins Gesicht deren Beschreibung
> ihrer 488 Bits nur Fragezeichen hinterlassen.
Und wie gesagt: das sind nur die paar Bits, die du brauchst, um einen 
Link zum Tag aufzubauen. Danach brauchst du noch die von mir verlinkte 
Kommunikation, um Verbindung mit dem Tag aufzunehmen. Und dann brauchst 
du noch den Code, um irgendwelche Ver- und Entschlüsselungen 
durchzuführen.

> Ich steh mehr aufs selber machen und nicht auf das nutzen von Code den
> andere erstellt haben und den ich nicht verstehe.
Über diese etwas egozentrierte Sichtweise bin ich raus und lerne aus 
dem, was andere gemacht haben. Wenn es also funktionierenden Code gibt, 
dann versuche ich den zu verstehen.

> Ja, ich versteh den Arduino Code nicht und will ich auch gar nicht
Man kann das auch als Möglichkeit begreifen, sich mal in eine 
Programmiersprache einzuarbeiten, mit der solche Projekte tatsächlich 
machbar sind.

> Aber ich muss ja auch nicht alles verstehen
Sei ehrlich zu dir: du willst das offenbar nicht verstehen.

Niklas G. schrieb:
> Kompiliere ihn doch nach Assembler, dann verstehst du ihn
"Lesen können" ist nicht das selbe wie "verstanden haben".

: Bearbeitet durch Moderator
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Andreas D. schrieb:

> Nun, zu meinem Bedauern bin ich kein Ingenieur sondern nur
> Hobbypfuscher. Demnach habe ich mit Arduino Code und Arduino
> Bibliotheken nichts am Hut.

Wie jetzt? Paßt doch für "Hobbypfuscher". Genau für die ist der 
Arduino-Kram gedacht.

> Ja, ich versteh den Arduino Code nicht und
> will ich auch gar nicht

Du willst also nicht verstehen, was da passiert? Dann bleibt nur der 
ganz harte Weg: Programmieren nach Datenblatt.

> Ich
> steh mehr aufs selber machen

Naja, dann ist das dein Weg.

Ist gewöhnlich auch mein Weg. Aber ich wäre ja blöd, wenn ich 
existierenden und funktionierenden Code nicht wenigstens als Leitfaden 
für eine eigene Implementierung verwenden würde, natürlich jederzeit 
unter Abgleich mit dem Datenblatt und unter Abgleich damit, was man 
konkret erreichen will.

> ich studiere das Datenblatt
> jetzt schon mehrere Tage und ich habe leider noch kein explizites
> Beispiel darin gefunden

Es ist auch eher selten, dass man Codebeispiele in Datenblättern 
irgendwelcher Peripherie-Devices findet. Und wenn überhaupt, dann eher 
in C als in Assembler.

von Andreas D. (dandy)


Lesenswert?

Lothar M. schrieb:
> Ein Forum ist nicht dafür da, Unmögliches möglich zu machen. Wenn die
> überzählige Quintessenz im Forum ist: "nein, das wird nichts mit dem
> Weg, den du gehen willst", dann musst du das akzeptieren oder das
> Gegenteil beweisen.

Ok, da magst Du recht haben dass ein Forum nicht dafür da ist ein 
Industriekomplex mit der Hand zu bauen wenn es doch Baumaschinen gibt. 
Aber wer sagt es wäre unmöglich?

Lothar M. schrieb:
> Und wie gesagt: das sind nur die paar Bits, die du brauchst, um einen
> Link zum Tag aufzubauen. Danach brauchst du noch die von mir verlinkte
> Kommunikation, um Verbindung mit dem Tag aufzunehmen. Und dann brauchst
> du noch den Code, um irgendwelche Ver- und Entschlüsselungen
> durchzuführen.

Kann ich mit leben. Es ist nichts was nächste Woche fertig sein müsste.

Lothar M. schrieb:
> Über diese etwas egozentrierte Sichtweise bin ich raus und lerne aus
> dem, was andere gemacht haben. Wenn es also funktionierenden Code gibt,
> dann versuche ich den zu verstehen.

Um den Arduino Code zB. verstehen zu können, müsste ich mich lange damit 
auseinandersetzen. Zeit, die ich nicht wirklich investieren möchte, 
sonst hätte ich das schon seit Jahren tun können. Wofür? damit ich es eh 
nie brauche oder anwende? Ist halt ne Einstellungssache, die einen mögen 
es, die anderen nicht. Zumal die Compiler meist eh mehr code produzieren 
als eigentlich nötig und ich möchte halt im detail verstehen was da 
passiert, auf Bitebene, im Prozessor..usw. Wie gesagt, 
Einstellungssache.

Lothar M. schrieb:
> Man kann das auch als Möglichkeit begreifen, sich mal in eine
> Programmiersprache einzuarbeiten, mit der solche Projekte tatsächlich
> machbar sind.

Solche Projekt sind definitiv auch in Assembler machbar, da hab ich 
schon größeres gehabt. Ich finde einfach, nicht falsch verstehen, in C 
und dergleichen verblödet man, da die komplexen Routiunen der 
Interpreter umsetzt und man gar nicht mehr versteht was geht da 
eigentlich genau vor sich. Aber ich verstehe auch warum die meissten in 
C programmieren. Routinen lassen sich einfah erstellen, es geht 
schneller, man muss nicht mehr denken (zumindest nicht so viel) und man 
kann sich mit dem code anderer brüsten ;)

Lothar M. schrieb:
> Sei ehrlich zu dir: du willst das offenbar nicht verstehen.

Ich will verstehen wie die Vorgehensweise ist. Wo muss man was 
hinschreiben, konfigurieren, welche Register sind relevant, ( man 
braucht ja sicherlich nicht alle 61 Register) die Paar, mit denen ich 
eine Kommunikation mit dem Tag herstellen und ihn auslesen kann reichen 
ja schon. Das können ja nur ein paar Register sein die man wirklich 
braucht, WENN man weiss was wo rein muss. Mehr möchte ich ja gar nicht 
wissen. VERSTEHEN, tu ich es dann wenn ich an die Umsetzung gehe ;)

Ob S. schrieb:
> Wie jetzt? Paßt doch für "Hobbypfuscher". Genau für die ist der
> Arduino-Kram gedacht.

Genau da liegt das Problem :-)
Es kann sich jeder der null Ahnung hat irgendwelchen Code im Netz 
zusammen suchen und damit was halbwegs brauchbares hintüteln.
Ich als Hobbypfuscher gehöre halt noch zu der Gattung die verstehen 
möchte was man da tut.

Ob S. schrieb:
> Du willst also nicht verstehen, was da passiert? Dann bleibt nur der
> ganz harte Weg: Programmieren nach Datenblatt.

Genau das möchte ich ja. Und genau dazu brauch eben mal Hilfe diesen 
Wirrwarr der Register zu verstehn. (Was bedeutet was, Was bewirkt was)

Ob S. schrieb:
> Es ist auch eher selten, dass man Codebeispiele in Datenblättern
> irgendwelcher Peripherie-Devices findet. Und wenn überhaupt, dann eher
> in C als in Assembler.

Eben, In C findet man Massig Code dazu.

Naja, Egal, schön mal drüber gesprochen zu haben, Macht euch keine Mühe, 
ich krieg das auch ohne Hilfe hin. Dauert halt nur länger. Da das Hobby 
ist, hats demnach auch keine Eile.

Wäre doch aber bestimmt als Artikel fürs Forum hier interessant ;-)

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Andreas D. schrieb:
> Um den Arduino Code zB. verstehen zu können, müsste ich mich lange damit
> auseinandersetzen. Zeit, die ich nicht wirklich investieren möchte,
> sonst hätte ich das schon seit Jahren tun können. Wofür? damit ich es eh
> nie brauche oder anwende?

Es hätte Dir hier dabei helfen können, zu verstehen, wie Dein RC522 
anzusteuern ist.

Denn letztlich hast Du ein "Meta-Problem".
Du musst herausfinden, wie Du auf Deinem µC in Assembler mit 
I2C-Peripherie kommunzieren kannst, und Du musst auf einer komplett 
anderen Ebene herausfinden, wie mit dem RC522 zu kommunizieren ist.

Und diese Ebene hat jetzt überhaupt nichts mehr mit einer 
Programmiersprache zu tun, ob das mit Assembler, C, kleinen gelben 
Bällchen oder was auch immer geschieht, ist völlig wurscht.
Das Konzept ist immer das gleiche: Daten werden an ein I2C-Gerät 
gesendet oder von diesem empfangen.

Wenn Du Dich ein kleines bisschen aus Deiner Komfortzone herausbewegen 
würdest, könntest Du erkennen, daß man den Arduino-Code lesen kann und 
daß man dort sehr klar und deutlich erkennen kann, wann mit einem 
I2C-Gerät geredet wird, und was in welcher Reihenfolge in welches der 
Register Deines RC522 geschrieben wird.

Die Transferleistung, diese Information zu extrahieren und in Dein 
Assemblerprogramm zu übertragen, die sollte nicht zu schwer sein. Da Du 
ein Datenblatt hast, kannst Du sogar versuchen, die Details 
nachzuvollziehen und zu verstehen.

> Zumal die Compiler meist eh mehr code produzieren
> als eigentlich nötig

Das ist eine gerne von Assemblerfreunden genannte Form ziemlicher 
Selbstüberschätzung.

> und ich möchte halt im detail verstehen was da
> passiert, auf Bitebene, im Prozessor..usw.

Dagegen spricht ja auch nichts. Sollst Du ruhig machen, Grundlagenwissen 
ist immer gut.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Andreas D. schrieb:
> in C und dergleichen verblödet man,
Wow!
Das ist ja mal eine Ansage....

Offenbar bist du dir nicht bewusst, dass z.B. Arduino mit seinem C++ 
eine der mächtigsten, wenn nicht sogar DIE mächtigste und komplexeste 
Sprache verwendet.

Dein ASM ist dagegen Kindergarten.

Andreas D. schrieb:
> Und genau dazu brauch eben mal Hilfe diesen
> Wirrwarr der Register zu verstehn.
Zu beschränkt um Datenblätter zu lesen
Zu beschränkt um C++ Programme zu lesen

Aber alle C und C++ User für blöd erklären.

Wow!

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

https://github.com/miguelbalboa/rfid/blob/master/src/MFRC522.cpp#L226

Da ist der Arduino-Code für die Ansteuerung:
1
PCD_WriteRegister(TxModeReg, 0x00);
2
PCD_WriteRegister(RxModeReg, 0x00);
3
// Reset ModWidthReg
4
PCD_WriteRegister(ModWidthReg, 0x26);
5
6
// When communicating with a PICC we need a timeout if something goes wrong.
7
// f_timer = 13.56 MHz / (2*TPreScaler+1) where TPreScaler = [TPrescaler_Hi:TPrescaler_Lo].
8
// TPrescaler_Hi are the four low bits in TModeReg. TPrescaler_Lo is TPrescalerReg.
9
PCD_WriteRegister(TModeReg, 0x80);      // TAuto=1; timer starts automatically at the end of the transmission in all communication modes at all speeds
10
PCD_WriteRegister(TPrescalerReg, 0xA9);    // TPreScaler = TModeReg[3..0]:TPrescalerReg, ie 0x0A9 = 169 => f_timer=40kHz, ie a timer period of 25μs.
11
PCD_WriteRegister(TReloadRegH, 0x03);    // Reload timer with 0x3E8 = 1000, ie 25ms before timeout.
12
PCD_WriteRegister(TReloadRegL, 0xE8);
13
14
PCD_WriteRegister(TxASKReg, 0x40);    // Default 0x00. Force a 100 % ASK modulation independent of the ModGsPReg register setting
15
PCD_WriteRegister(ModeReg, 0x3D);    // Default 0x3F. Set the preset value for the CRC coprocessor for the CalcCRC command to 0x6363 (ISO 14443-3 part 6.2.4)

Ja, wirklich extrem schwer lesbar. In Assembler wäre es sicherlich viel 
besser. Die knapp 2000 Zeilen C++ Code in der Bibliothek sind auch total 
unübersichtlich, 10000 Zeilen Assembler wären viel schöner

Die Arduinos haben ja alle mindestens 32 KiB flash, es könnte da bei 
deinem ATmega16 sogar knapp werden mit dem Flash.

Andreas D. schrieb:
> in C
> und dergleichen verblödet man

Andreas D. schrieb:
> Ja, ich versteh den Arduino Code nicht

Ist das diese sogenannte kognitive Dissonanz? Verblödet man durch 
Hochsprachen so sehr dass man dann die Hochsprachen nicht mehr versteht? 
Bleibt man nur intelligent indem man Hochsprachen nicht versteht? Kann 
man also nur intelligent genug sein für Hochsprachen indem man 
Hochsprachen nicht versteht? Sind Hochsprachen so eine Art 
Mental-Virus?

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Niklas G. schrieb:
> Ist das diese sogenannte kognitive Dissonanz?

Hmmm....
Ein vorsichtiges: Ja!
Ich nenne es lieber "Ein Sprung in der Projektion."

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas D. schrieb:
> Ich finde einfach, nicht falsch verstehen, in C und dergleichen
> verblödet man, da die komplexen Routiunen der Interpreter umsetzt und
> man gar nicht mehr versteht was geht da eigentlich genau vor sich.
Was soll man daran nicht falsch verstehen?
Du sagst da, dass alle Programmierer, ausser der Handvoll, die weltweit 
noch größere Programme in Assembler programmieren, grade kollektiv 
verblöden, weil sie nicht mehr verstehen, was der Compiler aus ihrem 
Code macht.

Das ist das selbe, wie wenn du behauptest, dass jeder Autofahrer 
verblödet, wenn er nicht genau weiß, was beim Verbrennungsvorgang 
zwischen Zylinderkopf und Zylinder abläuft.

Der Witz ist aber ein ganz anderer: weil sich diese Programmierer bzw. 
Autofahrer nicht mehr um bereits gelöste Nebensächlichkeiten kümmern 
müssen, können sie sich auf die wesentlichen Aufgaben kümmern (z.B. 
einen Steuerungsablauf programmieren oder pünktlich und unfallfrei von A 
nach B fahren).

Und noch viel besser: der auf einem Benziner angelernte Autofahrer kann 
sogar sein Fahrzeug wechseln und kommt nach kurzer Zeit auch mit einem 
Diesel oder gar einem E-Auto klar. Völlig ohne Wissen, welche 
Verbrennungs- oder sonstige Vorgänge da zum Antrieb nötig sind.

Und der auf einer Hochsprache angelernte Programmierer kann seinen 
Prozessor problemlos wechseln, auch wenn der auf einmal eine komplett 
andere Architektur hat.

Andreas D. schrieb:
> Zumal die Compiler meist eh mehr code produzieren als eigentlich nötig
Zumeist reicht es aber in der Praxis aus, wenn das Programm in den 
Speicher passt(!) und der zugehörige Prozessor diesen Code schnell 
genug(!) ausführt.
Du bekommst keine 50 Cent zurück, wenn du jedesmal 10kByte der gekauften 
32kByte nicht nutzt und du wirst nicht gelobt, wenn du 20µs früher auf 
den nächsten Tastendruck des Anwenders wartest.

> ich krieg das auch ohne Hilfe hin.
Viel Erfolg.

: Bearbeitet durch Moderator
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Arduino F. schrieb:

> Offenbar bist du dir nicht bewusst, dass z.B. Arduino mit seinem C++
> eine der mächtigsten, wenn nicht sogar DIE mächtigste und komplexeste
> Sprache verwendet.

Ja, überaus mächtig. Und genau deswegen inzwischen auch fast 
unbrauchbar...

Selbst das ursprüngliche C++ war schon ziemlich komplex, aber immerhin 
noch halbwegs verständlich (auch wenn es viel Schmutz aus C übernommen 
hat).

Was aber heute daraus geworden ist, ist vollkommen indiskutabel. Ein 
vollkommen ausgeuferte Komplexität der Syntax und das unter notorischer 
Beibehaltung fast aller von C importierten Schwächen.

Man braucht sehr viel mehr Zeit, die Sprache umfassend beherrschen zu 
lernen, als man braucht, das zu programmierende Target auf Asm-Ebene 
umfassend zu beherrschen.

Sowas nenne ich eine vollkommen kontraproduktive Hochsprache.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Ob S. schrieb:
> Man braucht sehr viel mehr Zeit, die Sprache umfassend beherrschen zu
> lernen, als man braucht, das zu programmierende Target auf Asm-Ebene
> umfassend zu beherrschen.
>
> Sowas nenne ich eine vollkommen kontraproduktive Hochsprache.

Alleine die Portabilität.
Vom µC bis zum Mainframe.

Das macht ASM, bis auf ein paar Anwendungen, recht useless.

Dein Text ist genau so Schwachsinnig wie dieser, auf den sich mein 
Posting bezog:
Andreas D. schrieb:
> Solche Projekt sind definitiv auch in Assembler machbar, da hab ich
> schon größeres gehabt. Ich finde einfach, nicht falsch verstehen, in C
> und dergleichen verblödet man, da die komplexen Routiunen der
> Interpreter umsetzt und man gar nicht mehr versteht was geht da
> eigentlich genau vor sich. Aber ich verstehe auch warum die meissten in
> C programmieren. Routinen lassen sich einfah erstellen, es geht
> schneller, man muss nicht mehr denken (zumindest nicht so viel) und man
> kann sich mit dem code anderer brüsten ;)

von Andreas D. (dandy)


Lesenswert?

Lothar M. schrieb:
> Was soll man daran nicht falsch verstehen?
> Du sagst da, dass alle Programmierer, ausser der Handvoll, die weltweit
> noch größere Programme in Assembler programmieren, grade kollektiv
> verblöden, weil sie nicht mehr verstehen, was der Compiler aus ihrem
> Code macht.

Tja, was soll man dazu sagen...?  Man versteht sowas halt immer wie man 
es verstehen möchte. Un Dein Beispiel:

Lothar M. schrieb:
> Das ist das selbe, wie wenn du behauptest, dass jeder Autofahrer
> verblödet, wenn er nicht genau weiß, was beim Verbrennungsvorgang
> zwischen Zylinderkopf und Zylinder abläuft.
>
> Der Witz ist aber ein ganz anderer: weil sich diese Programmierer bzw.
> Autofahrer nicht mehr um bereits gelöste Nebensächlichkeiten kümmern
> müssen, können sie sich auf die wesentlichen Aufgaben kümmern

hinkt.

Der Entwickler eines Motors muss definitiv wissen, was beim 
Verbrennungsvorgang zwischen Zylinderkopf und Zylinder abläuft. Sonst 
entwickelt er Motoren die letztendlich nicht laufen.
Der Autofahrer, da haste Recht, der muss das nicht wissen, der 
entwickelt auch nichts.
Jeder der Arduino Code und Bibliotheken anderer verwendet etwickelt im 
eigentlichen Sinne auch nichts, er fummelt nur Code zusammen den ein 
anderer erstellt hat. Der Autofahrer fährt nur das Auto das ein anderer 
entwickelt hat.
Ich hingegen entwickele Funktionen und Programme von Grund auf, darum 
bin ich der Entwickler und nicht der Autofahrer und somit muss ich sehr 
wohl wissen was ich da treibe.
Spielt auch keine Rolle, kann jeder sehen wie er will und kann auch 
jeder verstehen wie er will und ebenso soll jeder programmieren wie er 
will. Ich progrmmiere in Assembler weil es mir gefällt und weil ich es 
kann.

Arduino F. schrieb:
> Offenbar bist du dir nicht bewusst, dass z.B. Arduino mit seinem C++
> eine der mächtigsten, wenn nicht sogar DIE mächtigste und komplexeste
> Sprache verwendet.
>
> Dein ASM ist dagegen Kindergarten.
>
> Andreas D. schrieb:
>> Und genau dazu brauch eben mal Hilfe diesen
>> Wirrwarr der Register zu verstehn.
> Zu beschränkt um Datenblätter zu lesen
> Zu beschränkt um C++ Programme zu lesen
>
> Aber alle C und C++ User für blöd erklären.

Wer hier beschränkt ist, sei mal dahin gestellt. Mit solchen dummen 
Aussagen reißt du hier keine Türen ein. Klar, wenn man schon Arduino 
heißt weiß man schon woher der Wind weht. Du bist Im Arduino Himmel 
vermultlich der Oberprolet und machst all die runter die nicht in deiner 
Liga spielen. Und von Assembler hast Du offenbar auch null Ahnung sonst 
würdest Du so geschwollen nicht daher reden. Das ist nämlich mindestens 
genau so Dumm wie du andere hin stellst. Bleib einfach bei deiner 
mächtigen Verblödungssprache und lass andere in Ruhe mit deinen 
dämlichen Kommentaren. Und ich bleibe dabei, Hochsprachen verblöden. So 
steht man dann vorm Auto, das nicht mehr läuft und hat null Ahnung was 
tun. Sehr Intelligent. Daumen Hoch

Das ist so ein Kindergarten hier, das kann man gar nicht mehr in Worte 
fassen
Man kommt hierher um nach Hilfe zu Fragen wenn man mal ein Problem hat 
und was erntet man? Nichts ausser Bullshit. Manche scheinen irgendwas 
kompensieren zu müssen. Ich kann nur Ahnen was das sein könnte.

Ja, Ihr seid alle die Grössten, Schlauesten und Fehlerfreiesten, euch 
kann keiner das wasser reichen. hab ich gemerkt. Alle anderen sind dumm 
wenn sie nicht alles so tun wie ihr es tut. Ihr seid echte Helden !

Spart euch eine Antwort hierrauf, ich werd sie eh nicht mehr lesen. 
Dieses Forum hat mich gesehen. Gibt andere Foren und Seiten, da ist man 
Hilfsbereiter, netter und vor allem Geduldiger.

Unglaublich diese Arroganz hier!

Und bitte, löscht meine Registrierung hier!

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Andreas D. schrieb:
> Klar, wenn man schon Arduino
> heißt weiß man schon woher der Wind weht.
Ja, macht ganz schön Eindruck, so ein Name, oder?
> Kleider machen Leute

Andreas D. schrieb:
> Und von Assembler hast Du offenbar auch null Ahnung
Wenn du meinst... dann wird das wohl stimmen.

Andreas D. schrieb:
> Und ich bleibe dabei, Hochsprachen verblöden.
Das stufe ich mal als Projektion ein.
Dann würde das bedeuten, dass nämlich genau du zu blöde bist um C++ zu 
begreifen.

von Rainer W. (rawi)


Lesenswert?

Andreas D. schrieb:
> Jeder der Arduino Code und Bibliotheken anderer verwendet etwickelt im
> eigentlichen Sinne auch nichts, er fummelt nur Code zusammen den ein
> anderer erstellt hat.

Jeder Assembler Programmierer stückelt nur Mnemonics oder Binärcode für 
einen Hardwarebefehlsdecoder/Recheneinheit in einem Stück Silizium 
zusammen, das andere designt haben.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas D. schrieb:
> Der Entwickler eines Motors muss definitiv wissen, was beim
> Verbrennungsvorgang zwischen Zylinderkopf und Zylinder abläuft. Sonst
> entwickelt er Motoren die letztendlich nicht laufen.
Der Entwickler des Prozessors muss wissen, wie er den Prozessor bauen 
muss, dass der seine Funktion erfüllt. Und er denkt sich für die 
Maschinenbefehle Mnemonics aus, die bereits fertige und von Menschen 
leicht lesbare "Hochsprachenbefehle" sind. Und der Entwickler des 
Assemblertools denkt sich dann noch Makros aus, wo 1 Assmeblerbefehl in 
mehrere Mnemonics übersetzt wird. Und er vereinfacht dem Programmierer 
die Arbeit, indem er z.B. automatisch den richtigen bzw. kürzeren 
Sprungbefehl anhand eines Labels ausrechnet.

> Der Autofahrer, da haste Recht, der muss das nicht wissen, der
> entwickelt auch nichts.
>
> Jeder der Arduino Code und Bibliotheken anderer verwendet etwickelt im
> eigentlichen Sinne auch nichts
Ein Assemblerprogrammierer entwickelt auch nichts, sondern er ist nur 
der Programmierer und programmiert nur den bereits mitsamt seinen 
Funktionen fertig entwickelten Prozessor. Und er verwendet mit den 
Assembler-Mnemonics und dem Assembler als "Übersetzer" die elementarste 
Hochsprache, die so ein Prozessor versteht.

> Der Autofahrer fährt nur das Auto das ein anderer entwickelt hat.
> Ich hingegen entwickele Funktionen und Programme von Grund auf
Du bist auch als Assemblerprogrammierer nur ein Programmierer und 
programmierst auch nichts, was nicht schon jemand anders schon lange in 
C  programmiert hat. Oder meinst du, der C-Code für den Baustein ist vom 
Himmel gefallen?

> Und ich bleibe dabei, Hochsprachen verblöden.
Warum programmierst du den eigentlich nicht gleich in Maschinencode?

> Das ist so ein Kindergarten hier
Ja, genau so kommt mir das auch vor: da sitzt wer mit verschränkten 
Armen mitten in seiner Kindergartengruppe auf dem Boden und grummelt 
herum "Ich will das aber unbedingt!" und "Alle anderen sind blöde!"

Andreas D. schrieb:
> Und bitte, löscht meine Registrierung hier!
Mach das bitte selber. Es ist nicht so schwer.

> Assembler ... weil ich es kann.
Ja, wie gesagt: viel Erfolg.

BTW:
Ich verwende C und C++ und Python, weil ich (einige) Prozessoren samt 
ihrem Assembler kenne. Und es reicht mir aus, wenn ich mir bei 
fraglichen Fällen den erzeugten Assemblercode ansehen und auf 
Tauglichkeit oder Probleme bewerten kann.

: Bearbeitet durch Moderator
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.