miércoles, 30 de agosto de 2017

XiuaElectronics: Detección de voltaje Alto/Bajo (HLVD) PIC18XXXX

Detección de voltaje Alto/Bajo (HLVD) PIC18XXXX.


Que tal amigos?

En el día de hoy les traigo un muy interesante y poco conocido tema. En este caso voy a hablar sobre el modulo de detección de caída o subida de tensiones para la familia de PIC18FXXXX. Como tal voy a mostrar como funciona internamente, como se debe configurar y sus posibles aplicaciones.



HIGH/LOW-VOLTAGE DETECT (HLVD) || DETECCIÓN DE VOLTAJE ALTO/BAJO(HLVD).


Los dispositivos PIC18F2455/2550/4455/4550 disponen de un módulo de Detección de Alta/Baja Tensión (HLVD). Este es un circuito programable que permite al usuario especificar un punto de disparo del voltaje del dispositivo y la dirección de cambio desde ese punto. Si el dispositivo experimenta una excursión más allá del punto de disparo en esa dirección, se establece un indicador de interrupción. Si la interrupción está habilitada, la ejecución del programa se ramificará a la dirección del vector de interrupción y el software podrá entonces responder a la interrupción.

El registro de Control de Detección de Alta / Baja Tensión (Registro 24-1) controla completamente el funcionamiento del módulo HLVD. Esto permite que el circuito sea "apagado" por el usuario bajo control de software que minimiza el consumo de corriente para el dispositivo. El diagrama de bloques para el módulo HLVD se muestra en la Figura 24-1.

Registro HLVDCON:



Bit 7: VDIRMAG: Bit de selección de magnitud de dirección de voltaje.
         1 = El evento ocurre cuando el voltaje es igual o excede el punto de disparo (HLVDL3: HLDVL0).
         0 = El evento ocurre cuando el voltaje es igual o inferior al punto de disparo (HLVDL3: HLVDL0).

Bit 6: No implementado: Leer como '0'.

Bit 5: IRVST: Voltaje de referencia interno.
         1 = Indica que la lógica de detección de voltaje generará el indicador de interrupción en el rango de voltaje especificado.
         0 = Indica que la lógica de detección de voltaje no generará el indicador de interrupción en el rango de voltaje especificado y no se habilitará la interrupción HLVD.

Bit 4: HLVDEN: Bit de habilitación de potencia de detección de alta / baja tensión.
         1 = HLVDEN activado
         0 = HLVDEN desactivado

Bit 3-0: HLVDL3:HLVDL0: Bits límite de detección de tensión (1).
         1111 = Se utiliza una entrada analógica externa (la entrada proviene del pin HLVDIN).
         1110 = Ajuste máximo.
         ... Mirar tabla 28-6
         ... Mirar tabla 28-6
         ... Mirar tabla 28-6
         0000 = Ajuste mínimo.

En la siguiente tabla (Table 28-6) podremos observar como configurar los Bits 3-0 para el limite de detección del voltaje.


El módulo se habilita estableciendo el bit HLVDEN, es decir enviando un "1 lógico" al registro de configuración HLVDCON. Cada vez que el módulo HLVD está habilitado, los circuitos requieren algún tiempo para estabilizarse. El bit IRVST es un bit de sólo lectura y se utiliza para indicar cuándo el circuito es estable. El módulo sólo puede generar una interrupción después de que el circuito sea estable e IRVST esté ajustado.

El bit VDIRMAG determina el funcionamiento general del módulo. Cuando se borra VDIRMAG, el módulo supervisa las caídas en VDD por debajo de un punto de consigna predeterminado. Cuando el bit está ajustado, el módulo supervisa para subir en VDD por encima del punto de ajuste.

Cuando el módulo HLVD está habilitado, un comparador utiliza una tensión de referencia generada internamente como punto de consigna. El punto de ajuste se compara con el punto de disparo, donde cada nodo en el divisor de resistencia representa un voltaje de punto de disparo. El voltaje de "punto de disparo" es el nivel de tensión al que el dispositivo detecta un evento de alta o baja tensión, dependiendo de la configuración del módulo. Cuando la tensión de alimentación es igual al punto de disparo, la tensión extraída de la matriz de resistencia es igual a la tensión de referencia interna generada por el módulo de referencia de tensión. El comparador genera entonces una señal de interrupción ajustando el bit HLVDIF.

