BIBLIOGRAFIA:
Programación de
SISTEMAS EMBEBIDOS EN C
Galeano Gustavo
Ed. Alfaomega.
OBJETIVO GENERAL DE LA ASIGNATURA
El alumno
aprenderá el funcionamiento de los sistemas electrónicos diseñados con base en
microcontroladores (embedded systems), orientados a la solución de aplicaciones
de automatización industrial, comunicaciones, instrumentación, robótica, redes
de telemetría, control supervisorio, RFID, y otras. Conocerá las diferentes
opciones existentes de componentes en el mercado de microcontroladores.
Obtendrá los conocimientos para programar los microcontroladores en lenguaje
ensamblador, y en lenguaje de alto nivel ANSI C y podrá desarrollar
aplicaciones para la solución de problemas específicos.
PASOS PARA INSTALAR MIKROC
2. INSTALAR EL COMPLEMETO PARA MIKROC
Temporizador con Timer0 – TMR0
El tiempo deseado en una temporización se debe calcular a partir de un ciclo de instrucción, este
puede variar dependiendo del Cristal con el que está trabajando nuestro
Micro, ya sea de 4Mhz el TX, el tiempo de ejecución de cada instrucción
es de 1 microsegundo para instrucciones sin salto.
Es necesario elegir también el valor del Divisor de Frecuencia o mejor llamado Prescaler (con los Bit’s PS2, PS1 y PS0). La ecuación que nos da la hoja de datos de los micros es la siguiente…
TMR0: es el valor con el cual empezara a contar nuestro TIMER, por ejemplo si lo iniciamos a 200 solamente se ejecutará 56 veces ya que al llegar al 256 se sobrecarga y se reinicializa a 0.
255: es el complemento, como se explicó en el punto anterior, el valor del TIMER depende de la resta con 255, porque solamente tomará valores de 0 a 255, porque nuestro ancho del TMR0 es de 8bits. Este punto es muy importante, este número de 255 no es para todos los micros, si el TMR de nuestro Micro es de 16 bits como en el caso del PIC18F4550 entonces puede sobrepasar el valor de 255 nuestro complemento es de 65535.
4/Fosc: Este nos dice que cada ciclo de instrucción se ejecuta cada 4 veces el tiempo de Oscilación. Tosc es el inverso de Fosc, entonces Tosc=1/Fosc Por eso muchos de nuestro publicadores solo ponen “Ciclo de instrucción”, nos olvidamos de donde obtenemos las ecuaciones y cuando la queremos implementar entro Micro no funcionan.
Si omitimos este parámetro, e implementamos otro Cristal “XT” por ejemplo 20Mhz, las fórmulas que ponen en muchas páginas ya no sirven.
Vemos un ejemplo…???
Supón que deseas una temporización de 50 ms (50 milisegundos), que estás trabajando con un XT de 4 Mhz, y que además seleccionaste como Divisor de frecuencia 256 (es decir PS2,PS1,PS0 = 1,1,1).
Pregunta… (como en el secundario…)
Cuál es el valor que se debe cargar en TMR0…???
Desglosemos la Ecuación principal:
Es necesario elegir también el valor del Divisor de Frecuencia o mejor llamado Prescaler (con los Bit’s PS2, PS1 y PS0). La ecuación que nos da la hoja de datos de los micros es la siguiente…
Temporización = (4 * (255-TMR0) * PreScaler)/Fosc
Temporización: es el tiempo que deseamos configurar nuestro Timer. Hay que tener en cuenta las limitantes de nuestro micro. Ya que muchas veces hemos deseado hacer un timer de 1 Segundo y esto no es posible.TMR0: es el valor con el cual empezara a contar nuestro TIMER, por ejemplo si lo iniciamos a 200 solamente se ejecutará 56 veces ya que al llegar al 256 se sobrecarga y se reinicializa a 0.
255: es el complemento, como se explicó en el punto anterior, el valor del TIMER depende de la resta con 255, porque solamente tomará valores de 0 a 255, porque nuestro ancho del TMR0 es de 8bits. Este punto es muy importante, este número de 255 no es para todos los micros, si el TMR de nuestro Micro es de 16 bits como en el caso del PIC18F4550 entonces puede sobrepasar el valor de 255 nuestro complemento es de 65535.
4/Fosc: Este nos dice que cada ciclo de instrucción se ejecuta cada 4 veces el tiempo de Oscilación. Tosc es el inverso de Fosc, entonces Tosc=1/Fosc Por eso muchos de nuestro publicadores solo ponen “Ciclo de instrucción”, nos olvidamos de donde obtenemos las ecuaciones y cuando la queremos implementar entro Micro no funcionan.
Si omitimos este parámetro, e implementamos otro Cristal “XT” por ejemplo 20Mhz, las fórmulas que ponen en muchas páginas ya no sirven.
Temporización = Ciclo de instrucción * (255-TMR0) * Divisor de Frecuencia
Nota: quede claro que esta es una sustitución de 4/Fosc por lo tanto
4/4Mhz = 1us.
Si omitimos estos parámetros ya no funciona nuestra ecuación.
PreScaler o PS: el prescaler es el divisor de frecuencia a la
cual queremos que cada ciclo de instrucción sea ejecutado. Ejemplo:
si una instrucción la ejecutamos con un cristal de 4Mhz en 1us y
configuramos el Prescaler a 8, entonces el tiempo será de 8us o ciclos
de instrucción.Vemos un ejemplo…???
Supón que deseas una temporización de 50 ms (50 milisegundos), que estás trabajando con un XT de 4 Mhz, y que además seleccionaste como Divisor de frecuencia 256 (es decir PS2,PS1,PS0 = 1,1,1).
Pregunta… (como en el secundario…)
Cuál es el valor que se debe cargar en TMR0…???
Desglosemos la Ecuación principal:
Temporización = (4 * (255-TMR0) * PreScaler)/Fosc
Sacamos el 4 para facilitar la ecuación entonces quedaría:
Temporización = ( (255-TMR0) * PreScaler)* 4 /4Mhz
Aquí es cuando podemos decir que el ciclo de instrucción es de 1us
Temporización = (255-TMR0) * PreScaler*1us
Entonces
Temporización / ( PreScaler * 1us) = 255-TMR0
Tengamos cuidado con los signos.
TMR0=255 – (Temporización / ( PreScaler * 1us))
Sustituyendo los valores deseados
TMR0 = 255 – (50ms / (256 * 1us))
TMR0= 255 – (50ms / 256us)
TMR0 = 255-195.31
TMR0 = 59.687
Aproximándonos a un valor cerrado…
TMR0 ~ 60
Empecemos la configuración
Configuramos el OPTION_REG
BANKSEL OPTION_REG
MOVLW B'00000000'
ANALICEMOS
BIT 7 Pull up PORTB Disable
BTI 6 interrupcion por flaco de subida en el INT Pin
BIT 5 fuente del clock para el TMR0, internal 1 ciclo ed intruccion (1/Fosc)
BIT 4 Flanco de bajada para el incremento del TMR0
BIT 3 Prescaler asignado al TMR0
BIT 2-0 Division del prescaler
Configuramos el INTCON
Registro donde activamos las interrupciones globales y la del TMR0
MOVLW B'10100000'
MOVWF OPTION_REG
BIT 7 Activamos las interrupciones Globales
BIT 6 interrupciones de otros perifericos desactivadas
BIT 5 Habilitamos la interrupcion por desborde en el TMR0
BIT 4 desabilitamos interrupcion externa INT
BIT 3 desabilitamos interrupcion por cambio en el PORTB
BIT 2 bandera interrupcion en TMR0
BIT 1 bandera interrupcion en INT
BIT 0 bandera interrupcion por cambio en PORTB
Modulo 2
programación con Arduino.
Características del Arduino.
Veamos las características y arquitectura del Atmega 328 micro controlador de la placa Arduino Uno.
Buenas tardes profesor,
ResponderEliminarPor favor puedes publicar la página que estabamos mirando la clase pasada donde está toda la teoría por favor.
Gracias
P.D. No me sirvió el crack
EliminarHola nataly, probe en un PC y el crack si me sirvio en version de 32 bits, mañana miramos haber que es lo que pasa.
EliminarSaludos.