Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

08/08/2013 #1


Interrupción en c
Necesito vuestra ayuda.

estoy programando en c el pic18f4550 y con el MPLAB IDE v8

me he metido a programa una interrupción y cuando compilo me dice esto:

Error [499] ; 0. undefined symbol:
_enable_interrupts(dmx.obj)

supongo que es en las líneas de código:

enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

creo que me falta agregar un include que contenga esa funcion, me aprece a mi. como soluciono este problema¿ que cual libreria està?

gracias un saludo ...
09/08/2013 #2
Moderador

Avatar de D@rkbytes

Miguel Fominaya dijo: Ver Mensaje
creo que me falta agregar un include que contenga esa función
Lo que hace falta es que pongas el código completo para determinar el origen del problema.
Ya que viendo el código o durante la compilación se podrá saber donde puede estar el error.
09/08/2013 #3


Hola, pues tienes toda la razón. os pido disculpas, ahi va el código

Código PHP:
/***********************************************************************
** I N C L U D E S **********************************************************/
#include <htc.h>
#include <lcd_84F4550.c>
#include <stdio.h>
#include <stdlib.h>
#include <eeprom_routines.h>

#define INT_RDA                   0x9D20
#define GLOBAL                    0xF2C0


/************************************************************************
*                    Estados protocolo DMX                              *
************************************************************************/

#define       DMX_ESPERA_BYTE              0
#define       DMX_ESPERA_BREAK            1
#define       DMX_ESPERA_START            2
#define       DMX_ESPERA_DATO             3
#define       DMX_RECEPCION_DATOS     4


/************************************************************************
*                    Variables globales y constantes                    *
************************************************************************/

#define TotalCanales          3            // Total canales a almacenar en este caso solo interesan los 3 primeros
int TramaDMX[TotalCanales];          // Trama completa de valores DMX

int CanalDMX;                     // Canal DMX seleccionado para visualizar, de 1 a 512
int DatoDMX;                       // Dato que contiene el canal seleccionado
int DMX_Estado DMX_ESPERA_BREAK// Estado de la máquina de estados
int DatoRX;                                //    Dato genérico recibido en USART
int DMX_Indice 0;                    // Apuntador a una posición de la trama DMX


union                                               // Estructura para hacer una copia del registro RCSTA
  
{
    
unsigned char registro;
    
struct {
        
unsigned char RX9D:1;
        
unsigned char OERR:1;
        
unsigned char FERR:1;
        
unsigned char ADDEN:1;
        
unsigned char CREN:1;
        
unsigned char SREN:1;
        
unsigned char RX9:1;
        
unsigned char SPEN:1;
    } 
bits ;
  }
Copia_RCSTA;