El voltaje de punto de disparo es programable por software para cualquiera de los 16 valores. El punto de disparo se selecciona mediante la programación de los bits HLVDL3: HLVDL0 (HLVDCON <3: 0="">).

El módulo HLVD tiene una característica adicional que permite al usuario suministrar el voltaje de disparo al módulo desde una fuente externa. Este modo se habilita cuando los bits, HLVDL3: HLVDL0, se establecen en '1111'. En este estado, la entrada del comparador se multiplexa desde el pin de entrada externo HLVDIN. Esto da a los usuarios flexibilidad porque les permite configurar la interrupción de Detección de Alta / Baja Tensión para que se produzca a cualquier voltaje en el rango de operación válido.

En la siguiente figura (Figure 24-1) veremos un bosquejo de como funciona internamente el modulo de detección de voltaje "HLVD" de la familia de PIC18FXXXX:



Bueno para resumir un poco lo anterior y tener un mejor entendimiento y también para aquellos que le es un poco difícil entender todo esto lo resumiré de la forma más simple posible. Este módulo lo que hace es detectarnos un voltaje, dependiendo de su configuración detectaremos cuando un voltaje disminuya o aumente, luego de detectar esta caída o aumento se activará una interrupción y  través de código lo que haremos es ejecutar una cierta orden. 
Este módulo tiene de interesante que puede ser utilizado en muchas aplicaciones. Afortunadamente podemos configurar el voltaje de disparo externamente, es decir, alimentando una entrada con "X" voltaje o internamente con la ayuda del voltaje de referencia interno. Anteriormente vimos los diferentes voltajes a los que podemos configurarlo (Table 28-6).

Pasos para su configuración:

Los siguientes pasos son necesarios para configurar el HLVD
módulo:

1) Desactive el módulo borrando el bit HLVDEN (HLVDCON <4>).
2) Escriba el valor en los bits HLVDL3: HLVDL0 que selecciona el punto de disparo HLVD deseado.
3) Ajuste el bit VDIRMAG para detectar alta tensión (VDIRMAG = 1) o baja tensión (VDIRMAG = 0).
4) Active el módulo HLVD estableciendo el bit HLVDEN.
5) Borre la bandera de interrupción HLVD, HLVDIF (PIR2 <2>), que puede haber sido establecida desde una interrupción anterior.
6) Habilite la interrupción HLVD, si se desean interrupciones, estableciendo los bits HLVDIE y GIE / GIEH (PIE2 <2> e INTCON <7>). No se generará una interrupción hasta que se establezca el bit IRVST.




Aplicaciones:



En muchas aplicaciones, es deseable la capacidad de detectar una caída por debajo o por encima de un umbral particular. Por ejemplo, el módulo HLVD podría habilitarse periódicamente para detectar la conexión o desacoplamiento de USB (Universal Serial Bus). Esto supone que el dispositivo está alimentado por una fuente de voltaje más baja que el USB cuando está desarmado. Una conexión indicaría una detección de alto voltaje de, por ejemplo, 3.3V a 5V (el voltaje en USB) y viceversa para una separación. Esta característica podría ahorrar un diseño algunos componentes adicionales y una señal de la conexión (perno de la entrada).


Para las aplicaciones generales de las baterías, la Figura 24-4 muestra una posible curva de voltaje. Con el tiempo, el voltaje del dispositivo disminuye. Cuando la tensión del dispositivo alcanza la tensión, VA, la lógica HLVD genera una interrupción en el tiempo, TA. La interrupción podría provocar la ejecución de un ISR, lo que permitiría a la aplicación llevar a cabo tareas de mantenimiento y realizar un apagado controlado antes de que el voltaje del dispositivo salga del rango de funcionamiento válido en TB. El HLVD, por lo tanto, daría a la aplicación una ventana de tiempo, representada por la diferencia entre TA y TB, para salir con seguridad.






