martes, 8 de enero de 2008
Direccion Web
http://pic16f877.dmchihuahua.com/
Recibo sus comentarios a iess2600(a)gmail .com
Gracias
viernes, 2 de noviembre de 2007
Programa Comunicacion SPI - Dos Microcontroladores 16F877A
Este programa muestra el uso de comunicacion SPI entre dos microcontroladores 16F877A, como ya se vio la comunicacion usa basicamente tres lineas de comunicacion, la SDO (Salida de datos), SDI, Entrada de datos, SCK (Señal de reloj) y una opcional de SS o CS, Slave Select o Chip Select.
(Musica del video por Erick Johnson, espero no sea retirado de la Web)
Como se puede ver en el video, el Microcontrolador Master esta enviando datos por SPI al segundo uC el cual lo esta mostrando por medio de leds en le PortB. Mas interesante seria cuando monitoreamos un proceso usando SPI y podemos tomar decisiones desde el Slave o Master de acuerdo a la info que llega lo dejaremos para mas adelante, talvez para trabajar con variables fisicas como temperatura de manera que podamos tomar decisiones cuando alcance un valor predeterminado etc.
En el video podemos ver que cuando reseteamos al Master, el dato a ser enviado reinicia en ceros; pero cuando reseteamos al Slave, esta cuenta no se pierde pues el Master es quien la esta llevando. Si desconectamos el Chip Select SS', el Slave no es habilitado y se pierde la comunicacion SPI.
MASTER SPI.
Despues de configurar los TRIS de manera correcta, hacemos CKE=1, habilitamos el SPI, asignamos el estado idle del clock (1) y seleccionamos una frecuencia de trabajo.
El ChipSelect sera llevado a cabo mediante PortA, 2=0. y cada vez que haya transmision de un dato, incrementa el registro y llama al retardo para poder visualizarlo.
Del ASM:
; SPI_MASTER.asm
; PROGRAMA QUE ENVIA DATOS DE UN CONTADOR BINARIO A OTRO MICROCONTROLADOR USANDO COMUNICACION SPI
; EL MASTER SELECCIONA EL SLAVE USANDO EL PIN PORTA, 2. LA TRANSMISION INICIA CUANDO ESCRIBIMOS EL VALOR EN
; EL REGISTRO SSPBUF, LUEGO ESPERAMOS A QUE TERMINE TRANSMISION CHECANDO AL BIT BF DEL SSPSTAT
; CUANDO EL DATO ES ENVIADO, ESPERAMOS (RETARDO) PARA ENVIAR EL SIGUIENTE DATO.
; Fosc=4MHz
SLAVE SPI.
Configuramos PortA como salidas digitales, excepto PortA, 5 que sera entrada de SS'.
Despues de haber configurado los registros, el programa continuamente esta verificando si el bit BF ha sido puesto (transmision completa), cuando asi sea, mostrara el valor recibido por el puerto B
En ambos casos de transmision y recepcion, el sampleo se hara a la mitad del tiempo asignado y los datos seran transmitidos en la caida de la señal de Reloj.
Del ASM:
; SPI_SLAVE.asm
; PROGRAMA QUE RECIBE DATOS USANDO TRANSMISION SPI, CON CHIP SELECT Y MUESTRA EL DATO POR EL PORTB (LEDS)
; EL PROGRAMA CONTINUAMENTE BUSCA SI ES QUE HAY TRANSMISION (BF=1), CUANDO LA HAY, MUESTRA EL DATO EN EL
; PORTB MEDIANTE LEDS, ES AHI CUANDO PUEDE EFECTUAR OTRAS OPERACIONES.
; Fosc= 4MHz, VIDEO DISPONIBLE ONLINE, picmicrocontroller877.blogspot.com
Para la conexion usamos el sig diagrama:
Los archivos Hex son los siguientes:
HEX MASTER:
:020000040000FA
:1000000002201528A0018316031300308500073055
:100010009F00831603131030870040309400831232
:1000200003133230940005150800051120089300D1
:1000300083160313141C1A288312031313080515BF
:10004000A00A23201528FF30A100A200A10B26281A
:06005000A20B26280800A7
:00000001FF
HEX SLAVE:
:020000040000FA
:1000000002201228831603132030850007309F003A
:100010008601183087004030940083120313343077
:1000200094000800831603139430141C12288312C2
:0C00300003131308831203138600122828
:00000001FF
Saludos desde Chihuahua Mexico, links de Chihuahua: Turismo Chihuahua y Mapa Chihuahua
Espero sus comentarios.
.
miércoles, 24 de octubre de 2007
Modulo PWM del PIC 16F877A
Periodo PWM
El Periodo del Modulo PWM es configurado dando un valor al registro PR2. Este periodo puede ser calculado usando la siguiete formula:
PWM Period = [(PR2) + 1] • 4 • TOSC • Prescale del Timer 2
Como ya es sabido la frecuencia esta determinada por 1/Periodo PWM
Cuando el valor del Timer 2 alcanza el valor de PR2, los siguientes eventos ocurren en el siguiente ciclo de tiempo:
- TMR2 es limpiado
- El pin CCP1 es puesto a 1
- El Periodo de trabajo del PWM es cambiado de CCPR1H a CCPR1L
Ciclo de trabajo del PWM
El ciclo de trabajo del PWM es determinado escribiendo al registro CCPR1L y CCP1CON<5:4> (10 bits de resolucion).
El ciclo de trabajo se obtiene usando la siguiente formula:
Tiempo de Trabajo PWM = (CCPR1L:CCP1CON<5:4>) •TOSC • (TMR2 Prescale Value)
Para modificar el ciclo de trabajo, en cualquier momento se puede escribir a CCPR1L y CCP1CON<5:4>, pero estos valores no seran tomados en consideracion hasta que el Timer alcance al PR2 y reinicie su operacion tomando en cuenta los nuevos valores.
Tiempo de trabajo = % Ciclo de trabajo / Fpwm
Para calcular la maxima resolucion del PWM a determinada frecuencia usamos la siguiente formula:
Formula para resolucion del modulo PWM
CONFIGURACION DEL PWM:
Pasos para la configuracion del Modulo PWM del PIC 16F877A
1. Configurar el Periodo dando un valor al registro PR2
2. Configurar el Ciclo de Trabajo escribiendo en: CCPR1L:CCP1CON<5:4>
3. Limpiar el Tris C, 2 para asignar la salida del modulo (CCP1)
4. Asignar el valor del Prescale del Timer 2 (T2CON)
5. Configurar el modulo CCP1 para operacion PWM.
Ejemplo de frecuencias y su resolucion
Para mas calculos del modulo PWM visita esta pagina:
http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html
.
lunes, 13 de agosto de 2007
Hola, aqui publicare informacion acerca de los Microcontroladores PIC 16F877 y otros. Podras encontrar Programadores, instrucciones de uso, proyectos y por supuesto circuitos con programas listos para montarse.
Por favor entra al Archivo del Blog que esta a la izquierda para ver la informacion que ya he publicado en este Blog, la cual se va actualizando mostrando primero la mas nueva.