#int_rda
void Dato_Recibido_USART(void)
{
    while (
RCIF// ejecutamos mientras haya un dato pendiente de procesar
    
{
     
// Hacemos una copia del registro RCSTA porque sus bits cambian de valor
     // al leer RCREG y modificar CREN
     
Copia_RCSTA.registro RCSTA;

     
// En RCREG está el dato que acaba de recibir la USART
     
DatoRX RCREG;

     
// Si se reciben más de 3 bytes sin haberlos procesado, se produce un error
     // de Overrun. En este caso, se borra el error reiniciando CREN y dejamos
     // la interrupción preparada para procesar la siguiente trama DMX
     
if (Copia_RCSTA.bits.OERR)
     {
       
CREN=0;
       
CREN=1;
       
DMX_Estado DMX_ESPERA_BYTE;
       return;
     }

     
// Máquina de estados
     
switch (DMX_Estado)
     {
       case 
DMX_ESPERA_BYTE:    // si estamos en este estado y hay error FRAME
        // es que nos ha pillado en medio de un Byte. Hay que seguir esperando
        // hasta que desaparezca el error.
         
if (!Copia_RCSTA.bits.FERR)
                  
// Ha llegado un byte. Ahora esperaremos la señal Break
           
DMX_Estado DMX_ESPERA_BREAK;
         break;


       case 
DMX_ESPERA_BREAK:    // estamos esperando la señal Break
         // Esta señal se identifica porque aparece el error de Frame
         
if (Copia_RCSTA.bits.FERR)
           
// Tras recibir el error de Break, hay que esperar un byte de valor 0
           
if (!DatoRX)
             
DMX_Estado DMX_ESPERA_START;
         break;
       case 
DMX_ESPERA_START// ya hemos recibido el Break y ahora hay que
            // esperar un Byte con valor 0, que será la señal de Start
         // Mientras tanto, si recibimos un error de Frame, hay que volver a
         // empezar para recibir la señal de comienzo de trama.
         
if (Copia_RCSTA.bits.FERR)
             
DMX_Estado DMX_ESPERA_BYTE;
         else {
           if (!
DatoRX)
           {
             
// Llegados a este punto, ya hemos recibido el Byte Start=0
             // y comenzamos la trama de valores DMX.
             
DMX_Indice 0;
             
DMX_Estado DMX_RECEPCION_DATOS;
           } else
            
// Si el dato recibido no es 0, volvemos a empezar
             
DMX_Estado DMX_ESPERA_BREAK;
         }
         break;
       case 
DMX_RECEPCION_DATOS:
         
// En este estado estamos recibiendo la trama de datos DMX
        // Si se detecta un error de Frame es que ha habido un error y estamos
        // al principio
         
if (Copia_RCSTA.bits.FERR)
           if (!
DatoRX)
             
DMX_Estado DMX_ESPERA_START;
           else
             
DMX_Estado DMX_ESPERA_BYTE;
         else
         {
           
// Almacenamos el dato recibido en nuestro array
           
TramaDMX[DMX_Indice++] = DatoRX;

           
// Si ha llegado al final de la capacidad, cambiamos al estado de espera
          // de nueva trama
           
if (DMX_Indice >= TotalCanales)
             
DMX_Estado DMX_ESPERA_BREAK;
         }
         break;
   }
}
return;
}

void main(void


    
    
    
TRISA=0;
    
TRISB=0;
    
TRISC=0;
    
TRISD=0;
    
TRISE=0;

    
//configurar el USB-RS232
    
TRISC7=1;
    
TRISC6=1;

   
// Configuración de la USART
   
BRGH=1;           // Alta velocidad seleccionada.
   
BRG16=1;          // Baudrate de 16 bits
   
SYNC=0;           // Seleccionamos transmisión asíncrona
   
SPBRG=7;          // A 8MHz representa Baudios = 250KHz
   
SPBRGH=0;
   
RX9=1;            // Activada la recepción a 9 bits
   
SREN=0;           // Desactivada la recepción de un sólo byte
   
ADDEN=0;          // Desactivada la autodetección de dirección
   
FERR=0;           // No hay error de frame
   
OERR=0;           // No hay error de overrun
   
SPEN=1;           // USART activada
   
CREN=1;           // Recepción activada
    
    
CanalDMX=1;
    
enable_interrupts(INT_RDA);
    
enable_interrupts(GLOBAL);

    while(
1)
    {

    } 
}


/************************************************************************
************************************************************************/ 
y este es el error

Código:
Executing: "C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\bin\picc18.exe" --pass1 "C:\Documents and Settings\miguel\Escritorio\Electronica\Curso electronica\Copia de Caja UDB-DMX\dmx.c" -q --chip=18F4550 -P --runtime=default,+clear,+init,-keep,-download,+stackwarn,-config,+clib,+plib --opt=default,+asm,-debug,-speed,+space,9 --warn=0 -D__DEBUG=1 -Blarge --double=24 --float=24 --cp=16 --addrqual=ignore -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" 
Warning [111] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic.h; 18.30 redefining preprocessor macro "CLRWDT" (C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18.h: 38)
Warning [111] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic.h; 19.29 redefining preprocessor macro "SLEEP" (C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18.h: 44)
Warning [111] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic.h; 23.21 redefining preprocessor macro "NOP" (C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18.h: 40)
Warning [111] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic.h; 41.17 redefining preprocessor macro "__IDLOC" (C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18.h: 55)
Warning [107] C:\Documents and Settings\miguel\Escritorio\Electronica\Curso electronica\Copia de Caja UDB-DMX\dmx.c; 59.8 illegal # directive "int_rda"
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 75.6 variable "RA3" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5144)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 77.6 variable "RA1" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5140)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 80.6 variable "RA0" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5138)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 83.16 variable "RB7" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5168)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 84.6 variable "RA0" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5138)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 139.8 variable "RA1" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5140)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 141.9 variable "RA3" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5144)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 145.8 variable "RA0" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5138)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 147.8 variable "RA0" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5138)
Warning [361] C:\Documents and Settings\miguel\Escritorio\Electronica\Curso electronica\Copia de Caja UDB-DMX\dmx.c; 174.1 function declared implicit int
Executing: "C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\bin\picc18.exe" -odmx.cof -mdmx.map --summary=default,-psect,-class,+mem,-hex --output=default,-inhx032 dmx.p1 --chip=18F4550 -P --runtime=default,+clear,+init,-keep,-download,+stackwarn,-config,+clib,+plib --opt=default,+asm,-debug,-speed,+space,9 --warn=0 -D__DEBUG=1 -Blarge --double=24 --float=24 --cp=16 --addrqual=ignore -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" 
(1273) Omniscient Code Generation not available in Lite mode (warning)
HI-TECH C Compiler for PIC18 MCUs (Lite Mode)  V9.80
Copyright (C) 2011 Microchip Technology Inc.
Advisory[1233] Employing 18F4550 errata work-arounds:
Advisory[1234]  * Corrupted fast interrupt shadow registers
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 75. variable "_RA3" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5144)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 77. variable "_RA1" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5140)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 80. variable "_RA0" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5138)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 83. variable "_RB7" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5168)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 84. variable "_RA0" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5138)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 139. variable "_RA1" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5140)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 141. variable "_RA3" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5144)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 145. variable "_RA0" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5138)
Warning [1385] C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\lcd_84F4550.c; 147. variable "_RA0" is deprecated (declared at C:\Archivos de programa\HI-TECH Software\PICC-18\9.80\include\pic18f4550.h:5138)
Error   [499] ; 0. undefined symbol:
	_enable_interrupts(dmx.obj) 

********** Build failed! **********

gracias
09/08/2013 #4

Avatar de george.manson.69

Estas revolviendo CCS y Hi tech

Saludos!
09/08/2013 #5


Hi tech es un lenguaje de programación? como soluciono este problema? como hago en ccs para activar una interrupcion?

gracias
09/08/2013 #6

Avatar de ByAxel

Hola...
Hitech sigue el estándar ANSI C cosa que el CCS no lo hace...
La documentación del HiTech lo encuentras en la carpeta de instalación, ahí está todo...
En el foro: Manual HI-TECH Picc18 ANSI C Compiler , Iniciar un proyecto C en MPLab

Saludos
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.