Autor Tema: Problema con Ds1307 y Pic 18f4550  (Leído 7124 veces)

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

Desconectado djim

  • PIC12
  • **
  • Mensajes: 75
Problema con Ds1307 y Pic 18f4550
« en: 08 de Enero de 2010, 02:26:47 »
Hola a todos, les queria hacer una consulta. Tengo un error de compilacion en el MPASM v5.34, el proyecto lo hago correctamente en Niple v.5.4 (digo esto por que lo tengo probado en un 16F877A sin problemas), cuando entro desde el mplab y trato de compilar me salta error en una linea en particular, a continuacion les dejo una parte del ensamblador generado por niple:

paso8
   bcf portc,rc1,0                  ;leer datos de del reloj/calendario ds1307
   movlw b'11010001'
   movwf _np_i2c_slave,1
   movlw b'00000010'                ;leer las horas
   movwf _np_i2c_addr,1
   call ds1307_c0_c1
   movf _np_i2c_rxbuf,w,1
   movwf _np_temp1,1
   bcf _np_temp1,7,1
   bcf _np_temp1,6,1
   bcf _np_temp1,5,1
   call conv_bcd_dec_nibbles
   movlw .20
   btfsc _np_i2c_rxbuf,6,1
========================================
;   clrw                                      EN ESTA INSTRUCCION ME SALTA EL ERROR DE COMPILADO
========================================
   daw
   btfss _np_i2c_rxbuf,5,1
========================================
;   clrw                                      EN ESTA INSTRUCCION ME SALTA EL ERROR DE COMPILADO
========================================
   daw
   addwf _np_temp1,w,1
   movwf hora,1
   movlw b'00000001'                ;leer los minutos
   movwf _np_i2c_addr,1
   call ds1307_c0_c1
   movf _np_i2c_rxbuf,w,1
   movwf _np_temp1,1
   call conv_bcd_dec_nibbles
   movf _np_temp1,w,1
   movwf min,1
   movlw b'00000000'                ;leer los segundos
   movwf _np_i2c_addr,1
   call ds1307_c0_c1
   movf _np_i2c_rxbuf,w,1
   movwf _np_temp1,1
   call conv_bcd_dec_nibbles
   movf _np_temp1,w,1
   movwf seg,1
   ;convertir un registro a bcd
   movf hora,w,1
   movwf _np_temp1,1
   call conv_8_bcd
   movf _np_temp1,w,1
   movwf hora_uni,1
   movf _np_temp2,w,1
   movwf hora_dec,1
   ;convertir un registro a bcd
   movf min,w,1
   movwf _np_temp1,1
   call conv_8_bcd
   movf _np_temp1,w,1
   movwf min_uni,1
   movf _np_temp2,w,1
   movwf min_dec,1
   ;convertir un registro a bcd
   movf seg,w,1
   movwf _np_temp1,1
   call conv_8_bcd
   movf _np_temp1,w,1
   movwf seg_uni,1
   movf _np_temp2,w,1
   movwf seg_dec,1
   movlw b'00000001'                ;seleccionar el lcd 1
   movwf _np_nro_lcd,1
   call usr_lcd_principal
   goto paso8                       ;cierra el ciclo


Ahora le explico, este proyecto consta de 4 anologos y 1 ds 1307. Si lo trato de depurar a traves de MPLAB, le tengo que sacar una de las dos instrucciones "clrw" y me lo compila correctamente, la cuestion es que el reloj se me clava en las hora por ej:
-> "20" <- :00:00
pero la parte de las horas se queda en 20 por ahi cuando le modifico los valores desde el MPLAB se cambia la hora pero a cualquier cosa, por ahi me marca 31:00:00, quiero aclarar que los minutos y segundo funcionan perfecto, es mas tengo corriendo este programa desde un 16F877A y funciona de lujo (como si yo supiera algo jajaja), pero como no me quise quedar con eso, me fije tambien en los datasheet del 18F4550 y no esta esa instruccion, yo pienso en reemplazar esa instruccion pero nose con cual de las nuevas. Desde ya muchisimas gracias a todos (espero me entiendan).

Pd1: En la nueva version de Niple contaremos con la implementacion de envio de datos por USB? eso estaria expectacular.
Pd2: Alguno esta interezado en realizar un proyecto en Visual Basic para la recepcion y envio de datos? Estaria bueno que nos pusieramos de acuerdo para hacer un codigo abierto para todos yo estoy viendo, si hay algun interezado que me mande mp o nose, por que creo que aqui no podemos postear sobre eso, o que algun moderador nos dejara crear el post para poder hablar sobre la comunicacion entre NIPLE y PC utilizando Visual Basic. 

                                                                               DJIM!!!


