Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: A/D Port bei Open Mini in Assembler Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 21.01.2006 16:38)
 Als Antwort auf A/D Port bei Open Mini in Assembler von Roland - 21.01.2006 8:12
Dietmar nutzt:  CC1-M-Unit V1.1, Advanced CC1-Unit, Open-Micro, Open-Mini, Open-Mini M-Unit, Open-Mini Station
Hallo Roland

> Zuvor Bitte eine Frage zum Rom Listing! Für was wird das eigentlich benötigt?

Ein ROM-Listing dokumentiert jedes Byte in einem Computersystem, das vom Betriebssystem (OS) belegt ist. Ein ähnliches Listing habe ich bereits für die C-Control Version 1.1 erstellt. Das OS der Open-Micro steht im Flash-Speicher, deshalb könnte man es auch als "Flash-Listing" bezeichnen, die Bezeichnung "ROM-Listing" ist jedoch üblicher. Im Listing ist sehr gut zu erkennen, wie das Betriebssystem arbeitet. Natürlich sollte man bei der Analyse noch andere Informationsquellen wie das Manual zum Mikrokontroller QT4/QY4 und bei Bedarf auch Application Notes und die C-Control-intern-Infosammlung zu Hilfe nehmen. Beispielsweise stehen die sogenannten Interruptvektoren auf der letzten Flash-Page, am Ende des Listings. Nach einem Reset holt der Kontroller den Adreßvektor von $fffe und $ffff und springt zur darin enthaltenen Adresse $ffc1. Das ist der Usermonitor. Wenn man den Programmfluß weiterverfolgt, erkennt man, daß nach einem Reset, der nicht aufrund eines Fehlers auftrat, der Maschinencode auf Adresse $ee56 im OS ausgeführt wird. Dort wird der Kontroller unter anderem initalisiert und die Interpretation der Token im Flash beginnt.

Von erfahrenen Assemblerprogrammierern kann das Listing auch dazu benutzt werden, Einsprungpunkte im OS zu finden, die per JSR angesprungen werden können. So ein Listing hätte ein erfahrener Anwender auch selbst herstellen können. Ich habe es aber in den Anhang der Doku gestellt um zu zeigen, daß die Open-Micro nichts zu verbergen hat.

> When DDRAx is a 0, reading address $0000 reads the voltage level on the pin.

Das ist anders gemeint. Auf Adresse $0 steht das "Port A Data Register" (PTA oder PORTA). Es entspricht dem BYTEPORT[1] in BASIC. Es handelt sich also um Digitalports, die High oder Low detektieren, aber nicht um Ports, die mit dem Analog-Digital-Wandler verbunden sind.

Alle Register, die mit dem ADC ("Analog-to-Digital Converter") zu tun haben, liegen an Adresse $3c bis $3f. Eine Suche nach "$3e" im ROM-Listing führt zum folgenden Code. Hier wird der ADC aktiviert, ausgelesen und wieder deaktiviert. Um den ADC zu verstehen, sollte man sich natürlich auch anschauen, wie er initialisiert wird. Ansonsten kann man diese Routine auch per Tokencode "16 b" (push data from ad-port b to stack) nutzbar machen.

f038 : ae02   ldx #$02            ; Schleifenzaehler
f03a : b73c   sta $3c             ; ADC Status and Control Register (ADSCR)
f03c : 0f3cfd brclr #7,$3c,$f03c  ; COCO - Conversions Complete Bit
f03f : 5bf9   dbnzx $f03a         ; decrement x-reg. and branch if not zero
f041 : b63e   lda $3e             ; ADC Data Register (ADR)
f043 : 6e1f3c mov #$1f,$3c        ; ADC Status and Control Register (ADSCR)
f046 : 200a   bra $f052           ; branch always to $f052 -> PUSH

Viele Grüße
Dietmar

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten:

Re: A/D Port bei Open Mini in Assembler (von Roland - 22.01.2006 9:10)
    Re: A/D Port bei Open Mini in Assembler (von Dietmar - 30.01.2006 22:35)