Professional Documents
Culture Documents
push
pop
Orologio (interrupt)
nel main si mette “call init_COM1” ad esempio, questa è una chiamata a questa
procedura:
Slide 20 e 19 del pacco “comunicazioni seriali” per vedere come si legge o si scrive su
una porta seriale a polling. Slide 21 e 22 per la gestione delle seriali ad interrupt.
Interfaccia seriale:8250
Come trovare l’interrupt type e cercare cosa contiene: si sceglie con cosa
programmare ICW2(che deve essere un multiplo di 8 poiché gli interrupt possibili in
ogni PIC sono otto e devono essere tutti configurati con lo stesso ICW2), quello ti dà
l’interrupt type, si
moltiplica per
quattro,poiché ogni cella
contiene 4 byte, dentro
la cella del valore
moltiplicato troviamo un
indirizzo in cui è
contenuta la procedura.
Supponiamo che la
tabella dei task(che
contiene quindi le
procedure si trovi subito
dopo la IVT) .
Vogliamo chiamare la procedura contenuta dentro un certo indirizzo della task table
allora dobbiamo fornire l’inizio della tasktable che chiameremo tasktable e un indice
che ci dica quale procedura prendere, bisognerà utilizzare questo codice:
Parte software:
;DICHIARAZIONE VARIABILI
------
main:
;INIZIALIZZAZIONE PERIFERICHE
;INIZIALIZZAZIONE VARIABILI E QUANT'ALTRO
;SISTEMAGGIO DI TUTTA LA ROBA CHE DEV'ESSERE FATTA SOLO UNA VOLTA
ALL'ACCENSIONE DEL SISTEMA
mainloop: ;loop infinito, pezzo principale del programma
-----
----
;programma vero e proprio
-----
-----
J mainloop: ;ripeto all'infinito
;la roba che scrivi qui non verrà mai fatta a meno che non fai delle jump strane ma non si fa
di solito perchè se passi di qua il programma termina e si blocca e non fa più niente anzi
rischi che si impalli mezzo mondo
;PROCEDURE
PROC pippo1
-----
ENDP
PROC pippo2
-----
ENDP
;ROUTINE DI INTERRUPT
INT_bo1
-----
RFE
INT_bo2
-----
RFE
ecc..
Isa dell’MSP430
Jump:
6 0110 6 2³⁰=1GB
7 0111 7 2³²=4GB
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F