Bien muchachos, esto es todo por hoy. Estén pendientes de mi canal, de mi blog y de mi pagina de Facebook para más contenido.

Facebook: https://www.facebook.com/electronicalibrexc/
Youtube:  http://www.youtube.com/c/breismanrueda
Google +: https://plus.google.com/u/0/+breismanrueda
Twitter: https://twitter.com/BreismamR

Esto es todo por hoy, Sigue mi blog y visita mi próxima entrada!

Cualquier duda, trabajo, tutoria personalizada por correo electrónico o pagina en facebook:
Correo: ElectronicaLibreXC@outlook.com
Facebook: https://www.facebook.com/electronicalibrexc/



Salu2...

Bien muchachos, esto es todo por hoy; estén pendiente en mi canal, o de mi blog o de mi pagina de 

sábado, 26 de agosto de 2017

XiuaElectronics: Memoria STACK en Microcontroladores PIC16F628A.

Memoria STACK en Microcontroladores PIC16F628A.


Que tal amigos?

En el día de hoy vamos a hablar de algo muy importante a la hora de programar microcontroladores PIC, en este caso me refiero a su memoria STACK. ¿Pero que es su memoria STACK? ¿Porqué es importante la memoria STACK?


Memoria STACK:

En los microcontroladores pic la memoria STACK, es una memoria interna dedicada, de un tamaño limitado dependiendo el microcontrolador, de diferentes niveles y distinta de las memorias dedicadas para el almacenamiento de datos y como tal del programa del microcontrolador. Esta memoria es inaccesible para el programador y esta organizada en forma de pila, y usualmente se utiliza de forma automática por el microcontrolador para guardar las direcciones de retorno de subrutinas e interrupciones. Cada posición es de 13 bits para el caso del pic16f628a, microcontrolador PIC utilizado en el curso Curso Proteus 8.5 + MPASM y PIC16F628A y permite guardar una copia completa del PC. Como en toda memoria tipo pila, los datos son accedidos de manera tal que el primero que entra es el ultimo que sale.


STACK PIC16F628A:


La familia PIC16F627A / 628A / 648A tiene una pila de hardware de 8 niveles de profundidad x 13 bits (Figura 4-1). El espacio de pila no forma parte del espacio de programa o de datos y el puntero de pila no es legible ni puede escribirse. El PC es PUSHed en la pila cuando se ejecuta una instrucción CALL o una interrupción causa una rama. La pila es POPed en el caso de una ejecución de la instrucción RETURN, RETLW o RETFIE. PCLATH no se ve afectado por una operación PUSH o POP.


Como ya se menciono anteriormente, el stack y el puntero interno que lo direcciona, son invisibles para el programador, solo se los accede automáticamente para guardar o rescatar las direcciones de programa cuando se ejecutan las instrucciones de llamada o retorno de subrutinas, o cuando se produce una interrupción o se ejecuta una instrucción de retorno de ella

La pila funciona como un amortiguador circular. Esto significa que después de que la pila ha sido PUSHed ocho veces, la novena PUSH sobrescribe el valor que fue almacenado desde el primer PUSH. El décimo PUSH sobrescribe el segundo PUSH (y así sucesivamente). 




Nota 1: No hay bits de estado para indicar el desbordamiento de la pila o las condiciones de desbordamiento de la pila.

Nota 2: No hay instrucciones / mnemónicos llamados PUSH o POP. Estas son acciones que ocurren desde la ejecución de las instrucciones CALL, RETURN, RETLW y RETFIE, o la vectorización a una dirección de interrupción.










Para tener en cuenta lo que hacen los niveles de profundidad del STACK es el permitir el anidamiento de subrutinas; por ejemplo para el PIC16f628A le es posible realizar 8 niveles de anidamiento de subrutinas que serían llamadas desde el programa principal.



Acá vemos como el programa principal llama a la primera subrutina "Subrutina1" y esta llama a "Subrutina2", así sucesivamente hasta las "Subrutina8". Pero si en la subrutina "Subrutina8" se intentara llamar a otra subrutina se desbordaría la capacidad del STACK, que solo puede almacenar ocho direcciones de retorno.

