Página 1 de 1

Paginação no MC9RS08KA2 (migrado)

MensagemEnviado: 17 Out 2006 12:47
por Fábio Pereira
Loser
Professor


Brazil
297 Posts Posted - 01/09/2006 : 09:01:38
--------------------------------------------------------------------------------

beleza

Pessoal estou começando com o KA2 da freescale e tenho algumas duvidas esse trecho de progra abaixo foi retirado do programa que veio junto com a EVB ( evoluation board)gravado no KA2

mov #HIGH_6_13(SOPT), PAGESEL
mov #$03, MAP_ADDR_6(SOPT) ; Disables COP and enables BKGD PTA3) and RESET (PTA2) pins
mov #$30, PTADD ; Configures PTA4 and PTA5 as output

1º Pelo que eu entendi é preciso jogar o valor de 8 bits da pagina da memoria no PAGESEL , depois especificar o endereço no qual se quer gravar o valor de #$03 através de um valor de 6 bits ?

2º Esse procedimento é so para escrita ou para leitura tem que fazer ele tambem ?

3º Porque no trecho " mov #$30, PTADD " ele não precisou fazer o procedimento citado na primeira pergunta ?

4º Fora essas perguntas tem mais algum fator a se levar em consideração na paginação de memoria ?

5º Conforme o trecho abaixo , porque ele não usa paginação na memoria Flash principal ?

_Startup:
main:
bsr init

main_loop:
bclr PTA1,PTADD ; Configures PTA1 as input
mov #$05,time2 ; Sets timer delay (about 3 ms)
bsr delay

6º tipo ele escreve o programa sem indicar que pagina ele esta , ou sera que tem que indicar toda ves que eu exeder uma pagina .

Exemplo codigo pagina 1 endreço 1
codigo pagina 1 endreço 2
.
codigo pagina 1 endreço 64
indica pagina indica endereço
codigo pagina 2 endreço 1
codigo pagina 2 endreço 2
.
codigo pagina 2 endreço 64

Obs. estrutura de programação na Flash principal


LOSER

Fabio Pereira
Conselheiro


Brazil
2205 Posts Posted - 01/09/2006 : 10:23:10
--------------------------------------------------------------------------------
Olá Loser,

1- O sistema de paginação dos RS08 permite que você mapeie qualquer área da memória do chip para que ela seja visível na área da janela de paginação (endereço 0xC0 a 0xFF). Esta área pode ser acessada por instruções utilizando o modo de endereçamento direto, o que acelera muito o programa. O trecho de código que você postou faz isso, ele copia para o PAGESEL (o apontador da página), os 8 bits mais significativos do endereço do registrador SOPT. Isto faz com que a janela de paginação passe a apontar para o endereço 0x0200 a 0x023F.

A instrução mov #$03, MAP_ADDR_6(SOPT) irá copiar a constante imediata 3 para o endereço do SOPT dentro da janela de paginação.

2 - O procedimento funciona para leitura e escrita, já que a janela de paginação aponta diretamente para a área de memória que você escolheu.

3 - A instrução mov #$30, PTADD não fez nenhuma seleção de página porque o registrador PTADD está diretamente acessível ao modo direto (endereço 0x0011).

4 - Não sei, depende do que você tenha entendido ou não ;-)

5 - Não entendi a questão.

6 - Acho que você está confundindo as coisas. A paginação serve para acesso à memória. No caso dos desvios, o modo de endereçamento estendido já inclui todos os bits necessários para especificar o endereço de destino.

Até +

Fábio Pereira
ScTec - Automação e Projetos Especiais
www.sctec.com.br


Loser
Professor


Brazil
297 Posts Posted - 01/09/2006 : 11:34:10
--------------------------------------------------------------------------------
Beleza

Fabio valeu pela ajuda , so para confirmar devido a arquitetura do MCU é impossivel executar a instrução " MOV #%00110000,PTAPE " e por esse motivo ue tenho que executar
MOV #HIGH_6_13(PTAPE),PAGESEL
MOV #%00110000,MAP_ADDR_6(PTAPE)
essa minha afirmação está correta ?

Abaixo o programa "helo word" do MCU , aperta a tecla o led acende solta a tecla o led apaga

