micro control adores

60
Microcontroladores Objetivo Desarrollar la capacidad de diseñar y construir sistemas electrónicos basados en microcontrolador

Upload: checo-rock

Post on 04-Nov-2015

220 views

Category:

Documents


2 download

DESCRIPTION

micros

TRANSCRIPT

Microcontroladores

MicrocontroladoresObjetivoDesarrollar la capacidad de disear y construir sistemas electrnicos basados en microcontroladorConceptos y caractersticas de los microcontroladores1.1 El microcontrolador1.2 Arquitectura Interna1.3 Organizacin de Memoria1.4 Software de DesarrolloDiferencias entre microprocesador y MicrocontroladorMicroprocesadorMicrocontrolador

Cache: Memoria de acceso rapido4Fabricantes de Microcontroladores

ARM Cortex-M0ARM Cortex-M0+ARM Cortex-M3ARM Cortex-M4"8/16-bit" applications"8/16-bit" applications"16/32-bit" applications"32-bit/DSC" applicationsLow cost and simplicityLow cost, best energy-efficiencyPerformance, general purposeEfficient digital signal control

Qu se necesita para iniciar?

Suites de Desarrollohttps://www.keil.com/download/product/Qu se necesita para iniciar?Tarjeta de desarrollo

32F401CDISCOVERY

Entorno de Desarrollo Integrado(IDE)

Instalar los Packs del microcontrolador

Si no aparece Keil::STM32F4xx_DFP descargarlo de http://www.keil.com/dd2/pack/

Tarjeta de DesarrolloTarjeta de Desarrollo

El microcontrolador

Diagrama de desarrollo

Descripcin GeneralTipo de ProcesadorProcesadores ARM Cortex -M

32 bits (Registros, bus de datos y direcciones)RISC (Computadores con un conjunto de instrucciones reducido)Pueden manejar datos de 8 y 16 bitsSoportan un nmero de operaciones relativa a los datos de 64 bits (multiplicacin, acumulacin)

Microarquitectura : Detalles especificaos de implementacin34ArquitecturaArquitecturaSet de Instrucciones de la Arquitectura (ISA)El modelo de programacin (lo que ve el software)La metodologa de depuracin (lo que ve el depurador)

Micro-arquitecturaSeales de interfaceTiempo de ejecucin de instruccionesPipeline

Los procesadores Cortex-M3 y Cortex-M4 estn basados en la arquitectura ARMv7-MPara utilizar un microcontrolador en aplicaciones tpicas, no hay necesidad de tener un conocimiento detallado de esta arquitectura. Slo es necesario: conocimiento bsico del modelo del programador, cmo se manejan las excepciones (como las interrupciones), el mapa de memoria, la forma de utilizar los perifricos, y cmo utilizar los archivos de la biblioteca de controladores de software de los vendedores de microcontroladores.

35Grupo de InstruccionesEl conjunto de instrucciones es llamado Thumb Los procesadores Cortex-M3 y Cortex-M4 incorporan Thumb-2 que permite la mezcla de instrucciones de 16 y 32 bits

Codigo ARM: todas las instrucciones, con todas las opciones ytodos los modos de direccionamientoCodigo Thumb: instrucciones de 16 bits mas compactas.Objetivo: programas mas cortosProblema: NO cabe lo mismo que en 32 bits, programas mas lentos36ADD{S} {Rd,}Rn,

MOV{s} Rd,