Esto de hecho representa una traba para el programador y además parece impedir o dificultar la programación estructurada, sin embargo es una buena solución de compromiso ya que estos microcontroladores están diseñados para aplicaciones de alta velocidad en tiempo real, en las que el overhead (demoras adicionales) que ocasiona un excesivo anidamiento de subrutinas es inaceptable. Por otra parte existen técnicas de organización del programa que permiten mantener la claridad de la programación estructurada, sin necesidad de utilizar tantas subrutinas anidadas.







Bien muchachos, esto es todo por hoy; estén pendiente en mi canal, o de mi blog o de mi pagina de Facebook.

Esto es todo por hoy, Sigue mi blog y visita mi próxima entrada!

Cualquier duda, trabajo, tutoria personalizada por correo electronico o pagina en facebook:



Salu2...

.

lunes, 26 de junio de 2017

XiuaElectronics:Curso Proteus 8.5 + MPASM y PIC16F628A

Curso Proteus 8.5 + MPASM y PIC16F628A #06: CCP1 como PWM, generando frecuencia+Led.


Que tal amigos?

En el día de hoy vamos a ver el sexto vídeo tutorial del curso con Proteus 8.5 y el compilador MPASM con el pic16f628a. Para esta clase veremos lo que concierne al modulo PWM del pic, y como configurarlo para trabajar a una determinada frecuencia.

Modo PWM pic16f628a:


En el modo de modulación de ancho de pulso (PWM), el pin CCP1 produce hasta una salida PWM de resolución de 10 bits. Dado que el pin CCP1 se multiplexa con el bloqueo de datos PORTB, se debe borrar el bit TRISB <3> para hacer que el pin CCP1 sea una salida.

NOTA: Al borrar el registro CCP1CON se forzará el bloqueo de salida PWM CCP1 al nivel bajo predeterminado. Este no es el pestillo de datos I / O de PORTB.

Una salida PWM (Figura 9-4) tiene una base de tiempo (período) y un tiempo que la salida permanece alta (ciclo de trabajo). La frecuencia del PWM es la inversa del período (frecuencia = 1 / período).

PWM Periodo:

El periodo PWM se especifica escribiendo en el registro PR2. El período PWM se puede calcular utilizando la siguiente fórmula:

PWM PERIOD= [(PR2)+1]*4*TOSC*TMR2PRESCALEVALUE

La frecuencia PWM se define como 1 / [PWM period].
Cuando TMR2 es igual a PR2, los siguientes tres eventos ocurren en el siguiente ciclo de incremento:
• TMR2 se borra
• El pin CCP1 está ajustado (excepción: si el PWM
Ciclo = 0%, el pin CCP1 no se ajustará)
• El ciclo de trabajo PWM está bloqueado desde CCPR1L en
CCPR1H

NOTA: El temporizador Timer2 (véase la Sección 8.0 "Módulo Timer2") no se utiliza en la determinación de la frecuencia PWM. El post-escalador se puede utilizar para tener una tasa de actualización de servo a una frecuencia diferente de la salida PWM.

PWM Duty Cycle:

El ciclo de trabajo PWM se especifica escribiendo en el registro CCPR1L y en los bits CCP1CON <5: 4="">. Se dispone de una resolución de hasta 10 bits: el CCPR1L contiene los ocho MSbs y el CCP1CON <5: 4=""> contiene los dos LSbs. Este valor de 10 bits está representado por CCPR1L: CCP1CON <5: 4="">. La siguiente ecuación se utiliza para calcular el ciclo de trabajo de PWM en el tiempo:

PWM DUTY CYCLE= (CCPRIL:CPPCON<5:4>)*Tosc*TMR2Prescale value

