Autor Tema: al hacer un debug en proteus hay una variable que no cambia su valor--que deberi  (Leído 5346 veces)

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

Desconectado mauruxuus

  • PIC10
  • *
  • Mensajes: 8
saludos
la variable PORTA permanece con el mismo valor('\0') cuando deberia cambiar su valor de la misma manera que lo hicieron las demas variables(que se encuentran en rojo) como se aprecia en la imagen adjunta.

gracias

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
saludos
la variable PORTA permanece con el mismo valor('\0') cuando deberia cambiar su valor de la misma manera que lo hicieron las demas variables(que se encuentran en rojo) como se aprecia en la imagen adjunta.

gracias

Pues si el PORTA es de 7 bits (No de 8 ), al escribir sobre él 0xF80 es como escribir 0x00 ¿O estoy errado?

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
la variable PORTA permanece con el mismo valor('\0') cuando deberia cambiar su valor de la misma manera que lo hicieron las demas variables(que se encuentran en rojo) como se aprecia en la imagen adjunta.

Estás escribiendo en PORTA (dir 0xF80)  que es para lectura -->  Para escritura es en LATA (dir 0xF89)

Además bit_set(TRISA,0)  pone el pin como entrada --> debe ser bit_clear(TRISA,0)

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
...
Pues si el PORTA es de 7 bits (No de 8 ), al escribir sobre él 0xF80 es como escribir 0x00 ¿O estoy errado?

Estás errado, #byte PORTA = 0xF80  significa que a la variable PORTA se la ubica en la dirección 0xF80

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
...
Pues si el PORTA es de 7 bits (No de 8 ), al escribir sobre él 0xF80 es como escribir 0x00 ¿O estoy errado?

Estás errado, #byte PORTA = 0xF80  significa que a la variable PORTA se la ubica en la dirección 0xF80

Buena observación. No sabía que era necesario definir manualmente la dirección del puerto en la RAM. Hubiera pensado que el compilador hacia eso tras bambalinas.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Y vuelvo a indicar lo mismo que indique en otro post:

Si usan CCS, ¿Por qué están jugando con los registros? Utilicen las funciones provistas por CCS para manejar los puertos. Sino usen XC8.

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
... No sabía que era necesario definir manualmente la dirección del puerto en la RAM. Hubiera pensado que el compilador hacia eso tras bambalinas.

Asi "deberia" ser,  dentro del mismo #include<> con todas las demás declaraciones. 

Pero como en algunos PICs la dirección de escritura es distinta que la de lectura, en algunas operaciones el código generado tiene que ser completamente diferente que con una variable standard.  En lugar de hacer eso CCS te provee de funciones como output_x(valor) , input_x() etc  y deja PORTA,LATA...  sin declarar, cosa de "empujarte" a que uses las funciones.

Yo no soy tan estricto como KillerJC pero hay que reconocer que esquivar las funciones de CCS suele dar sorpresas, este hilo es un ejemplo.



Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
... No sabía que era necesario definir manualmente la dirección del puerto en la RAM. Hubiera pensado que el compilador hacia eso tras bambalinas.

Asi "deberia" ser,  dentro del mismo #include<> con todas las demás declaraciones. 

Pero como en algunos PICs la dirección de escritura es distinta que la de lectura, en algunas operaciones el código generado tiene que ser completamente diferente que con una variable standard.  En lugar de hacer eso CCS te provee de funciones como output_x(valor) , input_x() etc  y deja PORTA,LATA...  sin declarar, cosa de "empujarte" a que uses las funciones.

Yo no soy tan estricto como KillerJC pero hay que reconocer que esquivar las funciones de CCS suele dar sorpresas, este hilo es un ejemplo.

Yo creo que en CCS existe esas funciones (utput_x , input_x) porque permite abstracción del código y de esa manera se puede migrar el código a otra arquitectura de microcontrolador sin muchos cambios. Por lo menos así es la idea con Harmony y XC32 de Microchip.

Lo malo de utilizar la abstracción es que generalmente utiliza o crea más código que utilizar directamente los registros involucrados.

 
« Última modificación: 07 de Abril de 2022, 15:43:43 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado mauruxuus

  • PIC10
  • *
  • Mensajes: 8
