Autor Tema: registros fantasma en el 18F4550  (Leído 3969 veces)

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
registros fantasma en el 18F4550
« en: 15 de Agosto de 2010, 12:10:48 »
hola.estoy empezando a programar los 18Fxxxx en ensembler.ya que este tema esta dedicado al asm.en los demas me dicen que lo mejor en estos pics,
es acerlo todo en C.
aunque no pongo contra.solo puedo decir que si se quiere aprender bien el funcionamiento de esta serie.hay que empezar desde los cimientos.
otra cosa es que solo nos interese realizar un programa que nos realize una funcion determinada y que nos funcione.cada cual tiene sus preferencias.

en la migracion de los 16F a los 18F me he dado cuenta de que esto es un mundo bastante diferente y con mayor complejidad.sin embargo tenemos
la mitad del trabajo realizado.al haber estudiado las series anteriores.y cullos modulos equivalentes no difieren mucho de entre ellos.solo la forma
en tratar los datos.

como primer problema que se me plantea,resulta que al declarar la etiqueta     include "18F4550.inc"
algunos etiquetas que definen el registro SSPCON2.como son ACKEN,ACKDT,ACKSTAT.con sus respectivos valores 0x04,0x05,0x06.
se introducen en la memoria ram como si los hubiera declarado en un CBLOOK.

tambien estan A,ADCS1,ACTVIE,ACQT0,y ABDOVF con sus respectivos valores 0x00,0x01,0x02,0x03,0x07.
y que ocupan sus respectivas direcciones tambien en la memoria RAM.

como estoy empezando con esta serie.supongo que no he declarado algo en el compilador para que esto no pase.
haber si le a pasado a alguien algo parecido.

saludos.

Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: registros fantasma en el 18F4550
« Respuesta #1 en: 15 de Agosto de 2010, 13:18:06 »
hola.estoy empezando a programar los 18Fxxxx en ensembler.ya que este tema esta dedicado al asm.en los demas me dicen que lo mejor en estos pics,
es acerlo todo en C.
aunque no pongo contra.solo puedo decir que si se quiere aprender bien el funcionamiento de esta serie.hay que empezar desde los cimientos.
otra cosa es que solo nos interese realizar un programa que nos realize una funcion determinada y que nos funcione.cada cual tiene sus preferencias.

E muy cierto lo que comentas, ayuda mucho a entender el funcionamiento. Pero con un par de proyectos alcanza, después sácales provecho y ahorra mucho tiempo programando en C.  ;-)

en la migracion de los 16F a los 18F me he dado cuenta de que esto es un mundo bastante diferente y con mayor complejidad.sin embargo tenemos
la mitad del trabajo realizado.al haber estudiado las series anteriores.y cullos modulos equivalentes no difieren mucho de entre ellos.solo la forma
en tratar los datos.

como primer problema que se me plantea,resulta que al declarar la etiqueta     include "18F4550.inc"
algunos etiquetas que definen el registro SSPCON2.como son ACKEN,ACKDT,ACKSTAT.con sus respectivos valores 0x04,0x05,0x06.
se introducen en la memoria ram como si los hubiera declarado en un CBLOOK.

tambien estan A,ADCS1,ACTVIE,ACQT0,y ABDOVF con sus respectivos valores 0x00,0x01,0x02,0x03,0x07.
y que ocupan sus respectivas direcciones tambien en la memoria RAM.

como estoy empezando con esta serie.supongo que no he declarado algo en el compilador para que esto no pase.
haber si le a pasado a alguien algo parecido.

saludos.



Te refieres a que se define:
Código: [Seleccionar]
SSPCON2         EQU  H'0FC5'
y:
Código: [Seleccionar]
;----- SSPCON2 Bits --------------------------------------------------------
GCEN            EQU  H'0007'
ACKSTAT         EQU  H'0006'
ACKDT           EQU  H'0005'
ACKEN           EQU  H'0004'
RCEN            EQU  H'0003'
PEN             EQU  H'0002'
RSEN            EQU  H'0001'
SEN             EQU  H'0000'

?

Estas definiciones dependen de como lo utilices, si tu haces:

Código: [Seleccionar]
movlw SSPCON2
Estás cargando el valor 0xFC5 al registro W.

