2.2-1 Visión Interna PIC16F873/876.

II SBM

1

2.2-2 Visión Interna PIC16F874/877.

II SBM

2

2.2-3 Sistema de memoria.
? ?

Tienen arquitectura Harvard, separa la memoria de datos y la memoria de programa, y se accede a ellas mediante buses distintos. Al acceder mediante buses distintos el ancho de palabra de la memoria de datos y por tanto del bus de datos, puede ser distinto del ancho de palabra y el bus de memoria de programa. En los PIC16C87X:
1. 2. Ancho del bus y la memoria de datos 8bits. Ancho del bus y la memora de programa 14bits.

?

?

Las instrucciones presentan un formato que ocupa una única palabra de la memoria de programa. Cada posición de memoria de programa contiene un única instrucción.

II SBM

3

2.2-4 Mapa de memoria. Programa.

II SBM

4

2.2-5 Mapa de memoria para Datos en 16F877/876

II SBM

5

Mapa de memoria para Datos en 16F874/873

II SBM

6

2.2-6 Repertorio de instrucciones.
?

Hay 35 instrucciones. Estas instr. son de 14-bits de palabra, divididas en código de operación (OPCODE) y uno o más operandos. Las instrucciones pueden operar sobre bytes(GPR), bits(GPR) o constantes (literales). Todas las instrucciones se ejecutan en un ciclo de instrucción. Salvo las que las de condición y las que modifican el PC, que necesitan dos ciclos (NOP). El periodo de un ciclo de instrucción (Tcy) está formado por 4 periodos de la señal de reloj. (Si el reloj es de 4MHz-> Tcy=1microsegundo).
7

?

?

?

II SBM

Repertorio de instrucciones.

II SBM

8

Repertorio de instrucciones.

II SBM

9

Repertorio de instrucciones.

II SBM

10

Repertorio de instrucciones.

II SBM

11

Repertorio de instrucciones.

II SBM

12

Repertorio de instrucciones.

II SBM

13

Repertorio de instrucciones.

II SBM

14

Repertorio de instrucciones.

II SBM

15

Repertorio de instrucciones.

II SBM

16

Repertorio de instrucciones.

II SBM

17

Repertorio de instrucciones.

II SBM

18

2.2-7 Manejo de PC y pila.
?

El PC tiene 13 bits divididos en [PCH(5bits)|PCL(8bits)].
1. PCL puede leerse y escribirse. 2. PCH no se puede leer, pero se puede escribir a través de PCLATH. 3. Hay dos formas de cargar el PC:

?

Hay 8 niveles de pila.
1. 2. 3. 4. 5. 6. La zona de pila no es parte de memoria de datos ni programa y no se puede leer ni escribir por el usuario. El PC se aplia al ejecutar CALL o saltar a una interrupción. Se desapila al ejecutar RETURN, RETLW o RETFILE. El registro PCLATH no se ve afectado por el apliado y desapilado. La pila forma un buffer circular y no hay ninguna indicación de sobreescritura. No hay instrucciones PUSH y POP.

II SBM

19

2.2-8 Paginación de la memoria de programa.
? ? ?

Todos los PIC 16F87X pueden direccionar 8K de memoria de programa, correspondientes a los 13 bits del PC. Las instrucciones CALL y GOTO sólo suministran los 11 bits más bajos de la dirección de salto, permitiendo saltos dentro de una página. De 2K. Al ejecutar CALL y GOTO los 2 bits más altos del PC se cargan con los dos bits más latos de PCLATH(4:3). Cuando se ejecuta CALL y GOTO el usuario debe programar los bits PCLATH(4:3) para que el salto se realice a la página deseada. Al ejecutar CALL o saltar a una subrutina los 13bits del PC son apilados y no es necesario manipular los bits PCLATH(4:3) para volver de la subrutina. Además los valores de PCLATH(4:3) no se modifican.

?

?

II SBM

20

2.2-9 Direccionamiento directo/indirecto a memoria de datos.
? ? ? ?

El registro INF no existe físicamente. Direccionando el registro INF se produce un direccionamiento indirecto. En el direccionamiento indirecto la posición de memoria a la que se accede es la contenida en el registro FSR. Como las direcciones son de 9 bits junto con el FSR se concatena el bit IRP del registro STATUS[7].

II SBM

21

Direccionamiento directo/indirecto a memoria de datos.

II SBM

22

2.2-10 Ejecución de instrucciones.
? ? ? ? ?

La entrada de reloj del OSC1 se divide internamente en 4 para generar 4 relojes sin solapamiento en cuadratura. Q1, Q2, Q3 y Q4. Los cuatro ciclos Q1,Q2,Q3 y Q4 forman un ciclo de instrucción. El contador de programa se incrementa en Q1. Una vez incrementado PC, la instrucción se carga en el registro de instrucción desde la memoria de programa en Q4 (1 ciclo de instrucción). Una vez almacenada la instrucción se decodifica y se ejecuta durante los siguientes 4 periodos de la señal de reloj hasta el próximo Q4. (1 ciclo de instrucción).

