TODOPIC
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
03 de Septiembre de 2010, 05:22:42

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
257111 Mensajes en 28437 Temas por 27916 Usuarios
Último usuario: zororyuzaki
* Inicio Ayuda Buscar Calendario Ingresar Registrarse
Buscar en TodoPIC
+  TODOPIC
|-+  Microcontroladores PIC
| |-+  Primeros pasos - Iniciación a los microcontroladores (Moderadores: Veguepic, jfmateos2)
| | |-+  Ayuda con el PIC16F7x...
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Marcar como favorito Imprimir
Autor Tema: Ayuda con el PIC16F7x...  (Leído 428 veces)
agauss
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 21


« : 04 de Marzo de 2010, 06:28:09 »

Pasa lo siguiente, estoy tratando de simular el ADC del PIC16F77/74/76/73 en PROTEUS y sucede que al revisar el registro de resultado del PIC (ADRES) este varia segun el voltaje ingresado por un potenciometro lineal colocado sobre el canal analogico AN0, pero al tratar de leer este registro para tomar el dato y enviarlo por un puerto o bien procesar de alguna forma el dato, pues no sucede nada, es decir, no puedo leer este registro, la pregunta es: ¿sera un error del simulador?. He de señalar que el PIC16F77 no existe en version F en PROTEUS por lo cual tengo que usar la version C (PIC16C77) ¿sera por ahi el problema?

En fin espero que alguien pueda ayudarme con esto ya que no he dado con la solucion en el tiempo que he dedicado.

P.D. Se que otros modelos de PIC funcionan sin problema (877A, 2550, etc), pero yo tengo algunos de estos modelos (16F77) y megustaria dar con la solucion.
En línea
septiembre_negro
PIC18
****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 293


Daría todo lo que se,por la mitad de lo que ignoro


« Respuesta #1 : 04 de Marzo de 2010, 07:59:49 »

En espera de que alguien te conteste si hay cambios de c a f  (creo que si) por que no lo pruebas en una placa de prototipos.
En línea
agauss
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 21


« Respuesta #2 : 05 de Marzo de 2010, 02:58:00 »

Gracias por responder...

Resulta que he trabajado fisicamente con este PIC y se que funciona perfectamente, solo que cuando quiero simular algun programa que involucra al ADC me topo con este problema. En fin, si alguien tiene algo le agradeceria compartir en el foro.

Saludos...
En línea
Chenao
PIC18
****
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 263


« Respuesta #3 : 08 de Marzo de 2010, 08:39:34 »

Saludos

Por que no pones el còdigo y el esquemàtico para empezar a descartar los posibles errores
En línea

Un saludo desde Pereira - Colombia
MLO__
Colaborador
DsPIC30
*****
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 3324

MLO


« Respuesta #4 : 09 de Marzo de 2010, 12:41:27 »

Pues, que sepa, la diferencia es que los C se pueden programar una sola vez, mientras que los F pueden ser programados muchas veces.
En línea

El papel lo aguanta todo
agauss
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 21


« Respuesta #5 : 11 de Marzo de 2010, 09:49:23 »

El codigo fuente es este...


title "PIC16F77, test.asm"
   list p=16f77, f=inhx8m
   #include <p16f77.inc>
   __Config _XT & _WDT_OFF & _CP_OFF & _PWRTE_ON


STATUS   equ   0x03
PORTA   equ   0x05
PORTB   equ   0x06
ADRES   equ   0x1E
ADCON   equ   0x1F


   org   0x00
   goto   inicio

   org   0x04
   goto   rsi

   org   0x05

inicio:   bsf   STATUS,RP0
   movlw   0x00
   movwf   ADCON
   movwf   0x00
   movwf   PORTB
   bcf   STATUS,RP0

   movlw   0x41
   movwf   ADCON

main:   call   T100ms
   bsf   ADCON,1

busy:   btfss   ADCON,1
   goto   busy

   movf   ADRES,0
   movwf   PORTB

   goto   main



T100ms:   movlw   0x1F
   movwf   PDelT

DLoop:   decfsz   PDelT,1
   goto   DLoop

   nop
   nop

   return


rsi:   retfie


   end


Espero sus comentarios, saludos....
En línea
agauss
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 21


« Respuesta #6 : 11 de Marzo de 2010, 10:00:03 »

Simplemente coloco un potenciometro lineal sobre el canal analogico 0 del PIC, sobre el visualizador de registros del PROTEUS coloco los registros ADRES y PORTB. En el ADRES puedo ver que conforme vario el POT varia el dato en el ADRES, pero al tratar de mandar este dato al PORTB no pasa nada. Nuevamente señalo que uso el PIC16C77 ya que no se dispone de la version F en PROTEUS. Espero sus comentarios compañeros...
En línea
migsantiago
Moderador Global
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 6836



