elomax

[ Techniek ] [ Shop ] [ Site map
Inleiding ] Processor ] Ontwikkelomgeving ] Interrupts ] Digitale I/O ] Seriele communicatie ] Timers ] A/D Conversie ] Puls teller ] SPI ] Watchdog ] Clock monitor ] EEPROM ] [ Configuratie ] Ontwerp technieken ] Toepassings voorbeeld ]

Terug
Omhoog

Het CONFIG register

In dit register, dat is uitgevoerd in EEPROM cellen, kan worden geprogrammeerd welke subsystemen van de micro-controller aktief zijn. Zo is er een bit (ROMON) dat bepaalt of de interne ROM geadresseerd moet kunnen worden. Wanneer dit bit op '0' staat, is de interne ROM niet aangesloten.

Met een tweede bit (EEON) kan worden gekozen of de interne EEPROM aangesloten is, of losgekoppeld. Wanneer dit bit op '0' staat, is de interne EEPROM niet langer te gebruiken. Het derde bit (COPON) bepaalt of de interne 'watchdog' aan staat, of is uitgeschakeld. Standaard staat de watchdog uit. Wanneer U de watchdog wilt gebruiken moet dit bit op '1' gezet worden.

Programmeren en wissen van dit register gaat hetzelfde als het programmeren van een gewone EEPROM locatie.

Ook dit register is beschermd tegen ongewild wissen en programmeren, en wel door het PTCON bit in het BPROT register. Wanneer dit bit op '1' staat is wissen of programmeren van het CONFIG register niet mogelijk.

Een routine waarmee het CONFIG register geprogrammeerd kan worden is hieronder gegeven.

* zet het byte in (B) in het config register
confwrite       equ $
                ldaa #((byte)or(erase)or(eelat))
                staa pprog      |kies wissen per byte
                stab config     |adresseer het te wissen byte
                oraa #eepgm     |en start het wissen
                staa pprog
                bsr dly10       |wissen duurt 10ms
                clr pprog       |stop daarna het wissen
                ldaa #eelat
                staa pprog      |kies programmeren van een byte
                stab config     |schrijf het byte naar het config register
                ldaa #(eelat+eepgm)
                staa pprog      |en start het programmeren
                bsr dly10       |dit duurt 10 ms
                clr pprog       |stop daarna het programmeren
                rts

Het config register:

CONFIG $103F

EE3

EE2

EE1

EE0

nosec

nocop

romon

eeon

Het INIT register

Nadat de micro-controller is opgestart, is de indeling van het geheugen als hier weergegeven. Het grootste deel van de geheugen decodering ligt vast, onder meer door de programmering van de PSD833 chip. Via het INIT register in de 68HC11 kan wel met de plaats van de I/O registers en de plaats van het interne RAM geschoven worden. Dit heeft alleen in uitzonderlijke gevallen zin, meestal voldoet de standaard plaats uitstekend.

Het is mogelijk de geheugenindeling te veranderen door middel van het INIT register. In dit register kan worden aangegeven waar het beginadres van het interne RAM moet zijn, en waar het beginadres van de bank met I/O registers moet zijn. Standaard is de indeling zoals aangegeven, maar door het INIT register te wijzigen kan de indeling veranderd worden.

In sommige toepassingen kan het handig zijn om de registerbank te laten beginnen op adres 0. De registers kunnen dan geadresseerd worden in de 'direct' adresseer mode, en daardoor kunnen de bit-clear, de bit-set en de bit-test instructies gebruikt worden met directe addressering. Wanneer de registers niet op adres 0 beginnen, kunnen deze instructies alleen gebruikt worden wanneer U geïndexeerd adresseert, en dus één van de indexregisters op het beginadres van de registerbank laat wijzen.

Wanneer U zowel het RAM als de registerbank op adres 0 laat beginnen, zullen de onderste 64 bytes uit de geheugenmap gereserveerd zijn voor de registers. Hierboven zal het RAM weer gewoon beschikbaar zijn (dus van $40 tot $1FF.) Een stukje van het RAM wordt hiermee dus ontoegankelijk. Zowel de registers als (een gedeelte van) het RAM ligt dan in de onderste $100 bytes van het geheugen, en is daarmee direct adresseerbaar.

Met de bits RAM3..RAM0 kan het RAM geplaatst worden op adres $0000 (alle bits op '0') t/m adres $F000 (alle bits op '1'), in stappen van $1000 bytes.

Met de bits REG3..REG0 kan de registerbank geplaatst worden op adres $0000 (alle bits op '0') t/m adres $F000 (alle bits op '1'), in stappen van $1000 bytes.

De bits in het INIT register:

INIT $103D

ram3

ram2

ram1

ram0

reg3

reg2

reg1

reg0

 

© 2005...2008 Elomax [Voorwaarden ]