CCPR1L y CCP1CON <5: 4=""> se pueden escribir en cualquier momento, pero el valor de ciclo de trabajo no se bloquea en CCPR1H hasta que se produce una coincidencia entre PR2 y TMR2 (es decir, el período se completa). En modo PWM, CCPR1H es un registro de sólo lectura. El registro CCPR1H y un pestillo interno de 2 bits se usan para amortiguar doble el ciclo de trabajo PWM. Esta doble amortiguación es esencial para el funcionamiento sin fallas de PWM. Cuando el CCPR1H y el enlace de 2 bits coinciden TMR2 concatenados con un reloj Q de 2 bits interno o 2 bits del prescaler TMR2, el pin CCP1 se borra.


Hasta este punto hemos visto algo teorrico que nos servirá para entender mejor el modulo, luego de esto vamos a ver el siguiente vídeo donde se explicrá la clase de hoy:



Para complementar esta clase, les dejo el link del vídeo tutorial de como instalar Proteus 8.5 en todas las versiones de windows:

https://www.youtube.com/playlist?list=PLHsJoDYdMkxWV3KRvvzMXPHqoXpUgPtj2

Bien muchachos, esto es todo por hoy; esten pendiente en mi canal, o de mi blog o de mi pagina de facebook.

Facebook: https://www.facebook.com/electronicalibrexc/
Youtube:  http://www.youtube.com/c/breismanrueda
Google +: https://plus.google.com/u/0/+breismanrueda
Twitter: https://twitter.com/BreismamR

Esto es todo por hoy, Sigue mi blog y visita mi próxima entrada!

Cualquier duda, trabajo, tutoria personalizada por correo electronico o pagina en facebook:
Correo: ElectronicaLibreXC@outlook.com
Facebook: https://www.facebook.com/electronicalibrexc/



Salu2...



XiuaElectronics: Curso Proteus 8.5 + MPASM y PIC16F628A

Curso Proteus 8.5 + MPASM y PIC16F628A #05: TIMER1 como Temporizador.


Que tal amigos?

En el día de hoy veremos en 5 vídeo tutorial del curso de proteus 8.5 con el compilador MPASM y el pic16f628a. Para esta clase veremos como utilizar el timer1 del pic en modo de temporizador. 

TIMER1:

El módulo Timer1 es un temporizador / contador de 16 bits que
De dos registros de 8 bits (TMR1H y TMR1L) que son legibles y escribibles. El par de registros TMR1 (TMR1H: TMR1L) aumenta de 0000h a FFFFh y gira hasta 0000h. La Interrupción Timer1, si está activada, se genera en el desbordamiento del par de registros TMR1 que bloquea el bit de indicador de interrupción TMR1IF (PIR1 <0>). Esta interrupción se puede activar / desactivar ajustando / borrando el bit de activación de interrupción Timer1 TMR1IE
(PIE1 & lt; 0 & gt;).
El Timer1 puede funcionar en uno de los dos modos siguientes:
• Como temporizador
• Como contador
El modo de funcionamiento está determinado por la selección de reloj
Bit, TMR1CS (T1CON <1>).
En el modo Timer, el valor del par de registros TMR1 incrementa cada ciclo de instrucción. En modo Counter, se incrementa en cada flanco ascendente del reloj externo
entrada.
El temporizador1 se puede activar / desactivar ajustando / borrando el bit de control TMR1ON (T1CON <0>).
Timer1 también tiene una "entrada de reinicio" interna. Este Reset puede ser generado por el módulo CCP (Sección 9.0 "Módulo Captura / Comparar / PWM (CCP)").
El registro 7-1 muestra el registro de control Timer1.
Para los PIC16F627A / 628A / 648A, cuando el oscilador Timer1 está activado (T1OSCEN está ajustado), los pins RB7 / T1OSI / PGD y RB6 / T1OSO / T1CKI / PGC se convierten en entradas. Es decir, el valor TRISB <7: 6=""> se ignora.


Modo temporizador:

El modo de temporizador se selecciona borrando el bit TMR1CS (T1CON <1>). En este modo, el reloj de entrada del temporizador es FOSC / 4. El bit de control de sincronización T1SYNC
(T1CON <2>) no tiene ningún efecto ya que el reloj interno está siempre sincronizado.


Con esto ya podremos ver el siguiente vídeo tutorial donde veremos como implementar este modulo:



