Newsgroup: it.hobby.elettronica.digitale
Titolo: Simulatore MPLAB IDE: che mistero!!!

Salve
La funzione Watch permette di visualizzare lo stato dei vari registri SFR
 tutto OK )
C'è però un problema: visualizzare le variabili utilizzate nel programma
Inserendo il nome della variabile che si vuole tenere sotto controllo non
viene visualizzato il suo stato ma lo stato della stessa locazione di
memoria presente pero' nell'area di programma
Perche'?
Come fare a risolvere?
Perche' la Microchip ha creato questa ambiguita' nell'allocare Ram e Flash
apparentemente allo stesso indirizzo?
Perchè tutto questo casino sulla paginazione?
Aiutatemi a risolvere il mistero
Grazie a tutti

 Aiutatemi a risolvere il mistero
Io non ci vedo misteri.
Hai provato a leggere un pò di documentazione (manuali ide, datasheet pic) 
prima di partire ?
C'è la risposta a molti tuoi quesiti.
Ciao, Roberto 

Usando il Tool di simulazione MPLAB SIM Versione 7.00 se intendo ad esempio
tenere sotto
controllo il comportamento della variabile Pippo che è allocata
all'indirizzo 0020 ( dell'area RAM ), se inserisco nella colonna Simbol Name
il nome della variabile Pippo viene visualizzato lo stato ( Address e
Value ) della locazione di memoria del programma che si trova all'indirizzo
0020 e non lo stato della variabile
Inserendo invece nella colonna Address l'indirizzo 0020 ( relativo alla mia
variabile Pippo ) riesco a visualizzare l'esatto valore della variabile
Pippo ma nella colonna Simbol Name non viene visualizzato Pippo ma 0x0020
Questo è confermato andando a visualizzare le proprietà delle voci
visualizzate nella finestra Watch: nel primo caso nel campo memoriy è
indicato Program mentre nel secondo caso è indicato File Register
Come fare a risolverla?
Come mai questa ambiguità di indirizzamento?
P.S. Ho provato anche con la versione 7.21 ma il risultato e' lo stesso
Grazie a tutti i vostri suggerimenti

Cosi' facendo si che visualizzi il valore della variabile ma non il suo nome
Riguardo alla mia affermazione relativa all'ambiguità che noto nei micro
della Microchip sta nel fatto che è da poco tempo che mi sto avvicinando a
questo mondo che ha invaso il mondo e, inoltre, io venego dal mondo Motorola
( es. 68HC908GP32 ) in cui ho sviluppato una buona esperienza e posso
garantire che queste ambiguitò di impaginazione e di locazione di ram e di
progrfamma non esistono
Ciao e grazie per i vostri preziosi suggerimenti

 progrfamma non esistono
Lavoro anche io con motorola.
Derei che in tutti i micro hai la possibilità di leggere locazioni di ram o
di rom (es. tabelle il rom), e c'è sempre un indirizzo zero sia di ram che
di rom.
L'apparente difficoltà aggiuntiva dei pic è che si è mantenuta la struttura
di memoria dei più piccoli pic12 che non disponendo di un indirizzamento in
bit sufficiente sono costretti a lavorare a pagine di memoria.
Con i recenti pic18 a 16bit, le possibilità di indirizzamento sono cresciute
ulteriormente.
Se si lavora con i linguaggi ad alto livello la gestione delle pagine e dei
banchi di memoria è fatta in automatico (anche se a volte non è molto
ottimizzata e porta ad occupare parecchie + risorse rispetto
all'assembler)..
Ciao, Roberto P.

 Come mai questa ambiguità di indirizzamento?
Mi viene il dubbio che stia usando un device (.inc) diverso da quello che
richiede il programma che magari riserva lo spazio per le variabili nel
formato fisso
pippo equ 0x20
In genere io utilizzo
CBLOCK 0x20
pippo:1
ENDC
che mi consente variazioni + rapide in caso di famiglia (pic12-pic16-pic18).
Che device stai usando?
In MPLAB->Configure->Select device è lo stesso ?
Il programma è scritto per quel device, o lo stai adattando ?
Ciao, Roberto P.

Quello che dici non e' del tutto esatto
Se verifichi il file.lst ti accorgerai che sui micro della Microchip le
variabili ( RAM ) sono ambiguamente collocate allo stesso indirizzo del
Programma
0020                  00073         org     0x20            ; Memoria
DEFINISCO LA RAM DEL BANCO 0
0020                  00086 Flag1       res    1    ; Vengono stati per
indicare gli stati della Batteria
0021                  00087 Step1mS     res    1 ; usato in interrupt per
conteggio passi da 1 mSec ( risol. 1mS )
0022                  00088 Step100mS   res    1 ; usato in interrupt per
conteggio passi da 100 mSec ( risol. 1mS )
0023                  00089 Step1S     res    1 ; usato in interrupt per
conteggio passi da 1 Sec ( risol. 100mS )
001E   0084           00190         movwf   FSR
001F   081A           00191         movf    RCREG,W         ; Carica in W il
byte del buffer hardware della usart
0020   00B2           00192         movwf   MemTemp         ; Salva W nella
variabile MemTemp
0021   3024           00195         movlw   BuffRx232               ; Carica
in W l'indirizzo della variabile PntBfRx232
0022   072C           00196         addwf   PntBfRx232,W    ; Addiziona in W
il valore della variabile PntBfRx232
0023   0084           00197         movwf   FSR
; Mette in F il valore di W

Anche se non si puo' essere mai troppo sicuri mi sembra di non commettere
errori
    PROCESSOR       16F876
   LIST   P=PIC16F876
 include "P16F876.INC"
  __CONFIG B'11100100111010'

 ha scritto nel messaggio 
news:01U0f.2124$Ik7....@twister2.libero.it...

Penso che il problema derivi dal fatto che usi la direttiva org in modo 
improprio.
Org definisce l'inizio per il codice programma seguente alla direttiva 
stessa e non per la memoria ram.
Io di solito gestisco cosě le variabili:
CBLOCK     0x20   ; Memoria DEFINISCO LA RAM DEL BANCO 0
  Flag1        ; Vengono stati per indicare gli stati della Batteria
  Step1mS  ; usato in interrupt per conteggio passi da 1 mSec ( risol. 1mS )
  Step100mS ; usato in interrupt per conteggio passi da 100 mSec ( risol. 
1mS )
  Step1S  ; usato in interrupt per conteggio passi da 1 Sec ( risol. 100mS )
ENDC
ORG nnnnn ; inizio programma

Salve
Ho fatto una rapida prova e mi pare che il tuo suggerimento sia proprio
Azzeccato
Voglio ancora capire il significato delle direttive che mi hai indicato
Provo a leggere l'Help e poi ti faccio sapere
Per ora comunque ti ringazio veramente dei preziosi suggerimenti
A proposito, ho pubblicato un messaggio in cui chiedo suggerimeti
sull'utilizzo del modulo I2C
Se hai consiglio o magari una parte di codice da propormi saresti davvero
Unico
Grazie