Usuario:Jilgueroveloz/STM8

De Wikipedia, la enciclopedia libre
STM8S

STM8 es una familia de microcontroladores de 8 bits de la firma ST Microelectronics . Los microcontroladores STM8 son una variante extendida de la arquitectura del microcontrolador ST7 . Los STM8 se posicionan como microcontrolador de 8 bits con plenas funciones. [1]

Arquitectura[editar]

La arquitectura de la familia STM8 es similar al ST7, pero cuenta con un mejor rendimiento con compiladores de C, esto es por sus registros de índice de 16 bits y al modo de direccionamiento relativo a puntero de pila.

Aunque internamente sea una arquitectura Harvard, tiene un espacio de direcciones unificado de 24 bits, lo que permite que el código se ejecute fuera de la RAM (útil para la programación en sistema de la ROM flash ) y se acceda a los datos (como tablas de búsqueda) desde la ROM. El acceso a datos por encima de 64Kb está limitado a instrucciones especiales de "carga lejana"; la mayoría de los operandos de memoria de las operaciones pueden acceder como máximo a 128 K (una dirección base de 16 bits más un desplazamiento de 16 bits).

Su tamaño de memoria de datos más frecuente es 64 kb, pero hay algunos que modelos que superan este capacidad.

Al igual que el ST7 cuenta con seis registros (A, X, Y, SP, PC, CC),  los registros de índice X e Y han sido aumentados hasta 16 bits y el contador de programa se amplió hasta los 24 bits. El acumulador A y el puntero de la pila siguen con sus  8 y 16 bits habituales. [2]

El registro de código de condición tiene además dos bits más definidos, siendo en total siete bits. Hay un indicador de desbordamiento y un segundo bit de activación de interrupción que permite hasta cuatro niveles de prioridad de interrupción.

Subfamilias[editar]

  • STM8AF automoción.
  • STM8AL automoción.de baja potencia
  • STM8L de baja potencia
  • STM8S de bajo coste
  • Detección táctil STM8T
  • Control de iluminación STLUX
  • Controladores de modulación de ancho de pulso STNRG

Compatibilidad con el compilador[editar]

STM8 tiene compatibilidad con el Compilador SDCC, también con Cosmic C aunque esta solución es de código cerrado es gratuito [3]​ Como soluciones de pago podemos encontrar IAR Embedded Workbench for STM8 y Raisonance.

Existe una solución llamada STM8 eForth Compiler and Assembly, disponible en GitHub bajo licencia del MIT, pudiendo combinarse Forth con C.

Cambios en comparación con ST7[editar]

El set de instrucciones STM8 es mayormente un superconjunto del ST7, pero no es completamente compatible con binario.

Las operaciones en los registros X e Y se amplían a 16 bits. Por lo tanto, las cargas y lo almacenado acceden a dos bytes de memoria en lugar de uno. (Además, la bandera de medio acarreo se ha cambiado para reflejar el acarreo del bit 7 al bit 8 del resultado de 16 bits, en lugar del acarreo del bit 3 al 4. )

Las interrupciones envían nueve bytes de estado en lugar de cinco en el ST7.

La instrucción de multiplicación almacena el producto de 16 bits en el registro de índice especificado (p. ej. X), en lugar de dividirlo entre X y A.

Se han eliminado los modos de direccionamiento indirecto que obtienen una dirección de 8 bits de la memoria (códigos de operación 92 2x, 92 3x, 92 Bx, 92 6x, 92 Ex, 91 6x y 91 Ex ); todos los modos de direccionamiento indirecto obtienen direcciones de 16 bits. Se ha agregado un nuevo byte de prefijo 72 y se usa para codificar indirectamente a partir de una dirección de 16 bits.

Las instrucciones de manipulación de bits se han cambiado para tomar una dirección de 16 bits y requerir el byte de prefijo 72 . Los códigos de operación sin prefijo 0x y 1x que ocupaban anteriormente se utilizan para el direccionamiento relativo del puntero de pila.

Se han cambiado los códigos de operación de algunas instrucciones de bifurcación que rara vez se usan para requerir un prefijo 90, y los códigos de operación sin prefijo se reasignaron a bifurcaciones firmadas que dependen de la bandera V.

Las instrucciones de carga y comparación dirigidas al registro X son de poca utilidad en el ST7 con modos de direccionamiento indexados por el registro X. En el STM8, cuando dichas operaciones especifican un operando de memoria indexado por el registro X, el operando de registro se cambia a Y. Con un prefijo 90, los registros se invierten, de modo que el registro de índice es Y y el registro de operando es X.

Una diferencia importante en el rendimiento es que el STM8 obtiene 32 bits de la ROM por ciclo, y las instrucciones típicas tardan un ciclo en ejecutarse más un ciclo por acceso a la RAM. El ST7, por el contrario, obtiene 8 bits por ciclo y toma un ciclo por byte de instrucción.

Conjunto de instrucciones[editar]

Las instrucciones STM8 constan de un byte de prefijo opcional ( 72 16, 90 16, 91 16 o 92 16 ), un byte de código de operación y algunos (hasta cuatro, pero rara vez más de dos) bytes de operandos. Los bytes de prefijo modifican principalmente el modo de direccionamiento utilizado para especificar el operando de memoria, pero en algunos casos, los prefijos 72 y 90 realizan una operación completamente diferente.

El prefijo 90 intercambia X e Y en la siguiente instrucción. En la siguiente tabla, estas variantes se combinan en una línea escribiendo "X/Y", que significa "X" o "Y". El prefijo 90 también se usa en dos lugares para introducir nuevos códigos de operación: las instrucciones BCPL y BCCM, y algunas condiciones de bifurcación.

El prefijo 92 convierte las instrucciones con un operando desplazado ( addr16 ,X) a direccionamiento indirecto ([ addr8 ],X). El desplazamiento se reemplaza por la dirección de 8 bits de un valor de desplazamiento de 16 bits en la memoria. Se utiliza sólo para esta función.

El prefijo 91 tiene los dos efectos anteriores, convirtiendo los modos de direccionamiento ( addr16 ,X) a ([ addr8 ],Y).

El prefijo 72 se usa en varios lugares, en un patrón mucho menos regular. En algunos casos, introduce nuevos modos de direccionamiento (particularmente un ([ addr16 ],X) modo indirecto de 16 bits), pero también introduce muchas operaciones completamente nuevas.

Para las instrucciones CPW y LDW donde el modo de direccionamiento del operando está indexado por X, el STM8 usa el registro Y de forma predeterminada en lugar de X. Al aplicar un prefijo 90, se intercambian X e Y, por lo que el registro es X y el modo de direccionamiento está indexado por Y.

Referencias[editar]

  1. Carlson, Jay (September 15, 2017). «ST STM8». Consultado el 12 de junio de 2018. 
  2. «PM0044: STM8 CPU programming manual». STMicroelectronics. September 2011. Consultado el 10 de junio de 2018. 
  3. «COS-C-COMPILER - Free C Compiler for all STM8, from Cosmic». STMicroelectronics. Consultado el 24 March 2016. 

Enlaces externos[editar]

[[Categoría:Microcontroladores]] [[Categoría:Wikipedia:Páginas con traducciones sin revisar]]