II SBM

23

Ejecución de instrucciones.
?

La unidad de ejecución está segmentada en dos niveles:
1. 2. Pre-busqueda instrucciones. Decodificación/ejecución.

?

Todas las instrucciones se ejecutan en un ciclo de instrucción salvo las de salto.

II SBM

24

2.2-11 Puertos de Entrada/Salida. Puerto A.
?

El Puerto A tiene 6 bits y es bidirecional. La función (entrada/salida) correspondiente del Puerto A se indica con TRISA:
1. Con un ‘1’ en un bit de TRISA el pin correspondiente del puerto es de entrada. Con un ‘0’ en un bit de TRISA el pin correspondiente del puerto es de salida.

?

2.

?

Al leer de PORTA se lee el valor presente en el pin. Y escribiendo en PORTA se modifica el latch de datos. Las escrituras son read-modify-write.
25

II SBM

Puertos de Entrada/Salida. Puerto A.

II SBM

26

Puertos de Entrada/Salida. Puerto A.
? ?

Algunos registros están multiplexados entre pin de propósito general y funciones alternas. Cuando se utiliza un periférico el pin correspondiente no debe usarse como pin de propósito general.

II SBM

27

Puertos de Entrada/Salida. Puerto A.

II SBM

28

Puertos de Entrada/Salida. Puerto A.
?

La configuración de los pines del puerto A:

II SBM

29

2.2-12 Puertos de Entrada/Salida. Puerto B.
? ?

?

?

?

II SBM

