TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Torete en 11 de Diciembre de 2009, 17:12:33

Título: Problemas con el Pic 16f876a
Publicado por: Torete en 11 de Diciembre de 2009, 17:12:33
 :shock:muy buenas:
tengo el siguiente percanse en la programacion con este pic en la parte de memoria eeprom, el problema es el siguiente:
tengo k grabar en la eeprom los datos obtenidos del modulo de conversion analogo/digital, la parte alta y la parte baja,
ademas tengo k incrementar no se k registro para k pueda ir almacenando en la eeprom los datos uno por uno hasta llenar esta memoria,
tengo dudas sobre los registros eeadr y eedata no tengo muy claro su funcion pero se k me sirven, estoy programando en asssembler..
desde ya muchas gracias.. :shock:
PD: creo k se grabar en la eeprom, pero no se cmo o dnd llamar a grabar para tomar los datos de la conversion e ir grabandolos sucesivamente en la eeeprom,
el programa funciona con un interruptor el cual cuando es accionado comienza la conversion, finalizada la conversion y los muestra en portb,la parte baja y portc, la parte alta, de ay debo grabar los datos en eeprom, o los debo grabar antes???
Título: Re: Problemas con el Pic 16f876a
Publicado por: migsantiago en 11 de Diciembre de 2009, 17:24:47
Hola, primero por favor lee este link:

http://www.todopic.com.ar/foros/index.php?action=globalAnnouncements;id=1

Ahí entenderás porque se modificó el título de tu tema.

Después sería bueno que dieras una vuelta por el subforo de Iniciación a los microcontroladores. Ahí tendrás la solución a tus preguntas.

Si aún tienes dudas puedes subir tu código y avances para que se revisen con más detalle.
Título: Re: Problemas con el Pic 16f876a
Publicado por: juan47 en 12 de Diciembre de 2009, 13:53:30
Hola torete
No se mucho sobre este mundillo de la picmania
Intentare dar una idea sobre como entiendo lo que es eedat y eeadr
Eeadr es la direccion de la EEPROM en la que quieres depositar un dato como cuando das una direccion en la RAM
de proposito general :
adresh
Título: Re: Problemas con el Pic 16f876a
Publicado por: Torete en 12 de Diciembre de 2009, 14:09:03
Hola torete
No se mucho sobre este mundillo de la picmania
Intentare dar una idea sobre como entiendo lo que es eedat y eeadr
Eeadr es la direccion de la EEPROM en la que quieres depositar un dato como cuando das una direccion en la RAM
de proposito general :
adresh

Ola:
Entonces la que debo incrementar en 1 es EEADR para que vaya cambiando de posicion dentro de la eeprom para los nuevos valores de mi conversion??
entonces debo tomar los datos de adresh y adresl y pasarlos a eedata o no???
realmente tengo muchas dudas..
revisate en programa??
gracias 
Título: Re: Problemas con el Pic 16f876a
Publicado por: juan47 en 12 de Diciembre de 2009, 14:39:59
Pido disculpas de novato
No se que hice con mi anterior post soy un poco manazas :oops:
Si efectivamente deves incrementar la direccion de EEPROM
Ejem:
_captura del valor bajo(adresl)
_paso el valor a  eedata(L)
_grabo en direccion 00 de EEPROM
_captura del valor alto(adresh)
_paso el valor a eedata(h)
_grabo en direccion 01 de EEPROM

tambien decirte que tienes una llamada a la etiqueta "leer_eeprom" la cual no tienes definida
Por ultimo no se la finalidad del programa pero la grabacion de la EEPROM es para que en un fallo de alimentacion no
pierdas los datos
entonces si visualizas primero el dato y luego lo grabas en la EEPROM cuando se resetee  el dato sera el actual
si por el contrario primero grabas el dato y luego visualizas este , en un fallo de alimentacion o se resetea
visualizas siempre el ultimo dato hasta su nuevo refresco
Un saludo
Título: Re: Problemas con el Pic 16f876a
Publicado por: Torete en 14 de Diciembre de 2009, 13:06:12
ola
bueno parece que ya toy entendiendo un pokito mas voy a ver que pasa y te cuento...
aaa la etiqueta ta mal es "escribir_eeprom"  :)
desde ya muchas gracias
Título: Re: Problemas con el Pic 16f876a
Publicado por: juan47 en 14 de Diciembre de 2009, 15:24:35
Hola
Espero que se disipe la duda
Sigue contandonos como te va el codigo
Un saludo
Título: Re: Problemas con el Pic 16f876a
Publicado por: Torete en 14 de Diciembre de 2009, 15:34:48
ola ola de nuevo:
Las siguientes instrucciones deben ir despues de la conversion?, esta bien lo que estoy asiendo?
no he podido podido probarlo por la sencilla razon k me encuentro enfermo y no e podido ir al instituto :)                                           
                                                bsf      status,6                      ;selecciona el banco 2
         clrf      eeadr         ;selecciona direccion 00 de eeprom
         movf      adresl,w
         movwf      eedata
         call      escribir_eeprom
         incf      eeadr,1
         movf      adresh,w
         movwf      eedata
         call      escribir_eeprom
         incf      eeadr,1
