You are currently browsing the vloox posts tagged: freescale


Manejo de puertos de E/S – Parte 3

En el post anterior vimos como controlar un LED y un switch en lenguaje assembler. Ahora veremos como hacerlo en C. Los detalles básicos del programa pueden encontrarse acá.

Primero creamos una función que genere un retardo de aproximadamente 100ms. El código es el siguiente:

 C |  copy code |? 
01
void delay_100us(void) { //Retardo de aprox. 100ms                     
02
char cont;                     
03
cont=20;                     
04
 
05
asm {                      
06
 
07
loop:      nop            //1 ciclo                     
08
           nop                     
09
           nop                     
10
           nop                     
11
           dbnz cont,loop //7 ciclos                       
12
}

Continue reading →

Manejo de puertos de E/S – Parte 2

 

En este nuevo ejemplo aprenderemos a configurar el reloj interno del microcontrolador y a seguir aplicando lo que aprendimos en el post anterior.

Configuraremos el microcontrolador para que cuando presionemos un pulsador se encienda y apague un LED a una velocidad de aproximadamente 300ms, y que deje de parpadear luego de soltarlo.

Utilizaremos el reloj interno del micro, por lo que no hace falta agregar ningún oscilador externo. Por default, el reloj está funcionando a 32Mhz y la frecuencia de reloj del bus a 8Mhz. Para modificarlo debemos configurar el registro ICSC1(Internal Clock Source Control Register 1). Este es un registro de 8 bits y en la siguiente imagen se puede ver su estructura. Continue reading →

Manejo de puertos de E/S – Parte 1

En este primer ejemplo todavía no vamos a usar ningún micro, sino que utilizaremos el simulador que trae el Codewarrior para probar nuestro programa.

El objetivo de este ejemplo es aprender a configurar los puertos de entrada/salida del microcontrolador. El SH8 cuenta con tres puertos de 8 bits: El PTBD que se encuentra completo, mientras que PTAD y PTCD solamente poseen 6 y 4 bits respectivamente. Estos puertos son bidireccionales, lo que quiere decir que pueden configurarse como entrada o salida con tan solo escribir un 0 o un 1 en el registro PTxDD (Port Data Direction Register). En la siguiente imagen podemos observar la estructura del registro PTBDD. Continue reading →

Programación de microcontroladores Freescale


En esta nueva sección vamos a aprender a programar los microcontroladores Freescale (ex Motorola) de la familia HCS08. Primero nos centraremos en el micro S08SH8, ya que está disponible en un conveniente encapsulado PDIP de 20 pines. Entre las principales características se encuentran un CPU HCS08 de 40Mhz (Bus de 20Mhz), set de instrucciones compatible con la familia HC08, sistema de debugging BDM, 8K de FLASH, 512 bytes de RAM, ADC de 12 canales y 10 bits de resolución, comparador analógico, comunicaciones SCI, SPI e IIC, contador MTIM de 8 bits, timer TPM de dos canales con módulos PWM, timer RTC de 8 bits, 17 pins de entrada/salida y 1 pin sólo de salida, etc. Continue reading →