Ya corregi el bit_set(TRISA,0) a... bit_clear(TRISA,0) para configurar el pin A0 como salida, y ademas intente usar el LATA en lugar del PORTA,

Desconectado mauruxuus

  • PIC10
  • *
  • Mensajes: 8
Ya corregi el bit_set(TRISA,0) a... bit_clear(TRISA,0) para configurar el pin A0 como salida, y ademas intente usar el LATA en lugar del PORTA, pero al hacer debug en la simulacion me da el mismo resultado...la variable sigue sin cambiar su valor

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:al hacer un debug en proteus hay una variable que no cambia su valor--que deberi
« Respuesta #10 en: 07 de Abril de 2022, 16:37:33 »
Ya corregi el bit_set(TRISA,0) a... bit_clear(TRISA,0) para configurar el pin A0 como salida, y ademas intente usar el LATA en lugar del PORTA, pero al hacer debug en la simulacion me da el mismo resultado...la variable sigue sin cambiar su valor

¿Deshabilitaste las entradas del comparador analógico y del ADC?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:al hacer un debug en proteus hay una variable que no cambia su valor--que deberi
« Respuesta #11 en: 07 de Abril de 2022, 17:18:57 »
Ya corregi el bit_set(TRISA,0) a... bit_clear(TRISA,0) para configurar el pin A0 como salida, y ademas intente usar el LATA en lugar del PORTA, pero al hacer debug en la simulacion me da el mismo resultado...la variable sigue sin cambiar su valor

Subí el código.

Desconectado mauruxuus

  • PIC10
  • *
  • Mensajes: 8
Re:al hacer un debug en proteus hay una variable que no cambia su valor--que deberi
« Respuesta #12 en: 07 de Abril de 2022, 17:53:08 »
Ya corregi el bit_set(TRISA,0) a... bit_clear(TRISA,0) para configurar el pin A0 como salida, y ademas intente usar el LATA en lugar del PORTA, pero al hacer debug en la simulacion me da el mismo resultado...la variable sigue sin cambiar su valor

¿Deshabilitaste las entradas del comparador analógico y del ADC?


Soy nuevo en esto no se cual es el comparador analogico y con respecto al ADC, no se si te refieres al registro ADCON1 el cual configuré como 0x0F.

Desconectado mauruxuus

  • PIC10
  • *
  • Mensajes: 8
Re:al hacer un debug en proteus hay una variable que no cambia su valor--que deberi
« Respuesta #13 en: 07 de Abril de 2022, 17:54:16 »
Ya corregi el bit_set(TRISA,0) a... bit_clear(TRISA,0) para configurar el pin A0 como salida, y ademas intente usar el LATA en lugar del PORTA, pero al hacer debug en la simulacion me da el mismo resultado...la variable sigue sin cambiar su valor

Subí el código.


El código es el que esta en la imagen que adjunté

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:al hacer un debug en proteus hay una variable que no cambia su valor--que deberi
« Respuesta #14 en: 07 de Abril de 2022, 17:59:57 »
Ya corregi el bit_set(TRISA,0) a... bit_clear(TRISA,0) para configurar el pin A0 como salida, y ademas intente usar el LATA en lugar del PORTA, pero al hacer debug en la simulacion me da el mismo resultado...la variable sigue sin cambiar su valor

¿Deshabilitaste las entradas del comparador analógico y del ADC?



Soy nuevo en esto no se cual es el comparador analogico y con respecto al ADC, no se si te refieres al registro ADCON1 el cual configuré como 0x0F.


Generalmente en el Puerto A, están las entradas del ADC y/o Comparador analógico. Las cuales están activadas por defecto y no pueden trabajar como entradas o salidas digitales
 Es por eso que debes configurar dichas terminales como digitales.

Lee en las hojas de datos que hace el registro ADCON1 y CMCON, que valores tiene por defecto al energizar el microcontrolador y que valor deben tener para que sean digitales.

Me imagino que PICC ya tiene macros/funciones que sólo debes utilizar.
« Última modificación: 07 de Abril de 2022, 18:02:04 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32