; export symbols
XDEF _Startup, main
; we export both '_Startup' and 'main' as symbols. Either can
; be referenced in the linker .prm file or from C/C++ later on

; Include derivative-specific definitions
INCLUDE 'derivative.inc'


;*******************************************************************************************
; Delay Routine
; This subroutine performs a specified delay.
;*******************************************************************************************
delay:
clr counter
clr counter2
bra loop

inc_counter:
inc counter

loop:
lda counter
mov #HIGH_6_13(time), PAGESEL
cmp MAP_ADDR_6(time)
blo inc_counter

clr counter
inc counter2
lda counter2
cmp time2
blo inc_counter
rts

;*******************************************************************************************
; Peripheral Initialization
;*******************************************************************************************
init:
;CONFIGURES PORT CONTROL
MOV #%00000000,PTAD
MOV #%00000011,PTADD
MOV #HIGH_6_13(PTAPE),PAGESEL
MOV #%00110000,MAP_ADDR_6(PTAPE)
MOV #HIGH_6_13(PTAPUD),PAGESEL
MOV #%00000000,MAP_ADDR_6(PTAPUD)
MOV #HIGH_6_13(PTASE),PAGESEL
MOV #%00111011,MAP_ADDR_6(PTASE)
;CONFIGURES KBI CONTROL
BCLR KBISC_KBIE,KBISC
MOV #%00000000,KBIES
MOV #%00110000,KBIPE
BSET KBISC_KBACK,KBISC
BSET KBISC_KBIE,KBISC
;CONFIGURES SYSTEM CONTROL
MODE: EQU 0 ; MODE=0 Background Mode, MODE=1 Run Mode
IFNE MODE
MOV #HIGH_6_13(SOPT), PAGESEL
MOV #$01, MAP_ADDR_6(SOPT) ; Disables COP and enables RESET (PTA2) pin
ELSE
MOV #HIGH_6_13(SOPT), PAGESEL
MOV #$03, MAP_ADDR_6(SOPT) ; Disables COP and enables BKGD (PTA3) and RESET (PTA2) pins
ENDIF

;CONFIGURES CLOCK (FEI Operation Mode)
MOV #HIGH_6_13(NV_ICSTRM),PAGESEL
LDA MAP_ADDR_6(NV_ICSTRM)
STA ICSTRM ; Sets trimming value
CLR ICSC1 ; Selects FLL as clock source and disables it in stop mode
CLR ICSC2 ; ICSOUT = DCO output frequency
wait_clock:
BRSET CLKST,ICSSC,wait_clock ; Waits until FLL is engaged
RTS
;*******************************************************************************************
; Entry Point
;*******************************************************************************************
_Startup:
main:
BSR init

main_loop:
BRSET PTAD_PTAD5,PTAD,ON_LED
BCLR PTAD_PTAD1,PTAD
BRA main_loop
ON_LED: BSET PTAD_PTAD1,PTAD
BRA main_loop


Obrigado mais uma vez pela ajuda

Falou


LOSER

Edited by - loser on 01/09/2006 11:36:03

Fabio Pereira
Conselheiro


Brazil
2205 Posts Posted - 01/09/2006 : 12:24:36
--------------------------------------------------------------------------------
Exatamente Loser,

Você só pode acessar posições de memória localizadas fora da página direta utilizando o sistema de paginação.

Até +

Fábio

Fábio Pereira
ScTec - Automação e Projetos Especiais
www.sctec.com.br

Duvida !!!

MensagemEnviado: 06 Dez 2006 15:33
por mega.rod
Pessual, se alguém puder me ajudar, presciso de uma rotina ou algo que possa me ajudar para apagar, ler e escreve dados na Flah, estou trabalhando com o HC908QY4...

Obrigado e aguardo o retorno assim que possivel...Valew :oops:

MensagemEnviado: 06 Dez 2006 16:43
por Fábio Pereira
Rodrigo,

A sua pergunta nada tem a ver com o assunto deste post.

Preste mais atenção antes de postar no fórum.

Até +

Resposta !!!

MensagemEnviado: 06 Dez 2006 17:04
por mega.rod
Blz !

MensagemEnviado: 06 Dez 2006 17:29
por Fábio Pereira
Você ainda não entendeu ...

Abra um novo tópico, selecione um assunto adequado. Assim as pessoas poderão ajudá-lo ...

Até +