Routinensammlung und Gewusst-wie für Mikrocontroller
Cypress M8C
0. Grundlagen
Es handelt sich um einen 8-bit-Prozessorkern, den es offenbar nur
bei Cypress in ihren PSoC-Schaltkreisen gibt.
Das interessante an diesen Schaltkreisen ist natürlich nicht die
mal wieder andere Prozessorarchitektur, sondern die
konfigurierbaren Analog- und Digital-Schaltungsblöcke.
Der Prozessor bietet keine berauschende Performance wie die ATmegas;
er ist eher vergleichbar mit den schnelleren PICs oder 8051ern.
Seine Stärke liegt ausschließlich in seiner Peripherie.
Dort befindet sich auch ein sehr schneller Multiplizierer+Addierer,
wie man ihn zur Realisierung digitaler Filter braucht.
1. Anschlüsse und Peripherie
Noch zu schreiben!
2. Register und Speicher
Der Prozessor in klarer Harvard-Architektur besitzt:
- ca. 4 KB Flash-ROM als Programm-Speicher (max. 64 KB),
- stets 256 Byte RAM sowie
- bis zu 512 Spezialregister
(special function register), die im Datenblatt etwas irreführend als »Register«
bezeichnet werden. Diese liegen in zwei Bänken vor.
Eigentliche Register gibt es nur fünf:
- A (Akkumulator)
- PC (program counter, »Programmzähler«, Befehlszeiger, 12..16 bit)
- SP (stack pointer, Stapelzeiger, zeigt in RAM; Stapel wächst zu höheren Adressen hin)
- F (Flags)
- X (Indirekt-Zeigerregister, zeigt in RAM oder auf Spezialregister)
Diese fünf Register haben keine (Alias-)Adresse und müssen über spezielle
Befehle angesprochen werden. So lässt sich SP nur mittels »SWAP A,SP« setzen.
Der Zugriff auf Spezialregister erfolgt ebenfalls über gesonderte Befehle;
allerdings werden diese im Operandenteil mit dem Schlüsselwort »reg«
generiert. (Also nicht mit »IN« und »OUT« gängiger Prozessoren.)
Hingegen zum Zugriff auf den Programmspeicher gibt es andere Mnemonics
mit kuriosem Namen, nämlich »INDEX« und »ROMX«.
Beim »System Supervisor Call« (SCC, vergleichbar mit einem Softwareinterrupt
beim 80x86) braucht man nur zu wissen, wie die
8 RAM-Speicherplätze am Ende des RAM zu füttern sind, damit dieser Befehl
das tut, was man beabsichtigt. Es erscheint klar, dass sich »hinter« dem
Flash-Speicher noch ein fest programmierter ROM befindet, der den Kode für den
SCC-Aufruf enthält. Der, und das Supervisor-Bit im Flag-Register interessieren
nur denjenigen (Cypress-Mitarbeiter), der Zugang zu jenem ROM hat.
Um bei der überwältigenden Menge der Spezialregister (hierüber werden auch
der Analog- und Digitalteil konfiguriert wie bei einem FPGA) nicht
gleich die Nerven zu verlieren, gibt es von Cypress ein Werkzeug namens
»PSoC Designer«, welches den konfigurierenden Startup-Kode ausspuckt.
(Ungetestet).
3. Befehlssatz und Pseudobefehle
Noch zu schreiben!
4. Programmiergerät
Noch zu schreiben!
haftmann#software, 9.10.2004