Pfad: Home => AVR-Übersicht => Philosophie
AVR in action Tutorial für das Erlernen der Assemblersprache von
AVR-Einchip-Prozessoren
(AT90S, ATmega, ATtiny) von ATMEL anhand geeigneter praktischer Beispiele.
Logo

Philosophische Anmerkungen zu diesen Seiten

Wer diese Seite besucht, sollte das Folgende über diese Seiten wissen und beachten.

Assembler pur - warum nur?

Wer etwas über Prozessoren dieses Typs lernen will, MUSS dies in Assembler machen, weil Wie man einen vorhandenen 8-Bit-Timer dazu kriegt, nicht nur bis 255 zu zählen, sondern auch bis 65.535 oder sogar bis 16.777.215, in Assembler eine Sache von wenigen Zeilen Quellcode. Und währenddessen auch noch die exakte Dauer eines extern angelegten Signals zu messen (z. B. von einem angeschlossenen DCF77-Empfänger) und sogar noch daraufhin auszuwerten, ob gerade eine Null, eine Eins oder das fehlende Sekundensignal angekommen sind, und aus dem bis dato eingetroffenen Datensalat eine Uhrzeit, ein Datum oder einen Wochentag zu machen und das Ganze dazu noch auf einer LCD auszugeben, ist in Assembler eine - vergleichsweise - leicht lösbare Aufgabe. Die Lösung kann schrittweise erarbeitet und jeder Teilschritt am realen Objekt erprobt werden (Beispiele: der Zählerüberlauf von 65.535 auf 65.536 macht eine rote LED an, bei einer identifizierten Eins beim DCF77-Signal geht eine gelbe LED an und bei einem erkannten Minutensignal beim DCF77-Signal eine grüne und bei korrektem Wochentag eine blaue). Das Zusammenspiel von Hardware (8-Bit-Timer, DCF77-Eingang) mit den bislang erstellten Softwareteilen geht schrittweise seinen Gang und alles passt zusammen.

Die Aufgabe in einer anderen Sprache zu lösen dürfte höchste Programmierkünste verlangen. Wie einen 24-Bit-Zähler aus einem 8-Bit-Zähler bauen? Warum hat der Chip keinen eingebauten 24-Bit-Zähler? Darf ich bei meinem Arduino überhaupt Timerüberlaufs-Interrupts verbiegen oder funktioniert der dann gar nicht mehr weil er den 8-Bit-Timer noch für was anderes benutzt? Und wie messe ich 100 oder 200 ms lange Zeiten? Wie lange dauert eigentlich eine C-Schleife überhaupt? Und ist das immer gleich oder macht C noch was anderes zwischendurch? Fragen über Fragen, auf die der Assemblerprogrammierer ganz, ganz einfache Antworten hat, weil er den Timer versteht und mittels Overflow-Interrupt-Vektor auch voll im Griff hat.

Gut, wer gar nix anderes als C gelernt hat, kann sich jetzt gar nicht anders helfen und programmiert Zählschleifen um das DCF77-Signal herum. Und dürfte schon mit der Aufgabe überfordert sein, währenddessen auch noch die Uhrzeit für den Fall, dass gar kein DCF77-Empfänger angeschlossen ist, sekundengenau ablaufen zu lassen.

Pures HTML

