ancora sulla memoria del pic

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...:-)
Reply to
cuandovolveras
Loading thread data ...

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

Reply to
stefano delfiore

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)
Reply to
Stefano Martini

puoi darmi qualche dritta in pi=F9 per favore?

Reply to
cuandovolveras

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

Reply to
stefano delfiore

grazie ad entrambi,siete stati molto gentili!

Reply to
cuandovolveras

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.