Vai al contenuto
PLC Forum


Definire ram oltre banco 0, pic16f18857


project76

Messaggi consigliati

Salve ho un problema definito ed utilizzato leprime 96 variabili ram banco 0 con il comando cblock(pic16f18857) non riesco a definire le altre come devo fare?? creare un nuovo cblock? e come passare al banco 1 per utilizzare le altre 80 variabili?

Link al commento
Condividi su altri siti


Che linguaggio stai usando? con quale compilatore?

 

Per selezionare i banchi si usno i bit RSP (RSP0 e RSP!) del registro STATUS oppure con il registro BSR se previsto.

Leggi queste note che ti chiariscono un po' meglio le idee su questa problematica.

 

Comunque io solitamente usavo linguaggio "C", compilato con picC, e non ho mai avuto preblemi con i banchi, il compilatore e l'allocatore risolvono tutti i problemi in modo trasparente.

Link al commento
Condividi su altri siti

Si sono in mplab ide con l'assembler, per questo pic più avanzato non si agisce più sullo status  ci sono fsr0l e fsr0h ma non so come usarli sul datasheet non fa esempi ma soprattutto non riesco ad inizializzarli.

Inizializzato il cblock/endc le prime 96 variabili dovrei accedere al secondo banco gpr che ne ha altre 80 ma co.e devo fare?

Link al commento
Condividi su altri siti

Dovresti studiarti il data sheet (io francamente non ne ho ne tempo ne, tantomeno, voglia).


 

Quote

 

Un grande vantaggio nella scrittura del sorgente è offerto dall' Assembler MPASM, che utilizza automaticamente l' Access Bank quando un operando ha un indirizzo inferiore a 0x80 (area di RAM iniziale del banco 0) e quando ha un indirizzo superiore a 0xF80 (area degli SFR), ignorando la gestione BSR dei banchi. Questo consente di disporre di una parte della RAM e di tutti i registri abolendo completamente qualsiasi gestione di switch dei banchi. Ovviamente questo richiede che nel sorgente si siano utilizzati nomi simbolici e non valori assoluti, in quanto le denominazioni di molti SFR restano identiche tra PIC16 e PIC18, ma il loro indirizzo assoluto in memoria è completamente diverso.

Il meccanismo dell' Access Bank è automatico quando sono utilizzati aree di memoria indirizzabili su 12 bit (fino a 0080h - GPR del Bank0) oppure superiore a 0F80h (SFR nella seconda metà del Banco 15).
Quando si accede a locazioni nell' area 0000h-007Fh o 0F80h-0FFFh, il contenuto di BSR è ignorato.
Si intende che per sfruttare l' automatismo sarà necessario utilizzare non i valori assoluti, ma le label indicative sia dei GPR che degli SFR.

 

 

Non so se questo si possa applicare anche al tuo PIC.

Link al commento
Condividi su altri siti

Perchè io ho MPLAB X v6.15 con installato il pic-as v2.41 che è diverso da MPASM e dove non si usa più cblock.

Per l'uso dei registri FSR0 e FSR1 può esserti utile questo esempio.

Ciao

 

 

 

 

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...