Autor Tema: Problema con los niveles logicos del HC08  (Leído 2693 veces)

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

Desconectado leonfhl

  • PIC10
  • *
  • Mensajes: 3
Problema con los niveles logicos del HC08
« en: 08 de Diciembre de 2008, 20:38:07 »
Soy nuevo en en esto y me di a la tarea de construir una targeta de desarrollo para un 68HC908GP32 con su programador y modulos de I/O como dipswitch y leds, instale el CodeWarrior Special Edition 6.2 y le programe al micro un sencillo programa que le lleva un uno o un cero a PTB0 de acuerdo a la entrada PTA0.
Como soy nuevo en codewarrior experimente por: Mon08 Interface-> Debugger, escoji comunicacion serial a 9600 baudios y por esta opcion se descargo el programa al micro. EL problema esta en que para el '0' el micro me esta mandando 1.2V y para el '1' me esta mandando 3.7V, ya probe con otros puertos y es lo mismo, el programa corre perfecto con exepcion de estos niveles logicos que me entrega el micro, ya revise los voltajes en VDD, VSS, VDDA, VSSA, y estan en sus niveles normales. No se si es que desde el codewarrior se puede escojer la equivalencia en voltaje de un alto y un bajo y desde donde es. Necesito saber como hacer para que un bajo sea 0V y un alto 5V.

Gracias por su ayuda

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Problema con los niveles logicos del HC08
« Respuesta #1 en: 09 de Diciembre de 2008, 12:30:18 »
Hola, desde el Compilador no hay manera de indicarle el valor del nivel, es mas desde ningun compilador sea C o ASM es posible hacer eso, porque si eso se pudiera hacer deberia ser determinante de la arquitectura. El problema es bastante raro, verificaste bien que los puertos esten bien inicializados ( DDR, resistores de Pull-Ups, etc ) ?

Saludos !

Desconectado cdrpo

  • PIC18
  • ****
  • Mensajes: 317
Re: Problema con los niveles logicos del HC08
« Respuesta #2 en: 10 de Diciembre de 2008, 00:38:15 »
Por favor comparte el circuito programador que realizaste, de esta manera podemos entrar en el mundo de freescale.
Seria interezante realizar un proyecto similar al RRBOARD
http://www.micropic.es/index.php?option=com_content&task=view&id=74&Itemid=1
Gracias
« Última modificación: 10 de Diciembre de 2008, 12:00:21 por cdrpo »

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Problema con los niveles logicos del HC08
« Respuesta #3 en: 10 de Diciembre de 2008, 04:43:58 »
para mi que el problema esta en tu placa, ha de haber alguna pista que este haciendo contacto donde no debe
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado leonfhl

  • PIC10
  • *
  • Mensajes: 3
Re: Problema con los niveles logicos del HC08
« Respuesta #4 en: 12 de Diciembre de 2008, 02:05:23 »
Cordial Saludo, gracias a todos por su pronta respuesta, al parecer no hay error en la tarjeta, el problema era la rutina en c que estaba enviando, era algo como esto en resumidas cuentas

Código: C
  1. if PTB_PTB0=0
  2.  PTA=0;
  3. else
  4.  PTA=1;
  5.  
  6. PTA=~PTA  //linea que me generaba el problema

necesitaba realizar la inversion para una aplicacion especifica, al eliminar la linea me muestra los niveles perfecto (4.98v y 0.01v).
Ahora mi pregunta: como se debe realizar una inversion de este tipo en C para estos Micros?
por que no creo que halla que incluir if's de mas para hacer esto tan simple

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Problema con los niveles logicos del HC08
« Respuesta #5 en: 12 de Diciembre de 2008, 11:15:51 »
Hola, no entiendo bien que queres hacer, ademas de faltarle los parentesis al if, te comento esto, es importante la buena escritura del código ya que un usario novato puede interpretarlo mal.
Deberia estar escrito asi:

Código: C
  1. if ( PTB_PTB0 == 0 )
  2.  PTA=0;
  3. else
  4.  PTA=1;
  5.  
  6. PTA=~PTA

Lo que se entiende es que dependendiendo del estado del PB0 togleas el port A, pero no estas especificando que pin del Port A, si queres referirte al PA0, deberias poner PTA_PTA0 y podrias poner tranquilamente PTA_PTA0 = ~PTA_PTA0 es totalmente válido, los valores que mediste y comentaste al principio del hilo podrian llegar a ser si esta condicion esta dentro de un loop y la misma se ejecuta muchisimas veces x segundo, entonces el puerto estaria togleando muchas veces y la medicion dependiendo de con que la hagas podria darte esos valores que comentaste.
Revisa el archivo mc68hc908gp32.h dentro de la instalación del CodeWarrior donde estan todas las definiciones de los puertos.

Saludos !

Desconectado leonfhl

  • PIC10
  • *
  • Mensajes: 3
Re: Problema con los niveles logicos del HC08
« Respuesta #6 en: 13 de Diciembre de 2008, 15:09:21 »
Me disculpo por mi error en el codigo, lo que hago al hacer    PTA=1 es indicar que le lleve un 1 en binario a todo el bus PTA(7:0) o sea 0000001 en el bus, al hacer la inversion  PTA=~PTA deberia tener un 1111110 en el bus PTA, lo que me dices de la frecuencia de cambio me parece interesante, y creo que ahi esta el error. Gracias por postear
« Última modificación: 13 de Diciembre de 2008, 15:11:23 por leonfhl »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Problema con los niveles logicos del HC08
« Respuesta #7 en: 13 de Diciembre de 2008, 15:55:43 »
Hola, de nada,ahora se entiende mejor, y es tambien válido lo que queres hacer de modificar todo el puerto, a veces cuando quiero verificar que hace el compilador selecciono la opción "dissambley" para poder ver el código assembler generado y verificar que se haga lo que quiero hacer.

Saludos !


 

anything