WWW
« Respuesta #7 : 12 de Marzo de 2010, 11:28:23 »

Hola, ¿qué justificación le das a la conversión ADC? ¿Izquierda o derecha?

¿Configuraste el puerto B como salida? TRISB=0x00
En línea

agauss
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 21


« Respuesta #8 : 12 de Marzo de 2010, 08:06:17 »

El ADC de este micro es de solo 8 bits, por lo tanto no aplica lo de la justificacion izquierda/derecha. El puerto B esta configurado como salidas totalmente.

      bsf        STATUS,RP0
      movlw   0x00
      movwf   ADCON
      movlw   0x00              ; Configuro todo el puerto B
      movwf   PORTB           ; como salidas.
      bcf        STATUS,RP0

Trato de evitar el uso de TRISB debido a un ¡WARNING! que se genera al compilar.
En línea
migsantiago
Moderador Global
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 6836



WWW
« Respuesta #9 : 13 de Marzo de 2010, 11:43:46 »

El ADC de este micro es de solo 8 bits, por lo tanto no aplica lo de la justificacion izquierda/derecha. El puerto B esta configurado como salidas totalmente.

      bsf        STATUS,RP0
      movlw   0x00
      movwf   ADCON
      movlw   0x00              ; Configuro todo el puerto B
      movwf   PORTB           ; como salidas.
      bcf        STATUS,RP0

Trato de evitar el uso de TRISB debido a un ¡WARNING! que se genera al compilar.

Debes configurar el TRISB para las direcciones, no el PORTB.

Código:
      movlw   0x00              ; Configuro todo el puerto B
      movwf   TRISB            ; como salidas.
En línea

agauss
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 21


« Respuesta #10 : 13 de Marzo de 2010, 02:22:42 »

Escribir en el PORTB estando en el banco 1 es equivalente a escribir sobre el TRISB. Trata a probar con el codigo que puse y veras que es correcto. Cualquier simulacion con el PIC16F77 que he realizado en PROTEUS ha sido exitosa, el unico detalle que he encontrado es con el ADC.

Saludos...
En línea
migsantiago
Moderador Global
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 6836



WWW
« Respuesta #11 : 13 de Marzo de 2010, 03:51:18 »

Sí es cierto, disculpa, estaba pensando en PIC18.

Talvez si adjuntas el archivo de proteus se pueda encontrar el problema. Yo no pude encontrar algo raro en el asm.
En línea

agauss
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 21


« Respuesta #12 : 15 de Marzo de 2010, 11:53:26 »

Ustedes disculparan mi torpeza caballeros pero no pude subir el esquematico al foro, a lo mas que logre es a ponerlo como un adjunto, apenas empiezo asi que... sorry.

En fin, espero que esta imagen sea util... saludos!!!
En línea
migsantiago
Moderador Global
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 6836



WWW
« Respuesta #13 : 15 de Marzo de 2010, 11:56:45 »

Hola, puedes comprimir el archivo en un zip o rar y adjuntarlo.

Sobre la imagen que pones, no encontré problemas de conexión.
En línea

agauss
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 21


« Respuesta #14 : 16 de Marzo de 2010, 01:05:08 »

Antes que nada agradezco el interes y el seguimiento que ha dado a este tema migsantiago. Pues bien, he agregado los archivos necesarios para que verifiquen el problema al que me refiero. Sobre el visor de registros de PROTEUS coloco los registros ADRES, ADATO y PORTB, como podran ver el dato en ADRES (el cual si cambia) no se transfiere ni al registro de usuario (ADATO) ni al puerto.

Cabe mencionar que utilizo la version 7.6 de PROTEUS y el compilador MPASMwin v5.20. Espero sus valiosos comentarios, saludos!!!   
En línea
migsantiago
Moderador Global
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 6836



WWW
« Respuesta #15 : 16 de Marzo de 2010, 03:25:08 »

Hola, ya lo probé y encontré el problema pero no la solución.

Corriéndolo paso a paso el programa hace todo bien hasta aquí:

Código:
movf ADRES,0
movwf ADATO
movwf PORTB

Cuando ADRES debe pasar a W el valor de W se pone a 0x00... no entiendo el porqué.

Debe ser un bug de proteus. Prueba con un protoboard y un juego de leds.



En línea

agauss
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 21


« Respuesta #16 : 19 de Marzo de 2010, 02:12:02 »

Hay alguna manera de corregir el error (en caso de que asi sea) accediendo a las librerias del PROTEUS?, es eso posible?
En línea
migsantiago
Moderador Global
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 6836



WWW
« Respuesta #17 : 19 de Marzo de 2010, 12:43:46 »

He visto que son DLL las encargadas de simular cada PIC. Lo veo complicado.
En línea

TODOPIC
   

 En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC XHTML 1.0 válido! CSS válido!
Página creada en 0.137 segundos con 23 consultas.