Para complementar esta clase, les dejo el link del vídeo tutorial de como instalar Proteus 8.5 en todas las versiones de windows:

https://www.youtube.com/playlist?list=PLHsJoDYdMkxWV3KRvvzMXPHqoXpUgPtj2

Bien muchachos, esto es todo por hoy; esten pendiente en mi canal, o de mi blog o de mi pagina de facebook.

Facebook: https://www.facebook.com/electronicalibrexc/
Youtube:  http://www.youtube.com/c/breismanrueda
Google +: https://plus.google.com/u/0/+breismanrueda
Twitter: https://twitter.com/BreismamR

Esto es todo por hoy, Sigue mi blog y visita mi próxima entrada!

Cualquier duda, trabajo, tutoria personalizada por correo electronico o pagina en facebook:
Correo: ElectronicaLibreXC@outlook.com
Facebook: https://www.facebook.com/electronicalibrexc/



Salu2...


XiuaElectronics: Curso Proteus 8.5 + MPASM y PIC16F628A

Curso Proteus 8.5 + MPASM y PIC16F628A #04: Retardos [Bucles anidados de decremento], delay en leds.


Que tal amigos?

En el día de hoy veremos la cuarta clase del curso de programación en assembler con el pic16f628a.
Para esta clase lo que haremos es generar un retardo de un segundo en un led, a diferencia de lenguajes como c y c++ debemos generar este retardo a través de bucles anidados de decremento; para comprender mejor este tema veremos ciertas instrucciones las cuales nos ayudarpan a generar este retardo, y así mismo entender el vídeo tutorial de la clase de hoy.

Decrementos en assembler:

Decrementa el contenido del registro f en una unidad, el resultado se almacena en f si d=1 y en w si d=0, en este caso, f no varía. Si el resultado es cero, se ignora la siguiente instrucción y, en ese caso la instrucción tiene una duración de dos ciclos.

Forma de usar:

Tenemos la variable f si por ejemplo f= 244, entonces DECFSZ le quitará una unidad y le quedara en f= 243, y este valor se queda almacenado temporalmente en w y luego pasará a la siguiente instrucción, en este caso goto decremento. Para cuando d=0 se comparará con w, siendo w un registro de trabajo temporal, si por ejemplo w=0 entonces f=0 y será f=d saltará una instrucción hasta goto inicio.

movlw '244'
movwf f

decremento:
DECFSZ f,d
goto decremento
goto inicio

inicio:
; Terminaste de decrementar f


Básicamente esto es lo escencial apra entender el decremento de una variable, ahora vamos a ver la forma de usar este decremento a través de un arreglo tipo bucle y con esto poder generar un retardo de X tiempo. Ya que vimos lo que necesitabamos vamos a ver el siguiente vídeo tutorial correspondiente a la clase de hoy:



Para complementar esta clase, les dejo el link del vídeo tutorial de como instalar Proteus 8.5 en todas las versiones de windows:

https://www.youtube.com/playlist?list=PLHsJoDYdMkxWV3KRvvzMXPHqoXpUgPtj2

Bien muchachos, esto es todo por hoy; esten pendiente en mi canal, o de mi blog o de mi pagina de facebook.

Facebook: https://www.facebook.com/electronicalibrexc/
Youtube:  http://www.youtube.com/c/breismanrueda
Google +: https://plus.google.com/u/0/+breismanrueda
Twitter: https://twitter.com/BreismamR

Esto es todo por hoy, Sigue mi blog y visita mi próxima entrada!

Cualquier duda, trabajo, tutoria personalizada por correo electronico o pagina en facebook:
Correo: ElectronicaLibreXC@outlook.com
Facebook: https://www.facebook.com/electronicalibrexc/



Salu2...








domingo, 30 de abril de 2017

XiuaElectronics: Curso Proteus 8.5 + MPASM y PIC16F628A

Curso Proteus 8.5 + MPASM y PIC16F628A #03: Manejo de puertos digitales I/O, pulsador y leds.


Que tal amigos?

