TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Huriz en 12 de Marzo de 2007, 05:17:36
-
Wenas, tenemos un proyecto para clase en un 16f84a, y nos han dicho q tiene q tenemos q usar componentes lo mas pekeños posibles para ahorrar en material y en espacio, la cosa es que hemos elegido un pic 12f629 para sustituir nuestro pic por este ultimo. Hemos conseguido pasar el codigo sin que nos de errores, xro a la hora de compilar y debugear..las comparaciones utilizando "btfsc y btfss" no funcionan correctamente como en el 16f84a. sabe alguien porque puede ser?
utiliamos el mplab para debuguear, cambiamos todos los parametros en este prorama, es decir le cambiamos el pic para decirle que el codigo escrito es para el 12f629 y al compilar no da problemas.
Gracias por adelantado y haber si alguien sabe..que estamos ya desesperados..
-
Huriz es un poco escueta tu información y sin mayores datos técnicos es imposible saber qué está sucediendo.
¿Puedes comentarnos qué es lo que esperas que suceda y qué es lo que realmente sucede?
-
oks, veamos, nosotros hemos hecho un programa para el pic 16f84a, y cambiado el include y los puertos lo hemos pasado a codigo para el pic 12f629. Una vez finalizado el proceso de cambio, y ver que no nos da ningun error, hemos debugueado el programa, y hemos comprobado que a la hora de hacer conparaciones con las sentecias btfsc y btfss, no salta a donde deveria saltar...
un ejemplo, la memoria del pic, si no la has utilizado nunca viene como FF, pues nosotros pasamos a una variable el contenido de la memoria, que seria FF, si comparamos
call leer memoria ; funcion donde hemos leido lo que hay en la memoria y donde pasamos el dato a EEDATA
movf EEDATA,W ; pasamos el contenido de EEDATA a W, q al ser el pic nuevo contiene FF
sublw 0FFH ;restamos a W FF, lo cual nos tendria q dar 0
btfsc status,z
call si_son_iguales
call si_son_diferentes ;Tendrai que entrar aki xro entra en la de arriba
y eso es lo que nos pasa...con el 16f84a funcionaba..y sin tocar estas partes de codigo al pasarlo al 12f629 las comparaciones ya nos nos funcionan
-
Una pregunta, ¿cómo es la rutina de lectura de la eeprom? La pueden subir?
La declaración de los registros del PIC la hacen manualmente o usando los .inc?
¿Porqué asumen que el contenido es 0xFF ? esto es solo si lo acaban de grabar, si su programa hace uso de la EEPROM entonces puede que este valor cambie.
Saludos
-
hola
¿te parece maunix que podria ser el tipico error que solemos cometer al pasar del 16f84 a otro micro con comparadores o conversores a/d?
Huriz yo no se nada de assembler, pero diria que el codigo posteado no es suficiente para saber cual es el problema con certeza
saludos
-
¿te parece maunix que podria ser el tipico error que solemos cometer al pasar del 16f84 a otro micro con comparadores o conversores a/d?
No, ya que de acuerdo a lo que interpreto del código, Huriz habla de una comparación entre 2 valores , no a usar el módulo de comparación.
Huriz yo no se nada de assembler, pero diria que el codigo posteado no es suficiente para saber cual es el problema con certeza
Bueno, casualmente esto es lo que le he pedido. :)
-
bueno, la cosa ya esta resuelta...o eso parece...cosa d la memoria q habia q cambia al banco 1 para cargar dato en el EEDATA (en el 16f84a no) y algo parecido pasaba en la escritura. ya esta resuelto. un saludo y muchas gracias
(creemos q esta resuelto claro...jejeje, xro vaya..si eso ya tendreis noticias d q no nos funciona)
-
bueno, la cosa ya esta resuelta...o eso parece...cosa d la memoria q habia q cambia al banco 1 para cargar dato en el EEDATA (en el 16f84a no) y algo parecido pasaba en la escritura. ya esta resuelto. un saludo y muchas gracias
Jeje, esto me sospechaba, por eso te pedí que subas el código.
-
no me explique bien, queria decir que es algo habitual no configurar los comparadores como entradas/salidas digitales antes de usarlos para ese fin.
por otra parte me alegro que lo hayas solucionado.
un saludo.