una pregunta el programa tengo k subirlo de nuevo o editarlo, si lo tengo k editar como lo hago, ya que soy nuevo en esto de foros, o lo subo de nuevo
Título: Re: Problemas con el Pic 16f876a
Publicado por: juan47 en 14 de Diciembre de 2009, 16:22:41
Hola
Si deberian ir despues de la captura para asi ir refrescando la EEPROM o para ir guardando mas datos en
otras direcciones y hacer un promedio
Pienso que has entendido lo que trate de esplicarte
La ultima linea "incf   eeadr,1" pienso que no te molestara a la hora de ejecucion del programa,la puedes borrar
ya que te apunta a la direccion 02 de la EEPROM
Un consejo de novato yo me haria una rutina para grabar la EEPROM y poderla utilizar en otros programas
Un saludo
Título: Re: Problemas con el Pic 16f876a
Publicado por: Torete en 14 de Diciembre de 2009, 16:43:45
Hola:
El proyecto que estoy realizando se trata de tomar mediciones con una celda solar (la mayor cantidad de mediciones)por ejemplo cada 1 hora las 24 hrs del dia sin k uno este presente, para posteriormente guardar los datos en la eeeprom de este pic, y llenar las 256 posiciones de la EEPROM para despues rescatar estos datos.. espero k se entienda..(por el momento todo esto lo estoy realizando en laboratorio, hasta tener el programa concluido)
muchas gracias por tu ayuda.

PD: ¿tendria k ir incrementando 1 por 1 hasta llegar a 256 o existe otra manera mas practica?
Título: Re: Problemas con el Pic 16f876a
Publicado por: Torete en 16 de Diciembre de 2009, 13:36:05
ola juan47:
 :?
he probado el programa, con una fuente de alimentacion variable, a la entrada RA0 le meto 3 volt, despues al ver los datos que fueron grabados con el icprog hay me salta una duda en la parte de abajo lo unico k me cambia es esto...adjunto el dibujito.creo k algo esta mal
Título: Re: Problemas con el Pic 16f876a
Publicado por: juan47 en 16 de Diciembre de 2009, 16:23:14
Hola torete
He estado muy ocupado

Citar
PD: ¿tendria k ir incrementando 1 por 1 hasta llegar a 256 o existe otra manera mas practica?
No conozco otra manera de ir incrementando la direccion de la EEPROM

Citar
he probado el programa, con una fuente de alimentacion variable, a la entrada RA0 le meto 3 volt, despues al ver los datos que fueron grabados con el icprog hay me salta una duda en la parte de abajo lo unico k me cambia es esto...adjunto el dibujito.creo k algo esta mal
Parece que solo introduce el dato en la direccion 00
Adjunta el codigo modificado ,como en tu primer podt y procurare darle un vistazo ,si el tiempo me lo permite
Un saludo
Título: Re: Problemas con el Pic 16f876a
Publicado por: Torete en 16 de Diciembre de 2009, 21:55:33
ay va el programita con los cambios
Título: Re: Problemas con el Pic 16f876a
Publicado por: juan47 en 18 de Diciembre de 2009, 14:51:35
Hola torete
He probado el programa con MPLAB y me he dado cuenta de que el problema radica
que al volver de la primera grabacion en la EEPROM seguidamente se incrementa
EEADR
Al salir de la escritura se esta en el banco 0 y EEADR esta en el banco 2 por ello no se incrementaba
Deberias poner 
call  escribir_eeprom
bsf  STATUS,6
incf  eeadr