Desconectado flacoclau

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1692
    • El Micro Reactor
Re: Problema con Ds1307 y Pic 18f4550
« Respuesta #1 en: 08 de Enero de 2010, 10:30:52 »
Hola Djim podría poner el mensaje de error?
quizás sea solo una advertencia, por no tener activado el WDT.
Las personas con buena ortografía me atraen textualmente.

El Micro Reactor

Córdoba capital - Argentina.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Problema con Ds1307 y Pic 18f4550
« Respuesta #2 en: 08 de Enero de 2010, 15:24:27 »
Te adjunto  algunas de las nuevas características que parece que va tener la nueva version:

 1) Declaración de dispositivos: Ahora se declaran los dispositivos en una sección especialmente diseñada para tal fin. Se declaran los dispositivos a utilizar (LCDs, GLCD, Memorias I2C, motores, etc) y se les asigna un nombre "ID" a cada uno. Luego, en el diagrama de flujo, se implementan estos dispositivos haciendo referencia a ellos por medio de su ID. De esta manera, ya no es necesario que seleccionar todas las características y los pines cada vez que lo va a utilizar.

 2) Multiplexado por interrupción Ahora es posible realizar el multiplexado de los displays de 7 segmentos por medios interrupción TMRs. De esta manera el PIC puede atender otras tareas realiza el proceso de multiplexado.

3) Modelos de PIC soportados:

 - 12F629 / 675
 - 16F84 / 84A
 - 16F87 / 88
 - 16F627 / 627A / 628 / 628A / 648 / 648A
 - 16F630 / 676
 - 16F870 / 873 / 873A / 874 / 874A
 - 16F876 / 876A / 877 / 877A
 - 16F882 / 883 / 884 / 886 / 887
 - 18F2455 / 18F2550 / 18F4455 / 18F4550

4) Módulo DS18B20 Sensor de temperatura. El DS18B20 tiene una precisión de 0.1 C. Se incluyen las funciones de Lectura de Codigo ROM y Conexion de varios
sensores en un mismo pin del PIC.

 5) Módulo Matrices Leds. Este modulo permite realizar un cartel tipo marquesina con matrices de leds de manera totalmente automatica. Puede configurar la matriz utilizando cualquiera de los pines del PIC. Permite diseñar un mensaje de texto, mostrar valores variables y realizar refresco (multiplexado) por TMR igual que lo descrito para displays de 7 segmentos. Genera de manera automática el mapa de caracteres (7x5 bits) en EEPROM delPIC. Carga automáticamente el mapa de cada caracter ya sea un valor de texto fijo o una variable. Permite realizar carteles de entre 1 y 16 matrices.

 6) Teclado matricial AD. Puede implementar un teclado matricial por medio de 1 pin AD.

 7) Comunicaciones inhalambricas por RF.

 8) Código ASM optimizado. Programas más cortos, rapidos. Mejoras en el tratamiento de las interrupciones.

 9) Módulo de migración de proyectos. Este módulo le permite migrar su desarrollo a otro modelos de micros.


Fermin
Todos los días se aprende algo nuevo.

Desconectado djim

  • PIC12
  • **
  • Mensajes: 75
Re: Problema con Ds1307 y Pic 18f4550
« Respuesta #3 en: 08 de Enero de 2010, 16:54:56 »
Muchisimas gracias Fer muy bien explicado, pararece que se pone cada vez mejor y Flacoclau gracias por tomarte el laburo de responder.  :lol:

Flacoclau: aqui te dejo los mensajes a la hora de compilar.

Warning[230] C:\18F4550.ASM 68 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 69 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 70 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 71 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 72 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 73 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 74 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 75 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 76 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 77 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 78 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[230] C:\18F4550.ASM 79 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Warning[207] C:\18F4550.ASM 289 : Found label after column 1. (clrw)
Warning[207] C:\18F4550.ASM 291 : Found label after column 1. (clrw)
Error[116]   C:\18F4550.ASM 291 : Address label duplicated or different in second pass (clrw)
Warning[220] C:\18F4550.ASM 969 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 970 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 971 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 972 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 973 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 974 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 975 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 976 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 977 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 978 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 979 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 980 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 981 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 982 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 983 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 984 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 985 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 986 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 987 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 988 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 989 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 990 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 991 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 992 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 993 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 994 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 995 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 996 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 997 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 998 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 999 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1000 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1001 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1002 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1003 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1004 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1005 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1006 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1007 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1008 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1009 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1010 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1011 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1012 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1013 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1014 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1015 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1016 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1017 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1018 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1019 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1020 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1021 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1022 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1023 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1024 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1025 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1026 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1027 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1028 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1029 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1030 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1031 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1032 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1033 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1034 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1035 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1036 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1037 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1038 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1039 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1040 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1041 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1042 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1043 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1044 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1045 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1046 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1047 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1048 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1049 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1050 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1051 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1052 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1053 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1054 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1055 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1056 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1057 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1058 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1059 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1060 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1061 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1062 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1063 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1064 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1065 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1066 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1067 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1068 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1069 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1070 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1071 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1072 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1073 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1074 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1075 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1076 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1077 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1078 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1079 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1080 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1081 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1082 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1083 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1084 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1085 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1086 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1087 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1088 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1089 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1090 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1091 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1092 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1093 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1094 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1095 : Address exceeds maximum range for this processor.
Warning[220] C:\18F4550.ASM 1096 : Address exceeds maximum range for this processor.

                                                       

                                                   DJIM!!!

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Problema con Ds1307 y Pic 18f4550
« Respuesta #4 en: 08 de Enero de 2010, 17:54:21 »
No entiendo mucho de ASM pero me parece que:

Warning 230 parece indicar que no este muy bien definido la configuracion del micro, aunque el programa no daria error por esto y se compilaria.
error 116 y warning207=Como si faltara alguna etiqueta o que faltase alguna etiqueta.

Warning 220= Se excede el maximo rango de direcciones seleccionadas por el micro.

Pero lo mas importante es que indicas que tienes el programa realizado y funcionando para un 16F877; sin embargo los errores te los esta dando como si hubieras elegido un PIC18F4550.
¿no sera que a la hora de simular con MPLAB? hayas selecciondo un micro distinto?

fermin
Todos los días se aprende algo nuevo.

Desconectado flacoclau

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1692
    • El Micro Reactor
Re: Problema con Ds1307 y Pic 18f4550
« Respuesta #5 en: 08 de Enero de 2010, 23:28:07 »
Hola Djim, La lista de errores te marca lo siguiente:

Warning[230] C:\18F4550.ASM 68 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.

Esto es solo una advertencia, para la línea PIC18 en la configuración de fuses no se utiliza más la directiva _config, sino config, osea sin el guión bajo
si la configuración es compatible con este micro te debería funcionar, te digo esto porque me parece que has compilado el programa del 877 en un 18F4550, quizás sea así solo es una apreciación, si es así deberías estudiar el documento C18_Config_Settings_51537e.pdf en la página 181 que corresponde al 18F4550 y ver como setearlo.


Warning[207] C:\18F4550.ASM 289 : Found label after column 1. (clrw)
Error[116]   C:\18F4550.ASM 291 : Address label duplicated or different in second pass (clrw)

Esto es un error y por eso no te lo compila, la instrucción clrw no está en la línea PIC18, te explico porqué, esto es así porque en la línea 16F el registro de trabajo W no es accesible directamente como un registro común, sino con ciertas instrucciones especiales, en este caso clrw, osea limpiar o borrar W; Ahora en la línea PIC18, W   es un registro accesible como cualquier otro y tiene dirección física y concreta en la RAM, por lo tanto para borrarlo debes utilizar la instrucción clrf w osea borrar el registro con el nombre W.
Como la instrucción clrw no existe te lo está tomando como un rótulo o etiqueta, que se utiliza para marcar una línea de programa específica y como la instrucción se repite varias veces te salta que hay varias partes del programa etiquetadas igual.


Warning[220] C:\18F4550.ASM 969 : Address exceeds maximum range for this processor.

Esto es una advertencia, te avisa que estás escribiendo en una parte de la memoria de programa que no existe, quizás estás grabando la EEPROM con algunos datos, al menos así me pasa a mí cuando hago eso.


Espero que te sea útil la info, saludos!!
Las personas con buena ortografía me atraen textualmente.

El Micro Reactor

Córdoba capital - Argentina.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Problema con Ds1307 y Pic 18f4550
« Respuesta #6 en: 09 de Enero de 2010, 15:00:21 »
Muy bien explicado flacoclau,
Me imaginaba que algo asi seria pero no sabia como explicarlo.

Fermin
Todos los días se aprende algo nuevo.

Desconectado djim

  • PIC12
  • **
  • Mensajes: 75
Re: Problema con Ds1307 y Pic 18f4550
« Respuesta #7 en: 09 de Enero de 2010, 22:09:03 »
Exelentes respuestas!!!. Muchisimas gracias Fer_TACA y flacoclau. Al parecer cuando el niple me genera el ensamblador me pone lineas de memoria de mas, eso lo corregi borrandole las ultimas lineas, con respecto al clrw me voy a poner a ver como hacer funcionar el ds1307, le voy a dar 3 dias de fama al mplab. Saludos!

DJIM!!!
 

Desconectado wilsonmm

  • PIC10
  • *
  • Mensajes: 8
