Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

PIC 16f887 - Problema asignación puerto y bit individual

2 participantes

Ir abajo

PIC 16f887 - Problema asignación puerto y bit individual Empty PIC 16f887 - Problema asignación puerto y bit individual

Mensaje por fpalena Vie 9 Mayo 2014 - 1:55

Buenas noches.
Soy nuevo en el desarrollo sdcc en linux y estoy teniendo un problema.

Estoy trabajando con:

  • xubuntu 14.04
  • piklab 0.16.2
  • sdcc 3.3.0


 La cuestión es que obtengo diferentes resultados escribiendo PORTA o RAx.
Si escribo:

Código:
/* ----------------------------------------------------------------------- */
/* Plantilla generada por Piklab */
#include <pic16f887.h>

/* ----------------------------------------------------------------------- */
/* Bits de configuración: adapte los parámetros a su necesidad */
typedef unsigned int word;
word __at _CONFIG1 CONFIG1 = _HS_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF;
word __at _CONFIG2 CONFIG2 = _BOR40V & _WRT_OFF;

void isr() __interrupt 0 {                                                          /* rutina de servicio de interrupciones */
    /* << agregue el código de interrupción >> */
}

void main(void)
{
  TRISB = 0x00;
 
  PORTB = 0b00001010;
 
  while(1) {
  }
}

Leo las salidas del pic y se escriben correctamente.

En cambio si escribo
Código:
/* ----------------------------------------------------------------------- */
/* Plantilla generada por Piklab */
#include <pic16f887.h>

/* ----------------------------------------------------------------------- */
/* Bits de configuración: adapte los parámetros a su necesidad */
typedef unsigned int word;
word __at _CONFIG1 CONFIG1 = _HS_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF;
word __at _CONFIG2 CONFIG2 = _BOR40V & _WRT_OFF;

void isr() __interrupt 0 {                                                          /* rutina de servicio de interrupciones */
    /* << agregue el código de interrupción >> */
}

void main(void)
{
  TRISB = 0x00;
 
  PORTB = 0X00;
  RB1 = 1;
  RB3 = 1;
 
  while(1) {
  }
}

Obtengo una salida sólo en RB3.

¿Qué puede ser lo que está pasando?

Gracias
Fernando

fpalena
Nuevo Usuario
Nuevo Usuario

Mensajes : 2
Fecha de inscripción : 09/05/2014

Volver arriba Ir abajo

PIC 16f887 - Problema asignación puerto y bit individual Empty Re: PIC 16f887 - Problema asignación puerto y bit individual

Mensaje por fpalena Lun 12 Mayo 2014 - 0:52

Revisé y no es el sdcc. El código asembler es correcto, el problema debe ser al linkear.

¿A alguien se le ocurre cuál puede ser el problema?

Saludos
Fernando

fpalena
Nuevo Usuario
Nuevo Usuario

Mensajes : 2
Fecha de inscripción : 09/05/2014

Volver arriba Ir abajo

PIC 16f887 - Problema asignación puerto y bit individual Empty Re: PIC 16f887 - Problema asignación puerto y bit individual

Mensaje por EdgarRobles Sáb 12 Dic 2015 - 21:30

Aunque ya es el antiguo no esta de mas hacer la observación que no estas haciendo el cambio entre bancos para hacer los ajustes del registro de los puertos, por ejemplo:
RP0=1;
RP1=0;
esto es obligatorio en ensamblador pero no se si también sea obligatorio en SDCC Question

EdgarRobles
Nuevo Usuario
Nuevo Usuario

Mensajes : 2
Fecha de inscripción : 12/12/2015

Volver arriba Ir abajo

PIC 16f887 - Problema asignación puerto y bit individual Empty Re: PIC 16f887 - Problema asignación puerto y bit individual

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.