En el día de hoy veremos la tercera clase del curso de Proteus 8 con el compilador MPASM y el pic16f628a; para esta calse trabajaremos lo que tiene que ver con puertos digitales I/O (Estradas y salidas), también unas instrucciones básicas en assembler la cuales nos servirán para diferentes aplicaciones; en este caso las utilizaremos para el control del encendido y apagado de unos led's a través de un pulsador.

Para empezar miraremos los registros los cuales serán los encargados de configurar los puertos.


 Bancos de registros:

El pic16f628a posee 4 bancos en los cuales se dividen diferentes bits de cofiguración, por ejemplo en el banco 1 es donde configuraremos los registros TRIS los cuales serán los encargados de decir la configuración del puerto a controlar.

*Sintaxis C
 TRISA=0; // en este caso se le dice que el puerto A estará como salida

*Sitanxis Assembler
 MOVLW 0b'00000'
 MOVWF TRISA

Como ven solo aumento una linea con respecto a la sintaxis de c, pero en cambio ocupa menos memoria y son más rapidas las instrucciones.

También les comento que por defecto iniciamos en el banco 0, para ingresar al banco uno necesitamos poner en uno lógico es bit RP0 del registro status, esta aprte la verán en el vídeo de esta clase, solo se los comento para que lo tengan presente.

Instrucciones BTFSS y BTFSC de Ensamblador RISC

La instrucción BTFSS y la instrucción BTFSC son cada una como una simple instrucción de comparación, como lo es un IF en otros lenguajes de programación, a excepción de que los if pueden contener varias instrucciones como en el siguite código de Java:


if (variable=='condición')
{
   instrucción1;
   instrucción2;
   instrucción3;
}
else
{
   instrucción4;
   instrucción5;
   instrucción6;
}

La instrucción BTFSS de Assembler RISC verifica que el bit del puerto o variable especificado se encuentre en 1 lógico (alrededor de los 5v), si la respuesta es cierta entonces se salta la siguiente instrucción, mientras que si no lo es, realiza la sig instrucción. Como se muestra en el ejemplo:

BTFSS PORTA,0 ;"Bit 0" del puerto A esta en 1 lógico (5volts)?
   goto no esta en1 ;No, (esta en 0volts).
   goto  si  esta en1 ;Si,   (esta en 5volts).

Por otra parte la instrucción BTFSC de Assembler RISC verifica que el bit tenga un 0 lógico, y de igualmanera, si es cierto, se salta la instrucción siguiente, y si es falsa entonces hace la siguiente.

 BTFSC PORTA,0 ;"Bit 0" del puerto A esta en 0 lógico (0volts)?
   goto no esta en0 ;No, (esta en 5volts).
   goto si  esta  en0 ;Si,   (esta en 0volts).


Bien, esta es una breve explicación de unos datos básicos que debemos tener en cuenta a la hora de programar en assembler, ahora ya que vimos lo escencial, vamos a proceder a ver el vídeo tutorial de la clase de hoy:



Para complementar esta clase, les dejo el link del vídeo tutorial de como instalar Proteus 8.5 en todas las versiones de windows:

https://www.youtube.com/playlist?list=PLHsJoDYdMkxWV3KRvvzMXPHqoXpUgPtj2

Bien muchachos, esto es todo por hoy; esten pendiente en mi canal, o de mi blog o de mi pagina de facebook.

Facebook: https://www.facebook.com/electronicalibrexc/
Youtube:  http://www.youtube.com/c/breismanrueda
Google +: https://plus.google.com/u/0/+breismanrueda
Twitter: https://twitter.com/BreismamR

Esto es todo por hoy, Sigue mi blog y visita mi próxima entrada!

Cualquier duda, trabajo, tutoria personalizada por correo electronico o pagina en facebook:
Correo: ElectronicaLibreXC@outlook.com
Facebook: https://www.facebook.com/electronicalibrexc/



lunes, 27 de marzo de 2017

XiuaElectronics: Curso Proteus 8.5 + MPASM y PIC16F628A

Curso Proteus 8.5 + MPASM y PIC16F628A #02: Características técnicas Pic16f628a y set insrucciones. 


