Autor Tema: DESESPERADO  (Leído 3255 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
DESESPERADO
« en: 07 de Febrero de 2004, 10:19:00 »
¡Ya se que que el mensaje está repetido, en el subforo de todo  en microcontroladores!
Pero es que me tiene desesperado, llevo dos dias dando vueltas a lo mismo y nada.
A ver sis algun colega se le ocurre algo nuevo al respecto.¿Espero vuestras ayudas!

Acabo de construir un pequeño automata(entradas-salidas Digitales). He comprobado todas las entradas y salidas por separado funcionando correctamente. Las tensiones de las in-out estan separadas galvanicamente con lo que no tiene influencia con las tensiones del Pic.
Realizo un programa de prueba que crequea las entredas y activa las salidas, pero no funciona. Al pic le llegan correctas. Utilizo como entradas el puerto C y como salidas el B. Pero las salidas siempre las tengo a nivel bajo.
Compruebo el oscilador y obtengo una frecuencia de 4Mz(pin 10), pero observo que la onda es senoidal y de amplitud 2Vpp(y offset de 2V).
Hasta donde sé, deberia ser más o menos rectangular( aunque en la realidad cas nunca se le parece) y amplitud de unos 5V( más de cuatro). Compruebo los condensadores del oscilador y son de 27pF.
Tambien he probado con varios micros y tipos como xxx876 y xxxxx873.Siempre el resultado es el mismo.
He simulado el programa con proteus y con Mplab y va bien por lo que he descartado que sea el programa.
En la configuracion tengo deshabilitado el Watchdog, el oscilador es XT y he probado tambien con Hs. Desabilitado Brow-out reset. En fin creo que he probado con todo.
¿Alguien me puede indicar/decir como puedo solucionarel problema?¿Deberia bajar la capacidad de los condensadores?
Me es urgente solucionar el problema lo antes posible, pues para terminar mi proyecto de fin de carrera?
Muchas gracias y un saludo
Todos los días se aprende algo nuevo.

adolfoadc

  • Visitante
RE: DESESPERADO
« Respuesta #1 en: 07 de Febrero de 2004, 12:30:00 »
Si estas mirando la señal de clock con un osciloscopio ten cuidado porque al colocar la sonda de este estas cargando la señal de clock con la sonda, es mejor realizar las medidas con la sonda en x10 de esa forma la impedancia de la sonda aumenta hasta los 10Mohm y afecta tanto en esa frecuencia a la señal.
Si pruebas de forma individual el micro y funciona, mira a ver si es del programa. Porque no nos pones el programa y el esquema del circuito para ver si hay algo que se te ha pasado.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: DESESPERADO
« Respuesta #2 en: 07 de Febrero de 2004, 12:35:00 »
Me temo que la frecuencia no la puedes medir directamente en el cristal. A no ser que uses un oscilador interno (que estos que mencionas no tienen) o un oscilador RC. En esos casos si puedes obtener la frecuencia en el pin que indicas.
Para 4MHz el fuses es XT. Con 27pf tiene que funcionar. Cosa distinta es que yo, por ejemplo siempre los monto de 22pF, valor que está en la mitad del rango aconsejado.
Raro, raro, raro.
Empezamos por lo de siempre. Tienes colocada la R=10K en el pin MCLR?? En proteus no hace falta ponerla, pero en los montajes reales si. Supongo que la tendrás puesta.
Si no usas la parte analógina del micro tienes que desactivarla, ya que por defecto se inicializan activadas.

Saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
RE: DESESPERADO
« Respuesta #3 en: 07 de Febrero de 2004, 12:49:00 »
Gracias por vuestras respuestas colegas:
pero, la patilla de MCLR está de momento fija a Vcc. La sonda es de por 10 para no cargar la salida. La frecuencia la mido en la patilla 10 y se ve de la forma que os explico en el post anterior, pero en la patilla 9 no se ve nada
Cuando realizo montajes por ejemplo para el micro Z86XXX o X8 de Zilog el montaje del oscilador es similar al del PIc y la frecuencia se ve en los 2 pines.
El esquema no lo adjunto pues me parecio que sobraba. Solo tiene conectadas(de momento solo para ir probando todo el montaje), unas a + y otras a - por medio de unas resistencias de 10K.
Las salidas puerto B van aun draiver para no cargar el bus de la puerta B y de este a unos leds con sus resistencias correspondientes.
El programa solo configura el puerto C como entradas y el puerto B como salidas. Lee el C y lo pasas al b pasando por W.
Como dice cuca es raro, raro, pero me tiene frito y para el viernes tengo que entregar el proyecto y ahora estoy casi 39 horas (omás) cada dia para terminarlo.
Seguiré investigando, pero seguiré agradeciendo cualquier ayuda. Estoy conectado las 24 horas al foro por si acao
Muchas gracias.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
RE: DESESPERADO
« Respuesta #4 en: 07 de Febrero de 2004, 13:20:00 »
Hola de nuevo:
Os adjunto el programa final, solo chequea las entradas y asi pone las salidas.
Solo os ponga parte de el pues todo el resto del programa es casi igual. Solo adjunto la configuracion.

               LIST      P=16F876         ;Selecciona el tipo de micro.
               LIST      C=132            ;Número de caracteres por línea.

               #INCLUDE   <P16F876.INC>      ;Inserta librería igualdades de registros micro.

#Define            Banco_0      bcf   STATUS,RP0      ;Selección del banco 0 de la memoria de programa.
#Define            Banco_1      bsf   STATUS,RP0      ;Selección del banco 1 de la memoria de programa.
;   #Define            CS1_ON      bsf   PORTA,0         ;Se habilita las entradas.
;   #Define            CS1_OFF      bcf   PORTA,0         ;Se deshabilita las entradas.
#Define            CS3_ON      bsf   PORTA,1         ;Se habilita las salidas.
#Define            CS3_OFF      bcf   PORTA,1         ;Se deshabilita las salidas.

W_Temporal        EQU         0x20            ;Dir. a guardar el W en operaciones para salvar su valor.
Status_Temporal      EQU          0x21               ;Dir. a guardar el STATUS en operaciones y salvar su valor.
Delay_Tiempo_1      EQU         0x22            ;Dir. a guardar el valor de contaje a en rutinas de delay.
Delay_Tiempo_2      EQU         0x23            ;Dir. a guardar el valor de contaje a en rutinas de delay.
Byte_Entrada      EQU         0x24            ;Var_temporal del dato leido de las entradas.
Byte_Salida         EQU         0x25            ;Var_temporal del dato a WR para el periférico de Salida-1.

               ORG         0x00              ;Dirección del Vector de RESET. Desactivar si hay bootloader.
;   ORG      0x1F00                              ;Dirección del Vector de RESET cuando hay bootloader.
               goto      Inicio            ;Comienzo del programa después del vector de Interrupción.
                   ORG          0x05              ;una posición detrás Vector_Interrupción.


;; 1.1.- Configuración de los registros del micro a utilizar.
Inicio          Banco_1   ;Selección del banco 1 de la memoria de programa.
   movlw   b"00000000"   ;Se configura la puerta B como salida.
   movwf PORTB   ;Puerta B configurada como salida.
   movlw   b"11111111"   ;Se configura el puerto C como entradas.
   movwf   TRISC   ;Puerta C configurada como entrada.
   movlw   b"00000110" ;Valor a cargar W para configurar la
   movwf   ADCON1   ;Puerta A como E/S digitales.
   movlw   0x00   ;Valor para reconfigurar la puerta A como salida.
   movwf   TRISA   ;Puerta A = salida.
   Banco_0      ;Selección del banco 0 de la memoria de programa.
   movlw   b"10000111"  ;Pull_up=Off, InterpRB0=Off,Clock=Interno,Contador=Ascendente y
   movwf   OPTION_REG         ;Predivisor de 1:256 asociado al temporizador TMR0.
   clrf   Byte_Salida ;Al empezar se borra el contenido del registro de las salidas.
   call   WR_Salida;Se escribe el dato inicial en la salida.

; 2.1.- Se realiza la comprobación del estado del presostato B44.
B44   call   RD_Entrada  ;Se lee el estado de las entradas.
   btfsc   Byte_Entrada,0   ;Está el presostato B44 abierto. B44=>0.
   goto   URG   ;¿No? => B44=1 Se sigue con la prueba en el punto URG.
   bcf   Byte_Salida,0   ;Valor para dejar el rele 1 desactivado.
   call   WR_Salida   ;Se escribe el dato en la salida.
   goto   A23      ;Se


Apartir se checuea otra entrada y asi sucesivamente..
Tengo definidos al principio los Byte_entrada y Bayte _salida al princio en direcciones de memoria 0x24 y 0x25.
WR_Salida y RD_Entrada se encargan de leer y escribir en los puertos B y C


Gracias
Todos los días se aprende algo nuevo.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: DESESPERADO
« Respuesta #5 en: 07 de Febrero de 2004, 13:32:00 »
Vaya, vaya, cuantas horas dices que le dedicas al día... Quizás sea hora de dormir...

Cambia esto
movlw b"00000000" ;Se configura la puerta B como salida.
movwf PORTB ;Puerta B configurada como salida.
por:
movlw b"00000000" ;Se configura la puerta B como salida.
movwf TRISB ;Puerta B configurada como salida.
Saludos desde Huelva (ESPAÑA)

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
RE: DESESPERADO
« Respuesta #6 en: 07 de Febrero de 2004, 13:38:00 »
Hola cuca:
Gracias voy a probar.
Las horas son ultimamente, si no mi familia( mujer e hijos) me van a cortar en pedacitos sino termino pronto, pues deje la carrera un tiempo por problemas familiares y ahora la retomé hace un tiempo y estan más ilusionados que yo.
Pero los tengo un poco hartos ya.
De momento voy a cenar.
¿Pero si estoy en el banco apropiado para configurar el puero B no da lo mismo poner TRIS B que PORT B?
¿Si no diera lo mismo despues de compilar y no dar el errores, el MLab al simular ¿no daria problemas, si esta mal configurado?
Gracias y hasta luego
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
RE: DESESPERADO
« Respuesta #7 en: 07 de Febrero de 2004, 13:40:00 »
Hola otra vez:
Por cierto cuca:
Ya tengo puesto en el programa como me habias indicado
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
RE: DESESPERADO
« Respuesta #8 en: 07 de Febrero de 2004, 13:41:00 »
grave error, no lo tengo como dices
Todos los días se aprende algo nuevo.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: DESESPERADO
« Respuesta #9 en: 07 de Febrero de 2004, 14:18:00 »
Eeeh! No te duermas ahora. Que pasó! Hubo avances??
Saludos desde Huelva (ESPAÑA)

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
RE: DESESPERADO
« Respuesta #10 en: 07 de Febrero de 2004, 16:42:00 »
eo:
No me dormí fui a cenar un poco.
Tanto con Port B como con TRIS B, se programa bien el puerto B como salida. Era de esperar ya que estaba en el banco 1.
Sigo probando,
fermin
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
RE: DESESPERADO
« Respuesta #11 en: 07 de Febrero de 2004, 16:52:00 »
Nueva Prueba:
Estoy simulando con Mlab y el programa me entra en una rutina de delay que utiliza el TMR0, pero al simular paso a paso, no veo que se incremente el TMR0. Voy a revisar la rutina que os adjunto asi como la configuracion del TMR0 a ver si hay algo mal.

   Banco_0                     ;Selección del banco 0 de la memoria de programa.
               movlw      b"10000111"         ;Pull_up=Off, InterpRB0=Off,Clock=Interno,Contador=Ascendente y
                movwf      OPTION_REG         ;Predivisor de 1:256 asociado al temporizador TMR0.
.
.
.
.
.


DE_10msg_TMR0_4      bcf         INTCON,T0IF         ;Desconecta el flag de rebosamiento del TMR0.
               movlw      ~.39            ;Valor para cargar en el registro TMR0. (~.39)
               movwf      TMR0            ;carga el TMR0 con complemento de 39.
WAIT_De_10msg      clrwdt                     ;Se borra el watchdog.
               btfss      INTCON,T0IF         ;Rebasamiento del TMR0 ??
               goto      WAIT_De_10msg      ;Todavía no.
               return                     ;Ahora si.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
RE: DESESPERADO
« Respuesta #12 en: 07 de Febrero de 2004, 18:08:00 »
HOLA a todos:
¡¡¡¡¡ Pero que burro soy!!!!!!
Dos dias perdidos.
Como siempre la respuesta estaba ahi, muy facil y no verla.
Al configurar el Tmr0 lo hacia en la pagina 1, con lo que aunque el tmr0 se cargaba con el valor a cargara para la temporizacion, el registro no se incrementaba por no estar aplicada la configuracion al tmr0. DE esta manera se quedaba en el bucle siempre pues el flag T0IF no se activaba nunca.
La puerta B no cambiaba nunaca pues se ponia al principio del programa a 0 todos los bits y despues la temporizacion era para evitar rebotes. Al no salir del bucle pues eso no hacia nada
Cuca, da igual que al confifurar las puertas, si estás en la página adecuada, no importa si lo haces con PortB o con TRIS B.
Gracias alos que me habeis respondido y ya sabeis cuando esteis embotados, pues un descanso y a repasar despacio y con mucha calma.
Todos los días se aprende algo nuevo.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: DESESPERADO
« Respuesta #13 en: 07 de Febrero de 2004, 18:36:00 »
Me alegro Fermín. Al final siempre suelen ser cosas tan simples que al repasar las ojeas tan rápido que no te das cuenta. Ni te cuento el tiempo que estuve la semana pasada con una tontería también. En CCS (C) en tenía un define (como un EQU en asm) para ahorrarme lo de poner el número. La cosa es que al principio lo tenía en hexadecimal (0x57 p.ej) y luego como era un registro de configuración decidí ponerlo en binario para diferenciar mejor cada bit. Y en lugar de poner 0b10010101 puse 0x10010101. Pues esa dichosa "x" en lugar de la "b" ni te imaginas los quebraderos que me trajo. Hasta corté y pegué el número en la calculadora de windows para comprobarlo un par de veces. Y ni por esa me dí cuenta de la "x". En fin...

Bueno, me alegro. Ahora a seguir...
Suerte!!
Saludos desde Huelva (ESPAÑA)

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4034
RE: DESESPERADO
« Respuesta #14 en: 08 de Febrero de 2004, 12:15:00 »
Hola: Sigo adelante con las pruebas del proyectoy demomento todo OK.
Me encerre en que el el problema no era del programa, dado que al simularlo ls primeras veces con proteus y MLab, tenia desabilitada la rutina de temporización.
Por eso es mejor dejarlo unpequeño tiempo y despues volver a empezar a repasarlo TODO con CALMA y la saloucion debe aparecer ante nuestros ojos de forma sencilla.
Gracias alos que me habeis contestado. Si me surgiera cualquier otro problema al respecto pues lo consultaria.¡Es pero que no!.
Gracias nuevamente y un saludo pa tos.
Todos los días se aprende algo nuevo.


 

anything