Pero en cambio:

Código: [Seleccionar]
movwf SSPCON2
Estás cargando el contenido de W al registro SSPCON2.


Los bits son definidos para trabajar por ejemplo:

Código: [Seleccionar]
bsf SSPCON2, PEN
Estas seteando el bit PEN del registro SSPCON2.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: registros fantasma en el 18F4550
« Respuesta #2 en: 15 de Agosto de 2010, 15:48:19 »
gracias suky por tu explicacion.eso lo entiendo.

hay mucho registros en el p18F4550.inc  que se definen sus bit por una etiqueta para facilitar la programacion.
el problema esta en el porque toma el compilador a estas etiquetas como si fueran registros?.

te adjunto el programa para que veas lo que quiero decir.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: registros fantasma en el 18F4550
« Respuesta #3 en: 15 de Agosto de 2010, 15:55:40 »
No puedo abrir tu proyecto, porque tiene la simulación de proteus, y por lo visto me falta un archivo...  :5] Guardalo más simple por favor..


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: registros fantasma en el 18F4550
« Respuesta #4 en: 15 de Agosto de 2010, 18:20:29 »
valla. lo pongo sin simulador.
« Última modificación: 18 de Agosto de 2010, 17:26:41 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: registros fantasma en el 18F4550
« Respuesta #5 en: 15 de Agosto de 2010, 20:33:11 »
gracias suky por tu explicacion.eso lo entiendo.

hay mucho registros en el p18F4550.inc  que se definen sus bit por una etiqueta para facilitar la programacion.
el problema esta en el porque toma el compilador a estas etiquetas como si fueran registros?.

te adjunto el programa para que veas lo que quiero decir.

Es cierto lo que comentas, toma esas definiciones como registros. Y es porque se utiliza la sentencia xxxx equ 0xXX para la definición. Pero no le des importancia, mientras tu lo utilices de forma correcta no habrá problemas.

Después viendo el código, y por más que estén comentados, ten en cuenta que estos microcontroladores tienen dos vectores de interrupciones ubicados en 0x08 y 0x18.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: registros fantasma en el 18F4550
« Respuesta #6 en: 18 de Agosto de 2010, 11:06:28 »
Hola groundman hace tiempo estuve siguiendo tus pasos , puse lo que fui haciendo en este post talvez y te pueda servir de algo.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: registros fantasma en el 18F4550
« Respuesta #7 en: 21 de Agosto de 2010, 15:40:16 »

Es cierto lo que comentas, toma esas definiciones como registros. Y es porque se utiliza la sentencia xxxx equ 0xXX para la definición. Pero no le des importancia, mientras tu lo utilices de forma correcta no habrá problemas.

Después viendo el código, y por más que estén comentados, ten en cuenta que estos microcontroladores tienen dos vectores de interrupciones ubicados en 0x08 y 0x18.


Saludos!

tienes razon suky.no importa lo de las etiquetas.mientras los valores de los registros sean los que tienen que ser.aunque podemos confundirnos a la hora de programar si no estamos atentos.


esto debe de ser algun fallo del mplab.por eso  no me voy a romper la cabeza valla a que no tenga solucion.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: registros fantasma en el 18F4550
« Respuesta #8 en: 21 de Agosto de 2010, 15:42:31 »
Hola groundman hace tiempo estuve siguiendo tus pasos , puse lo que fui haciendo en este post talvez y te pueda servir de algo.

Saludos

gracias sander.me va a resultar muy util tus ejemplos para empezar con esta serie de pic.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: registros fantasma en el 18F4550
« Respuesta #9 en: 21 de Agosto de 2010, 16:40:49 »
 :5] no puedo ignorar este error.

resulta que al insertar el archivo .inc y ponerlo a partir de la direccion 0x080 no hay ningun problema.
pero si lo pongo en la 0x079 ya empiezan los errores al compilar.

ya que el mplab ha cojido la configuracion de los bits _CPD_ON_5H del registro CONFIG5H como un registro.
y me ocupa la direccion 0x079 que realmente es un valor a asignar al CONFIG5H.

creo que no estoy declarando alguna directiva del compilador.
esto hay que buscar el fallo como sea. :?

Montando mi primera impresora 3D (Raprep Prusa i3)