¿Que tal amigos?


En el día de hoy vamos a ver la segunda clase del curso de Proteus 8.5 + MPASM y el pic16f628a; para esta clase vamos a tratar unos aspectos importantes, y serán el setlist de instrucciones que trae el pic16f628a, con  las cuales podremos formar diferentes programas en assembler, de igual manera veremos las características técnicas de nuestro microcontrolador entre otras cosas, así que empezemos:


Set de Instrucciones:


La anteriores nstrucciones son las pertinentes a uestro microcontrolador pic16f628a, estas intrucciones tienen una duración de un ciclo, pero en algunos casos tendrán 2 ciclos de duraciones, esto es importante ya que sabremos exactamente cuanto se tardará en ejecutar una acción nuestro microcontrolador, y eso mismo podreos hacer retarmos mucho más eficientes.

En la siguiente clase me detendré a explicar las operacones basicas de bit-oriented, las cuales podrán observar en la imagen, ya que con estas procederemos a hacer la mayoria de nuestros programas, en dado caso que necesitemos explicar otra instrucción a parte de las mencionadas anteriormente, se explicará en una clase posterior.


Ya que vimos el set de instrucciones que posee nuetro microcontrolador, ahora vamos a ver la características técnicas que este posee:


Características principales


• Velocidad de operación hasta 20 MHZ con oscilador externo.
• Admite 8 configuraciones de oscilador.
• 8 niveles de PILA.
• Procesador con arquitectura HARVARD.
• Conjunto reducido de instrucciones RISC (35) gama media.
• Instrucciones de un ciclo excepto los saltos (200nS por instrucción a 20 MHZ).
• Resistencias PULL-UP programables en el puerto B.
• Pin RA5 MCLR programable como reset externo o pin de entrada.
• Rango de operación desde 3V hasta 5.5V.
• 15 pines de I/O y 1 sólo de entrada (RA5).
• Temporizador Perro guardián WDT independiente del oscilador.
• Programable con bajo voltaje LPV (5V.).
• Programación serial en Circuito ICSP por 2 pines: RB6 reloj y RB7 datos.
• Código de protección programable por sectores.
• Memoria de programa FLASH 2048K. de 100.000 ciclos escritura/borrado.
• Memoria de datos EEPROM de 1.000.000 ciclos escritura/borrado de 100 años retención.
• 2 circuitos comparadores análogos con entradas multiplexadas.
• 3 Timers, Timer 0 a 8 bits, Timer 1 a 16 bits y Timer 2 a 8 bits.
• Módulos CCP, Captura compara 16 bits, y PWM, modulación de ancho de pulso 10 bits.
• 10 fuentes de interrupción.
• Módulo de comunicación serial USART/SCI.
• Capacidad de corriente para encender leds directamente (25 mA I/O) por cada pin.


Pines de entradas y salidas(IN y OUTPUT):


Para mayor información les dejaré el link del datasheet para que lo puedan descargar y ver: http://adf.ly/1ltwuG

Estas son las características básicas de nuestro microcontrolador y su disposición de pines, ahora veremos el vídeo tutorial correspondiente a esta clase:




Para complementar esta clase, les dejo el link del vídeo tutorial de como instalar Proteus 8.5 en todas las versiones de windows:

https://www.youtube.com/playlist?list=PLHsJoDYdMkxWV3KRvvzMXPHqoXpUgPtj2

Bien muchachos, esto es todo por hoy; esten pendiente en mi canal, o de mi blog o de mi pagina de facebook.

Facebook: https://www.facebook.com/electronicalibrexc/
Youtube:  http://www.youtube.com/c/breismanrueda
Google +: https://plus.google.com/u/0/+breismanrueda
Twitter: https://twitter.com/BreismamR

Esto es todo por hoy, Sigue mi blog y visita mi próxima entrada!

Cualquier duda, trabajo, tutoria personalizada por correo electronico o pagina en facebook:
Correo: ElectronicaLibreXC@outlook.com
Facebook: https://www.facebook.com/electronicalibrexc/



Salu2...