Re: Problema con Ds1307 y Pic 18f4550
« Respuesta #8 en: 22 de Mayo de 2010, 14:07:53 »
Hola a todos, les queria hacer una consulta. Tengo un error de compilacion en el MPASM v5.34, el proyecto lo hago correctamente en Niple v.5.4 (digo esto por que lo tengo probado en un 16F877A sin problemas), cuando entro desde el mplab y trato de compilar me salta error en una linea en particular, a continuacion les dejo una parte del ensamblador generado por niple:

paso8
   bcf portc,rc1,0                  ;leer datos de del reloj/calendario ds1307
   movlw b'11010001'
   movwf _np_i2c_slave,1
   movlw b'00000010'                ;leer las horas
   movwf _np_i2c_addr,1
   call ds1307_c0_c1
   movf _np_i2c_rxbuf,w,1
   movwf _np_temp1,1
   bcf _np_temp1,7,1
   bcf _np_temp1,6,1
   bcf _np_temp1,5,1
   call conv_bcd_dec_nibbles
   movlw .20
   btfsc _np_i2c_rxbuf,6,1
========================================
;   clrw                                      EN ESTA INSTRUCCION ME SALTA EL ERROR DE COMPILADO
========================================
   daw
   btfss _np_i2c_rxbuf,5,1
========================================
;   clrw                                      EN ESTA INSTRUCCION ME SALTA EL ERROR DE COMPILADO
========================================
   daw
   addwf _np_temp1,w,1
   movwf hora,1
   movlw b'00000001'                ;leer los minutos
   movwf _np_i2c_addr,1
   call ds1307_c0_c1
   movf _np_i2c_rxbuf,w,1
   movwf _np_temp1,1
   call conv_bcd_dec_nibbles
   movf _np_temp1,w,1
   movwf min,1
   movlw b'00000000'                ;leer los segundos
   movwf _np_i2c_addr,1
   call ds1307_c0_c1
   movf _np_i2c_rxbuf,w,1
   movwf _np_temp1,1
   call conv_bcd_dec_nibbles
   movf _np_temp1,w,1
   movwf seg,1
   ;convertir un registro a bcd
   movf hora,w,1
   movwf _np_temp1,1
   call conv_8_bcd
   movf _np_temp1,w,1
   movwf hora_uni,1
   movf _np_temp2,w,1
   movwf hora_dec,1
   ;convertir un registro a bcd
   movf min,w,1
   movwf _np_temp1,1
   call conv_8_bcd
   movf _np_temp1,w,1
   movwf min_uni,1
   movf _np_temp2,w,1
   movwf min_dec,1
   ;convertir un registro a bcd
   movf seg,w,1
   movwf _np_temp1,1
   call conv_8_bcd
   movf _np_temp1,w,1
   movwf seg_uni,1
   movf _np_temp2,w,1
   movwf seg_dec,1
   movlw b'00000001'                ;seleccionar el lcd 1
   movwf _np_nro_lcd,1
   call usr_lcd_principal
   goto paso8                       ;cierra el ciclo


Ahora le explico, este proyecto consta de 4 anologos y 1 ds 1307. Si lo trato de depurar a traves de MPLAB, le tengo que sacar una de las dos instrucciones "clrw" y me lo compila correctamente, la cuestion es que el reloj se me clava en las hora por ej:
-> "20" <- :00:00
pero la parte de las horas se queda en 20 por ahi cuando le modifico los valores desde el MPLAB se cambia la hora pero a cualquier cosa, por ahi me marca 31:00:00, quiero aclarar que los minutos y segundo funcionan perfecto, es mas tengo corriendo este programa desde un 16F877A y funciona de lujo (como si yo supiera algo jajaja), pero como no me quise quedar con eso, me fije tambien en los datasheet del 18F4550 y no esta esa instruccion, yo pienso en reemplazar esa instruccion pero nose con cual de las nuevas. Desde ya muchisimas gracias a todos (espero me entiendan).

Pd1: En la nueva version de Niple contaremos con la implementacion de envio de datos por USB? eso estaria expectacular.
Pd2: Alguno esta interezado en realizar un proyecto en Visual Basic para la recepcion y envio de datos? Estaria bueno que nos pusieramos de acuerdo para hacer un codigo abierto para todos yo estoy viendo, si hay algun interezado que me mande mp o nose, por que creo que aqui no podemos postear sobre eso, o que algun moderador nos dejara crear el post para poder hablar sobre la comunicacion entre NIPLE y PC utilizando Visual Basic. 

                                                                               DJIM!!!




No soy muy experto pero lo que he heccho en esa situacion es elimanar la instruccion CLRW.... tengo entendido que no se puesde repetir mas de 1 vez en el programa... ami me ha funcionado!