LDR R3, [R5, #14]!

B Aritmtico-LgicasFuentes en registro o valoresDestino siempre en registroMovimiento entre registrosFuentes en registro o valoresAcceso a memoriaSolo con instrucciones LOAD y STOREControlSaltoLas llaves indican opcional, luego esto describe al menos dosoperaciones: ADD y ADDS

Con la S se actualizan flags : Negativo, Zero, Carry, oVerflow. Ejecucion condicional basada en flags actuales.El registro destino es Rd, si no esta, Rn es fuente y destino puede ser: Valor inmediato Registro Registro sobre el que se hace una operacion de desplazamiento37

Modelo de ProgramacinExisten dos estados y dos modos de operacin.Estados de operacinDepuracin (Debug)ThumbModos de operacinHandlerThread

El modo de controlador: Cuando se ejecuta un controlador de excepciones, como una rutina de servicio de interrupcin (ISR). En el modo de controlador, el procesador siempre tiene el nivel de acceso privilegiado. El modo hilo: Cuando se ejecuta el cdigo de aplicacin normal, el procesador puede ser tanto en el nivel de acceso privilegiado o nivel de acceso sin privilegios. Esto es controlado por un registro especial que se llama "CONTROL". 39La forma de programar un microcontrolador es a travs de registros localizados en ciertos segmentos de la memoria. Cada registro tiene una funcin especial y una forma de ser configurado. Por ejemplo el registro TRISx del PIC18f4550 configura los puertos como entrada o salida, en el caso del microcontrolador STM32f401VC esto se logra con el registro GPIOx_MODER.

Los bits de los registros estn conectados a los circuitos internos del microcontrolador tales como temporizadores, convertidores A/D, osciladores entre otros. Esto significa que directamente manejan el funcionamiento de estos circuitos, o sea del microcontrolador. Imagnese ocho interruptores que manejan el funcionamiento de un circuito pequeo dentro del microcontrolador. Los registros SFR hacen exactamente lo mismo.

El estado de los bits de registros se fija dentro de programa, los registros SFR dirigen los pequeos circuitos dentro del microcontrolador, estos circuitos se conectan por los pines del microcontrolador a un dispositivo perifrico utilizado para lo que usted quiera. RegistrosEl banco de registros se compone de 16 registros13 de propsito general3 de funciones especiales

LR retener la direccin cuando una subrutina es llamadaPC direccin la instruccin actual41Mapa de MemoriaDireccinPerifrico0x4001 4400 - 0x4001 47FF TIM10 0x4001 4000 - 0x4001 43FF TIM9 0x4001 3C00 - 0x4001 3FFF EXTI 0x4001 3800 - 0x4001 3BFF SYSCFG 0x4001 3400 - 0x4001 37FF SPI40x4001 3000 - 0x4001 33FF SPI10x4001 2C00 - 0x4001 2FFF SDIO 0x4001 2000 - 0x4001 23FF ADC10x4001 1400 - 0x4001 17FF USART60x4001 1000 - 0x4001 13FF USART10x4001 0000 - 0x4001 03FF TIM1 0x4000 7000 - 0x4000 73FF PWR0x4000 5C00 - 0x4000 5FFF I2C3DireccinPerifrico0x5000 0000 - 0x5003 FFFF USB OTG FS 0x4002 6400 - 0x4002 67FF DMA2 0x4002 6000 - 0x4002 63FF DMA10x4002 3C00 - 0x4002 3FFF Flash interface register 0x4002 3800 - 0x4002 3BFF RCC 0x4002 3000 - 0x4002 33FF CRC 0x4002 1C00 - 0x4002 1FFF GPIOH0x4002 1000 - 0x4002 13FF GPIOE0x4002 0C00 - 0x4002 0FFF GPIOD0x4002 0800 - 0x4002 0BFF GPIOC0x4002 0400 - 0x4002 07FF GPIOB0x4002 0000 - 0x4002 03FF GPIOA0x4001 4800 - 0x4001 4BFF TIM11DireccinPerifrico0x4000 5800 - 0x4000 5BFF I2C2 0x4000 5400 - 0x4000 57FF I2C10x4000 4400 - 0x4000 47FF USART2 0x4000 4000 - 0x4000 43FF I2S3ext0x4000 3C00 - 0x4000 3FFF SPI3 / I2S30x4000 3800 - 0x4000 3BFF SPI2 / I2S20x4000 3400 - 0x4000 37FF I2S2ext0x4000 3000 - 0x4000 33FF IWDG 0x4000 2C00 - 0x4000 2FFF WWDG 0x4000 2800 - 0x4000 2BFF RTC & BKP Registers 0x4000 0C00 - 0x4000 0FFF TIM50x4000 0800 - 0x4000 0BFF TIM40x4000 0400 - 0x4000 07FF TIM30x4000 0000 - 0x4000 03FF TIM2Puertos de Entrada/Salida de propsito General (GPIO)Caractersticas ElctricasParmetroPIC18F4550STM32F401VCMxima corriente de sumidero para cualquier puerto de I/O25mA25mAMxima corriente de fuente para cualquier puerto de I/O25mA25mAMxima corriente de sumidero para todos los puertos de I/O200mA120mAMxima corriente de fuente para todos los puertos de I/O200mA120mARegistros4 registros de configuracinGPIOx_MODERGPIOx_OTYPERGPIOx_OSPEEDRGPIOx_PUPDR2 registros de datosGPIOx_IDRGPIOx_ODR1 registro de set/resetGPIOx_BSRR1 registro de bloqueoGPIOx_LCKR2 registros de seleccin de funciones alternasGPIOx_AFRHGPIOx_AFRLNota: Adems de estos registros se deber de utilizar el Registro RCC_AHB1ENR para habilitar el reloj en cada puertoReference Manual45Registro de re-inicializacin y control de reloj(RCC) Tres tipos de re-inicializacin()SistemaAlimentacinDe Reserva

Tres fuentes de relojOscilador HSI Oscilador HSEPLL21 RegistrosPag 9946Registro de habilitacin de reloj de perifricos (RCC_AHB1ENR)

Set and cleared by software.0: clock disabled1: clock enabledAddress offset: 0x30Reset value: 0x0000 0000Pag 11447Registros de configuracin de puertos Registro de modo (GPIOx_MODER)Address offset: 0x00Valor despus de reset 0x0C00 0000 for port A 0x0000 0280 for port B 0x0000 0000 for other ports

MODERy[1:0]: Port x configuration bits (y = 0..15)These bits are written by software to configure the I/O direction mode.00: Input (reset state)01: General purpose output mode10: Alternate function mode11: Analog modeRegistro de tipo de salida (GPIOx_OTYPER)

Bits 31:16 Reserved, must be kept at reset value.Bits 15:0 OTy: Port x configuration bits (y = 0..15)These bits are written by software to configure the output type of the I/O port.0: Output push-pull (reset state)1: Output open-drainAddress offset: 0x04Reset value: 0x0000 0000Registro de velocidad de salida (GPIOx_OSPEEDR)

Address offset: 0x08Reset values: 0x0C00 0000 for port A 0x0000 00C0 for port B 0x0000 0000 for other portsOSPEEDRy[1:0]: Port x configuration bits (y = 0..15)These bits are written by software to configure the I/O output speed.00: Low speed01: Medium speed10: Fast speed11: High speedRegistro pull-up/pull-down (GPIOx_PUPDR)

PUPDRy[1:0]: Port x configuration bits (y = 0..15)These bits are written by software to configure the I/O pull-up or pull-down00: No pull-up, pull-down01: Pull-up10: Pull-down11: ReservedAddress offset: 0x0CReset values: 0x6400 0000 for port A 0x0000 0100 for port B 0x0000 0000 for other portsRegistros de Datos de puertos Registro de datos de entrada (GPIOx_IDR)

Address offset: 0x10Reset value: 0x0000 XXXX (where X means undefined)IDRy: Port input data (y = 0..15)These bits are read-only and can be accessed in word mode only. They contain the input value of the corresponding I/O portRegistro de datos de salida (GPIOx_ODR)

Address offset: 0x14Reset value: 0x0000 0000ODRy: Port output data (y = 0..15)These bits can be read and written by software.Practica 1Encender todos los LEDs de la tarjeta de evaluacinInstrucciones a Utilizar

MOV32MOVSTR

Instrucciones LDR cargar un registro con un valor de la memoria. Instrucciones STR almacenan un valor de registro en la memoria.56

Qu perifricos se utilizan?Qu registros se utilizan?Cul es la direccin de cada registro?Qu valor debe tener cada registro?

PerifricoDireccin

RegistroOffsetValorGPIOA0x4002 0000 GPIOA_MODER0x000x0C00 0000GPIOA_PUPDR0x0C0x6400 0000GPIOA_IDR0x10Slo LecturaGPIOD0x4002 0C00 GPIOD_MODER0x000x5500 0000RCC0x4002 3800 RCC_AHB1ENR0x300x0000 0009

Qu funciones se pueden utilizar?Cul es la sintaxis de las funciones?

MOV y MOVNCopia y mueve; Copia, invierte bit a bit y mueveS sufijocondcondicinRdregistro destinoOperand2es un registro o una constante#inm16cualquier nmero de 0 -65535

MOV{S}{cond} Rd, Operand2MOV{cond} Rd, #imm16MVN{S}{cond} Rd, Operand2

MOV y MOVNCopia y mueve; Copia, Invierte bit a bit y mueveEjemplos

MOVS R11, #0x000B ; write value of 0x000B to R11, flags get updatedMOV R1, #0xFA05 ; write value of 0xFA05 to R1, flags not updatedMOVS R10, R12 ; write value in R12 to R10, flags get updated

MOV R3, #23 ; write value of 23 to R3MOV R8, SP ; write value of stack pointer to R8MVNS R2, #0xF ; write value of 0xFFFFFFF0 (bitwise inverse of 0xF) to the R2 and update flags

LDR y STRCarga uno o dos registros con un valor de la memoria. Almacena el valor de uno o dos registros en la memoria. op{type}{cond} Rt, [Rn {, #offset}]op{type}{cond} Rt, [Rn, #offset]! op{type}{cond} Rt, [Rn], #offsetopD{cond} Rt, Rt2, [Rn {, #offset}] opD{cond} Rt, Rt2, [Rn, #offset]!opD{cond} Rt, Rt2, [Rn], #offsetop: LDR o STRtype: B unsigned Byte SB signed Byte H unsigned Halfword SH signed HalfwordRt Registro load or store.Rn Registro baseoffset DesplazamientoRt2 Registro adicionalLDR y STRCargar uno o dos registros con un valor de la memoria. Almacena uno o dos valores de registro en la memoria. Ejemplos

LDR R8, [R10] ; loads R8 from the address in R10.LDRNE R2, [R5, #960]!; loads (conditionally) R2 from a word 960 bytes above the address in R5, and increments R5 by 960.STR R2, [R9,#const-struc]; const-struc is an expression evaluating to a constant in the range 0-4095.STRH R3, [R4], #4; Store R3 as halfword data into address in R4, then increment R4 by 4LDRD R8, R9, [R3, #0x20]; Load R8 from a word 32 bytes above the address in R3, and load R9 from a word 36 bytes above the address in R3STRD R0, R1, [R8], #-16; Store R0 to address in R8, and store R1 to a word 4 bytes above the address in R8; and then decrement R8 by 16.

Practica 2Encender de manera secuencial los LEDs de la tarjeta de Evaluacin.Apagar los LEDs al presionar el botn de usuario de la tarjeta.Volver a encender de manera secuencial los LEDs.Instrucciones adicionales

BCBNZLDRSTR

Instrucciones LDR cargar un registro con un valor de la memoria. Instrucciones STR almacenan un valor de registro en la memoria.64PerifricoDireccin

RegistroOffsetValorGPIOA0x4002 0000 GPIOA_MODER0x000x0C00 0000GPIOA_PUPDR0x0C0x6400 0000GPIOA_IDR0x10Slo LecturaGPIOD0x4002 0C00 GPIOD_MODER0x000x5500 0000RCC0x4002 3800 RCC_AHB1ENR0x300x0000 0009B, BL, BX, and BLXInstrucciones de salto B{cond} labelBL{cond} labelBX{cond} RmBLX{cond} RmSufijoBanderaSignificadoEQZ=1IgualNEZ=0No igualCS o HSC=1Mayor o igualCC o LOC=0MenorMIN=1NegativoPLN=0Positivo o ceroVSV=1SobreflujoVCV=0No sobreflujoCortex M4 Generic User Guide pag. 66-67Cdigo CondicionalB, BL, BX, and BLXInstrucciones de salto. Ejemplos

B loopA ; Branch to loopABLE ng ; Conditionally branch to label ngB.W target ; Branch to target within 16MB rangeBEQ target ; Conditionally branch to targetBEQ.W target ; Conditionally branch to target within 1MBBL funC ; Branch with link (Call) to function funC, return address; stored in LRBX LR ; Return from function callBXNE R0 ; Conditionally branch to address stored in R0BLX R0 ; Branch with link and exchange (Call) to a address stored; in R0.CBZ y CBNZCompara y salta si es cero, Compara y salta si no es ceroCBZ Rn, labelCBNZ Rn, label

Rn es el registro que se comparalabel es el destino del saltoEjemploCBZ R5, target ; Forward branch if R5 is zeroCBNZ R0, target ; Forward branch if R0 is not zeroEl destino del salto debe estar dentro de 4-130 bytes despus de la instruccin y en el mismo estado de ejecucin.68RelojEl STM32f401 tiene tres fuentes de reloj que pueden ser utilizadas para manejar el reloj del sistema (SYSCLK):HSIHSEPLLTambin tiene dos fuentes de reloj secundario de baja velocidad:32 kHz (LSI RC)32.768 kHz (LSE crystal)Cada Reloj se puede apagar o encender de manera independiente para optimizar el consumo de potenciaDespus de un Restablecimiento del sistema (Reset), el oscilador HSI es seleccionado como reloj del sistema

Los bits del registro RCC_CR nos indican que relojes estn listos y que reloj se encuentra como reloj del sistema

Registro de control de reloj(RCC_CR)Address offset: 0x00Reset value: 0x0000 XX81

Pag 11471Ciclos MaquinaUn microcontrolador es un ordenador en miniatura, con su unidad de proceso, memoria, dispositivos y un juego de instrucciones propio de cada micro como hemos visto en clase.Cada instruccin tiene una funcin definida y se ejecuta en un tiempo determinadoPara determinar este tiempo se utiliza el trmino ciclo de mquina que se define como el tiempo mnimo necesario para ejecutar una instruccin y est formado por un nmero determinado de ciclos o periodos de relojPractica 3Agregar rutinas de retardo al programa anterior.Los leds deben ir prendiendo cada segundo.Despus de presionar el botn deber pasar medio segundo para comenzar de nueva la rutinaInstrucciones adicionales

BLBNEBXSUBS

Practica 4Hacer un corrimiento del led encendido en sentido horario, cuando llegue al final deber cambiar el sentido.Instrucciones adicionales

LSLLSR

74Lenguaje CPractica 4Mostrar la palabra HOLA en displays de 7segmentos y hacer que esta se desplace a la izquierda.Lenguaje C

77LCDNo. PinNombreFuncin1VssTierra2VddAlimentacin3VeeContraste4RSSelector de registroRS=0 ComandoRS=1 Carcter5R/WLeer/EscribirR/W=0 EscribeR/W=1 Lee6EHabilitar7D0Bit de dato 08D1Bit de dato 19D2Bit de dato 210D3Bit de dato 311D4Bit de dato 412D5Bit de dato 513D6Bit de dato 614D7Bit de dato 7

DDRAM (Data Display RAM)

Cada vez que se escribe un dato en la DDRAM automticamente se apunta a la siguiente posicinModos de FuncionamientoComando: El LCD recibe una instruccin por el bus de datos

Registro:El LCD recibe un carcter por el bus de datos

Modo Lectura: A travs del bit 7 del bus de datos el LCD informa si esta ocupado (bit 7=1)

Comandos de Control

Practica 5Mostrar los siguientes mensajes en el LCD:IPN ESIME-ZACLAB CDespus debern mostrar su nombre completo:COSME CISNEROSISMAEL GABRIEL

Observaciones:

Debern crear una librera que se llame LCD82