ancora sulla memoria del pic

Apr 23, 2007 5 Replies

scusate l'altra domanda sulla memoria del pic, nello specifico il



16f84 ma =E8 differente da quella che ho postato poco fa.. sto osservando la disposizione della memoria tratta dal sito di tanzilli, e c'=E8 lo schema di una memoria che va da 00H fino a FFH, ma la memoria non =E8 da 1KB?non dovrebbe quindi andare da 000H a 3FFH? Inoltre quando noi scriviamo il programma iniziamo con la classica ORG
00H, ma se osservo lo schema anzidetto vedo che all'indirizzo 00H =E8 scritto "indirect addr." e dall'indirizzo 01H in poi vi sono posizionati TMR0 e altri registri. Dove viene quindi memorizzato l'opcode del programma? Anche per gli interrupt, scriviamo l'istruzione ORG 04H, ma la routine completa di gestione dell'interrupt dove viene scritta? Grazie a chiunque mi far=E0 un p=F2 di chiarezza...:-)

Il 23 Apr 2007, 18:19, snipped-for-privacy@libero.it ha scritto:

Devi stare attento a non confondere la memoria Ram con la memoria flash, dove risiede il tuo codice.

Stefano

-------------------------------- Inviato via

formatting link

snipped-for-privacy@libero.it ha scritto:

Ciao! Come ti diceva giustamente Stefano, stai confondendo due tipi di memorie differenti: la memoria FLASH del programma è da 1K e va da 00h fino a

3FFh (se hai il Datasheet vedi la memoria a pagina 5; la locazione 00h è il vettore di reset (cioè praticamente da dove parte l'esecuzione dell'OPCODE quando il PIC viene alimentato), e 04h è il vettore di reset, cioè la locazione dove salta il PIC se riceve un segnale di interrupt di qualsiasi tipo). La memoria che contiene gli SFR (Special Function Register), cioè Indirect Addr., TMR0, PCL, STATUS, ecc... è memoria RAM (pagina 6 del DS).

La routine di interrupt la puoi scrivere dalla locazione 04h in poi, ma in questo caso devi ricordarti di inserire un goto prima di tale locazione al vero inizio del codice, ma normalmente nella locazione 04h viene fatto un goto ad una subroutine di gestione dell'interrupt. Praticamente dovresti fare una cosa del genere:

org 00h clrw ..... ..... goto PrgStart org 04h goto GestInt

PrgStart ; qui metti il tuo codice ...... ......

GestInt ; qui metti la routine di gestione dell'interrupt ; ed al termine: retfie

Eventualmente, se vuoi, dai una occhiata anche al corso che trovi qui:

formatting link
si riferisce ad un altro microcontroller (PIC16F818), ma magari ti chiarisce meglio i dubbi!

Spero di averti aiutato!

Ciao! Stefano

Stefano (Lemming)

puoi darmi qualche dritta in pi=F9 per favore?

Il 24 Apr 2007, 19:42, snipped-for-privacy@libero.it ha scritto:

L'altro Stefano ti ha risposto in maniera più precisa, in ogni caso visto che hai citato il sito di Tanzilli, avrai visto che sul sito c'è un link a " pic by example" un buon corso per cominciare a imparare i Pic, leggilo e vedrai che non sarà tempo perso.

Stefano

-------------------------------- Inviato via

formatting link

grazie ad entrambi,siete stati molto gentili!

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required