El Puerto B tiene 8 bits y es bidirecional. Al igual que en el puerto A exite el registro TRISB para controlar la dirección. Cada pin del puerto B tiene un pull-up interno. La habilitación de todos ellos se realiza mediante el bit del registro OPTIO_REG<7> (#RBPU). El pull-up se deshabilita automáticamente cuando el puerto se programa como salida. Los bits más altos del puerto B <RB7:RB4>, cuando están configurados como entradas, pueden causar una interrupción por cambio del valor de entrada.Esta interrupción puede despertar al PIC del modo SLEEP. La condición de la interrupción se cancela leyendo el puerto (PORTB) y limpiando el flag RBIF.
30

Puertos de Entrada/Salida. Puerto B.

II SBM

31

Puertos de Entrada/Salida. Puerto B.
?

Los registros y la función de los pines del puerto B son:

II SBM

32

2.2-13 Puertos de Entrada/Salida. Puerto C.
? ?

?

El Puerto C tiene 8 bits y es bidirecional. Al igual que en los casos anteriores el puerto C tiene el registro TRISC para indicar el sentido de los datos (entrada o salida). Si se habilitan los periféricos correspondientes los bits del registro TRISC deben programarse de forma correspondiente.

II SBM

33

Puertos de Entrada/Salida. Puerto C.

II SBM

34

Puertos de Entrada/Salida. Puerto C.
?

La doble función de cada uno de los pines del puerto C es:.

II SBM

35

2.2-14 Puertos de Entrada/Salida. Puerto D.
? ? ?

El Puerto D tiene 8 bits y es bidirecional. Contiene el registro de configuración TRISD. Puede configurarse como puerto de I/O o como puerto esclavo paralelo PSP, mediante el bit PSPMODE del registro TRISE (bit 4). En este último modo las entradas son TTL.

II SBM

36

Puertos de Entrada/Salida. Puerto D.
?

La función de cada uno de los pines del puerto D es:.

II SBM

37

2.2-15 Puertos de Entrada/Salida. Puerto E.
? ? ?

?

El Puerto E tiene 3 bits y es bidirecional. Se puede controlar la dirección con TRISE. Pueden ser entradas analógicas configuración del registro ADCON1. Deben configurarse como entradas. Pueden actuar como pines de control del PSP, activado mediante PSPMODE en TRISE. En este caso deben ser entradas digitales.

II SBM

38

Puertos de Entrada/Salida. Puerto E.
?

La función de cada uno de los pines del puerto E es:.

II SBM

39

Puertos de Entrada/Salida. Puerto E.
?

El registro de control del puerto E es:

II SBM

40

Puertos de Entrada/Salida. Puerto E.

II SBM

41

Puertos de Entrada/Salida. Puerto E.
?

?

?

?

II SBM

Si e activa el bit PSPMODE (TRSIE<4>), el puerto D es de entrada salida de datos. El puerto E actúa como pines de control. Activados externamente por el maestro de la comunicación. Existen los pines de lectura RD, escritura WR y habilitación CS. El bit IBF se activa al escribir el maestro y se desactiva al leerlo el programa. De forma inversa funciona OBF.También existe bit de sobreescritura IBOV. Puede producir interrupción, mediante el bit PSPIF del registro PIR1 que despierta al micro.
42

Puertos de Entrada/Salida. Puerto E.

II SBM

43

Puertos de Entrada/Salida. Puerto E.

II SBM

44

2.2-16 Acceso a memoria EEPROM.
? ? ? ?

La memoria EEPROM, puede ser de 128bytes (74/73) o 256bytes (77/76) Se utiliza para almacenar datos con ancho de palabra de 8bits. Se puede leer y escribir en ella sin parar el funcionamiento de la CPU. Utiliza los registros:
1. 2. 3. EEADR: dirección de memoria a la que se va a acceder. (se usan 7bits más bajos en 128bytes o 8 bits en 256bytes). EEDATA:registro donde se escribe el dato o donde se lee el dato. EECON1 registro de control, EECON2 ( no implementado físicamente se utiliza en la secuencia segura de escritura).

II SBM

45

Acceso a memoria EEPROM.

II SBM

46

Acceso a memoria EEPROM.
?

En la lectura de la EEPROM de datos hay que realizar la siguiente secuencia:
1. 2. 3. 4. Escribir la dirección en EEDADR. Limpiar el bit EEPGD para indicar lectura de EEPROM de datos. Activar RD. No hay que esperar, la lectura se realiza en un ciclo de instr. Leer el dato de EEDATA, el bit RD se limpia por hardware al cargar EEDATA.

II SBM

47

Acceso a memoria EEPROM.
?

En la escritura de la EEPROM se realiza la siguiente secuencia:
1. 2. 3. 4. 5. 6. 7. Comprobar el bit WR por si hay alguna escritura en curso. Escribir la dirección en EEDADR. Escribir el dato en EEDATA. Limpiar el bit EEPGD para indicar lectura de EEPROM de datos. Activar el bit WREN, para habilitar la escritura. Desactivar las interrupciones. Ejecutar las siguientes 5 instrucciones: 1. Escribir 55h en W y luego pasarlo a EECON2 2. Escribir Aah en W y luego pasarlo a EECON2 3. Activar WR. 8. Habilitar las interrupciones. 9. Limpiar WREN. 10. Cuando termina el ciclo WR se limpia por hardware y el bit de indicación de interrupción EEIF se activa. Si el paso 1 no se implementa habría que esperar hasta que se de esta condición, antes de volver a escribir.

II SBM

48

Acceso a memoria EEPROM.

II SBM

49

2.2-17 Acceso a memoria FLASH.
? ? ?

?

La memoria FLASH, memoria de programa, puede ser de 4kx14bits (74/73) o 8kx14bits (77/76) La memoria FLASH se puede utilizar también para almacenar datos, o se pueden cambiar parámetros, teniendo con un ancho de palabra de 14bits. Se puede leer sin parar el funcionamiento de la CPU, pero la escritura para la ejecución de instrucciones aunque sigue funcionando los periféricos y se guardan las peticiones de interrupción. Utiliza los registros:
1. 2. 3. (EEADRH:EEADR): dirección de memoria a la que se va a acceder. (se usan 12bits más bajos en 4Kx14bits o 13 bits en 8Kx14bits). (EEDATH:EEDATA): registro donde se escribe el dato (14 bits) o se lee. EECON1 registro de control, EECON2 ( no implementado físicamente se utiliza en la secuencia segura de escritura).

II SBM

50

Acceso a memoria FLASH.
?

La lectura de la FLASH es prácticamente igual a la de la EEPROM, salvo que es más lenta y hay que insertar dos NOP después de iniciar la lectura:
1. 2. 3. 4. 5. Escribir la dirección en EEADRH:EEADR. Limpiar el bit EEPGD para indicar lectura de EEPROM de datos. Activar RD. Insertar dos NOP de espera hasta que lo datos son leídos. Leer el dato de EEDATH:EEDATA, el bit RD se limpia por hardware.

II SBM

51

Acceso a memoria FLASH.
?

La secuencia de escritura es:
1. 2. 3. 4. 5. 6. Escribir la dirección en EEADRH:EEADR. Escribir el dato en EEDATH:EEDATA. Activar el bit EEPGD para indicar escritura de FLASH programa. Activar el bit WREN, para habilitar la escritura. Desactivar las interrupciones. Ejecutar las siguientes 5 instrucciones: 1. Escribir 55h en W y luego pasarlo a EECON2 2. Escribir Aah en W y luego pasarlo a EECON2 3. Activar WR. Ejecutar dos NOP para el tiempo de espera de la FLASH. Habilitar las interrupciones. Limpiar WREN.

7. 8. 9.

?

Cuando termina el ciclo WR se limpia por hardware y el bit de indicación de interrupción EEIF se activa. Para realizar otra escritura no es necesario esperar hasta que WR se desactive porque el micro no comienza a ejecutar inst hasta que el ciclo no se ha completado.

II SBM

52

Acceso a memoria FLASH.

II SBM

53

Acceso a memoria FLASH.
?

La escritura de la FLASH puede deshabilitarse completamente mediante el bit WRT. También existen dos bits para restringir la lectura externa de la FLASH, que permiten proteger el código estos bits son CP0,CP1. Al igual que WRT sólo se pueden activar y desactivar al programar el dispositivo.

?

II SBM

54

Sign up to vote on this title
UsefulNot useful