Webseiten heutzutage bestehen zuvörderst aus Firlefanz: ohne Fonts geht rein gar nix und Cascaded Style Sheets sind sowieso Pflicht. Warum mich das alles nicht anficht, ich meine Webseiten rein old-style mache? Nun, das hat viele Gründe. Hier nur die wirklich Wichtigsten.
  1. Der Font-Terror: HTML wurde mal dafür erfunden, Texte, Bilder und Links zu anderen Texten und Seiten darzustellen. Und das unabhängig von dem Geschmack oder dem Betriebssystem des Lesers darstellbar zu machen. Wer möchte (und das auch kann), kann seinen HTML-Browser auf den Font "Segui" umstellen und hat damit sein Lieblings-Design gefunden und eingestellt. Wer gar keinen "Segui"-Font auf seinem Rechner und Betriebssystem hat, nimmt halt irgendeinen anderen Font, den er auch in seinem Betriebssystem hat. Merke: der Betrachter ist der Meister des Darstellungsdesigns.
    Nicht so bei heutigen Webseiten-Designern: mit irgendwelchen Font-Tags schreibt der Webseiten-Designer dem User vor, in welchem Font irgendein Text erscheinen soll. Dass ein Windows-Webentwickler einen Font aus der Windows-Welt und der Apple-Webentwickler irgendwas aus seiner ganz eigenen Welt nimmt, ist da schon voll egal: auf seinem eigenen Rechner sieht es ganz schön und verschnörkelt aus. Und der Linuxer hat nun wieder ganz eigene Fonts, die die beiden Erstgenannten gar nicht haben. Und das Schönste: ist auf dem Rechner des Webdesigners sein ganz eigener Spezial-Font installiert, dann sieht sein Entwicklungsergebnis entsprechend ganz eigen aus.
    Was macht nun der arme Webbrowser mit den ganzen Font-Tags? Er schaut mal nach, ob er das hat. Wenn nicht, nimmt er halt was anderes. Und aus der ganzen Designerei resultiert dann auf dem Betrachterrechner: rein gar nix. Es bleibt reiner Zufall, ob irgendwas so oder ganz anders aussieht. Die ganze Webseiten-Designerei war rein unnütz und umsonst.
    Also, Freunde der Font-Frickelei, macht doch Folgendes: Macht ein PDF-Dokument. Da könnt ihr Euch mit Euren Fonts auslassen, gerne auch mit Euren Spezial-Fonts, die nur ihr habt und verwendet. Die kommen dann auch in das PDF und es sieht ganz genauso aus, wie ihr es wolltet. Verschont aber die HTML-Welt und Webseiten mit Euren unnützen Bemühungen.
    Merke: der Betrachter ist und bleibt der Meister des Darstellungsdesigns. Webentwickler: haltet Euch aus dem Design heraus, das ist nix für Euch. Erklärt Euren Auftraggebern das auch, die müssen schließlich auch ihre Designabteilung in HTML schulen.
  2. Der Schriftgrößen-Terror: Ich habe einen Freund, der nahezu blind ist. Der hat seinen Webbrowser auf eine riesige Schriftgröße umgestellt und kann nur so die Texte lesen. Wer also in einer Webseite eine feste Größe einstellt, tut dem nahezu Blinden keinen Gefallen. Der muss den Text dann herauskopieren, in einen Texteditor laden und den auf die Riesenschrift umstellen. Merke: Schriftgrößen werden im Browser eingestellt und nicht im HTML-Dokument. Alles andere ist Unsinn, auch wenn es alle so machen.
  3. Der Handy-Format-Designer: Da es zunehmend User gibt, die meine Webseite aus einem Handy heraus aufrufen: es ist so gut wie unmöglich, Schaltbilder zu zeichnen, die auf den wenigen Pixeln, die Dir zur Darstellung zur Verfügung stehen, auch noch gut aussehen. Die Texte brechen, weil reines HTML, korrekt um, aber bei Bildern geht das halt nicht. Also: schick den Link nach Hause und lies das Schaltbild auf deinem ausgewachsenen Super-Duper-Weitband-Monitor.
  4. Der Automatik-Export-Terror: Wer mag, kann folgendes Experiment machen: man nehme eine Tabelle mit einer entsprechenden Tabellen-Software (wie LibreOffice-Calc oder Excel), versehe die Tabelle mit etwas Schnörkeln wie Farbhinterlegungen und Rändern und exportiere das dann als HTML-Dokument. Das HTML-Doument schaue man sich in einem Texteditor wie KWrite (Linux) oder Notepad (Windows) an. Wer so was auf die Menschheit und ihre Browser loslässt, ist nicht ganz dicht. Webbrowser, die so was lesen und anzeigen sollen, muüssten eigentlich bei jeder gelesenen Tabellenzeile ein lautes Quietschen von sich geben. Wann kommt der HTML-Prüfer für Firefox und Opera mit Quietschton? Nein: Tabellen in Tabellenkalkulationen verwandelt man innerhalb der Tabelle in HTML-Code, mit ein paar wenigen HTML-Tags (TABLE/TABLE, TH/TH, TD/TD), lässt dabei Ränder und Hintergrundfarben weg und kopiert den so produzierten HTML-Quelltext dann in seine HTML-Seite. Keine Automatik, die ich kenne, schreibt leserlichen HTML-Code ohne Schnörkel. Merke: Webseiten schreibt man mit einem Text-Editor, nur das produziert anständiges HTML.
  5. Die blödsinnigen Link-Farmen: Wer nix Eigenes produzieren kann oder will, fügt seiner Webseite ganz viel fremdes Zeugs hinzu, das keinerlei Grips erfordert. Gerne baut man fremde Grafiken so ein, als wären es Eigene. Oder halt auch Listen mit Links. Die kriegt man mit guten Suchmaschinen schnell produziert und muss dazu gar nix Eigenes tun oder Erfinden. Auf jeden Fall muss eine Link-Liste mit dem falsch interpretierten Hinweis auf ein Urteil eines bestimmten Landgerichts versehen sein, dass man für das Alles gar nix kann und so gut wie völlig unschuldig daran ist. Merke: Link-Listen werden mit Suchmaschinen gemacht und haben in HTML-Seiten nix zu suchen. Wenn es unbedingt sein muss, musst Du mindestens einmal im Jahr alle diejenigen Links rauswerfen, die 404-Fehler produzieren.
Alle HTML-Seiten hier sind hand-made, fast alle Links zeigen auf meine eigenen Seiten und sind ebenfalls hand-made.

©2021 by http://www.avr-asm-tutorial.net