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...