Tambien decirte que hay algunos registros de la SFR que las direcciones no se corresponden
Para todo ello te recomiendo la descarga del datasheet del dispositivo, te sera muy util
Un saludo
Título: Re: Problemas con el Pic 16f876a
Publicado por: Torete en 18 de Diciembre de 2009, 16:35:42
ola una pequeña duda
para tomar los datos despues de la conversion  (adresl y h) tengo k primero ir a sus bancos correspondientes y despues moverlos a eedata?
puede ser k = tenga malo?
gracias probare con lo k me dijste y con esto otro y te cuento cmo me fue
graciassssssss  8)
Título: Re: Problemas con el Pic 16f876a
Publicado por: Torete en 21 de Diciembre de 2009, 22:13:27
ola juan47:
probe el programa pero me sale otro error, graba en la eeprom, pero ahora no me graba lo k yo quiero y ademas graba en todas la direcciones de la eeprom
cuando deberia grabar en las dos primeras posiciones, no se k estara mal en el programita, te lo envio para k le eches un vistaso vale.. (lo pruebo con 5 volt y me deberia mostar en la eeprom 03 FF, lo cual no lo ase.. me  muestra puros garabatos :))
gracias  8)
Título: Re: Problemas con el Pic 16f876a
Publicado por: juan47 en 22 de Diciembre de 2009, 18:15:13
Hola torete
Disculpa si me reitero en algunas cosas
Citar
Tambien decirte que hay algunos registros de la SFR que las direcciones no se corresponden
Para todo ello te recomiendo la descarga del datasheet del dispositivo, te sera muy util
Efectivamente le das el mismo valor al declarar los registros
Citar
;
status      equ   3h
trisa      equ   5h
trisc      equ   7h
portc      equ   7h
portb      equ   6h
porta      equ   5h
trisb      equ   6h
adcon1      equ   1fh
adcon0      equ   1fh
adresh      equ   1eh
adresl      equ   9eh
conta1      equ   20h
eecon1      equ   18ch
eecon2      equ   18dh
eedata      equ   10ch
eeadr      equ   10dh
Si te fijas ADCON0 y ADCON1 ,por nombrar alguno,tienen el mismo valor EQU 1FH asi como otros
esto puede darte errores en los datos a guardar en la EEPROM
Esto deverias solucionarlo para que te grave los datos correctos
El otro tema de que se llena la EEPROM es devido a que no controlas su direccion (EEADR)
Citar
   movf   adresh,w
      bcf   status,5
      bsf   status,6      ;banco2
      movwf   eedata
      call   escribir_eeprom
      bsf   status,6      ;banco2
      incf   eeadr,1
      bsf   status,5
      bcf   status,6      ;banco1
      movf   adresl,w
      bcf   status,5      ;banco2
      bsf   status,6
      movwf   eedata
      call   escribir_eeprom
Al principio no pones, como en el archivo que adjuntaste anteriormente,la linea   clrf EEADR
y despues de grabar los datos del registro ADRESH incrementas la direccion de la EEPROM y
grabas los datos del registro ADRESL
Esto provoca que al volver a efectuar otra conversion nueva A/D y querer otra vez volver a grabar en la
EEPROM la direccion que hay en EEADR es 01 y en consecuencia ADRESH pisa el valor anteriormante grabado
y ADRESL se graba en la direccion EEPROM 03
Un saludo
Título: Re: Problemas con el Pic 16f876a
Publicado por: Torete en 22 de Diciembre de 2009, 22:44:32
-efectivamente cambie las direcciones de la SFR a la que corresponden,
-tambien el clrlf eeadr lo declaro en la parte del inicio al final,
- con respecto a esta parte del programa agrege en la ultima linea un incremento en eeadr, para k cuando vuelva a realizar otra conversion grabe en la direccion 02 y 03 parte alta y baja  respectivamente.

       movf   adresh,w
      bcf   status,5
      bsf   status,6      ;banco2
      movwf   eedata
      call   escribir_eeprom
      bsf   status,6      ;banco2
      incf   eeadr,1
      bsf   status,5
      bcf   status,6      ;banco1
      movf   adresl,w
      bcf   status,5      ;banco2
      bsf   status,6
      movwf   eedata
      call   escribir_eeprom
      incf   eeadr,1
aora el problemita k tengo es que no me esta grabando en las siguientes direcciones al realizar la siguiente conversion, por k al accionar el interruptor varias veces para un mismo dato me deberia ir grabando parte alta y parte baja, parte alta y baja asi sucesivamente , asta llenar la eeprom el problema es k no me esta incrementando como yo kiero a lo mejor me estoy equivocando en algo k no estoy viendo y no me puedo dar cuenta.
te envio el programa con los arreglos, ya no es necesario k muestre en las portb y portc la parte baja y alta..
gracias me a servido de mucha ayuda tus indicaciones, o si no todavia estaria estankado desde el principio..


Título: Re: Problemas con el Pic 16f876a
Publicado por: Torete en 22 de Diciembre de 2009, 22:50:23
el programa en si lo k deberia aser es lo siguiente:
ejemplo:
tomar datos cada 30 minutos (es decir k yo cada 30 minutos debo presionar el interruptor para k se inicie el programa, y grabe el dato finalizada la conversion), e ir guardandolos en la eeprom hasta llenarla, o una vez apagado el pic debo ver los datos guardados por ejemplo de 15 pinchasos, los cuales deberian estar en la eeeprom, no se si me explike bien, espero k yes
desde ya muchas gracias por tu paciencia y voluntad para enseñar
gracias...
Título: Re: Problemas con el Pic 16f876a
Publicado por: juan47 en 23 de Diciembre de 2009, 06:56:25
Hola torete
Si en la ultima parte del codigo pusiste incf EEADR pero el problema es que la siguiente linea es un END
consecuentemente reinicia el programa comenzando de nuevo con él
Tendrias que hacer un bucle hacia comienzo esperando la nueva actuacion sobre RA3
No tienes que darme las gracias puesto que el programa lo estas haciendo tú solo
Un saludo
Título: Re: Problemas con el Pic 16f876a
Publicado por: juan47 en 24 de Diciembre de 2009, 11:46:25
Hola
Se me olvido comentarte que el programa vuelve al inicio si tienes WDT activado
Un saludo
Feliz Navidad