Hola.
Tengo un problema con la programación de un PIC. el 18F220, mediante el compilador C18.
He consultado distintos manuales i no termino de entender como se hace el acceso a memoria a la hora de declarar variables e inicializarlas. En el archivo adjunto se muestran las caracteristicas principales de la memoria del PIC. No termino de comprender el uso del comando #pragma, se que sirve para ubicar secciones de codigo en posiciones concretas de memoria. Necesito definir un vector de más de 100 variables tipo int ( 2 Bytes por variable), intento definirlo dentro de los margenes establecidos (512Bytes de SRam) pero sale un error donde dice que no cabe dicho vector en esa seccion. Tambien he provado de definirlo como datos en la Rom mediante #pragma romdata, pero tampoco funciona. Mi programa todavia no es muy extenso, por eso creo que es un error de concepto y no de que realmente mis variables no quepan en la memoria.
Parte de uno de los códigos usados és la siguiente:
//Llibreries:
#include <p18f2220.h>
#include <stdio.h>
#include <math.h>
#include <i2c.h>
#include <adc.h>
#include <timers.h>
#include <delays.h>
//Configuració:
#pragma config OSC=INTIO2, WDT=OFF
#pragma romdata array_temps
int temps[110]; //He provado con variables char, ya que solo ocupan un solo Byte
#pragma romdata
#pragma idata ferquencies
int freq[8]={100,120,145,168,190,210,245,268};
#pragma idata
//Definicions:
#define led_verd LATCbits.LATC0
#define led_groc LATCbits.LATC1
#define led_vermell LATCbits.LATC2
#define switch_1 LATBbits.LATB0
#define switch_2 LATAbits.LATA4
#define switch_3 LATBbits.LATB4
#define switch_4 LATBbits.LATB5
#define dio_1 LATCbits.LATC5
#define dio_2 LATCbits.LATC6
#define dio_3 LATCbits.LATC7
const rom double pi = 3.14159265;
..............
El tipo de error es el siguiente:
Copyright (c) 2008 Microchip Technology Inc.
Error - section '.udata_Untitled.o' can not fit the section. Section '.udata_Untitled.o' length=0x000000dc
Errors : 1
BUILD FAILED: Fri Apr 25 11:35:13 2008
Les agradeceria si pudieeran aclararme el uso y acceso a la memoria de dicho PIC.
Gracias.
Tengo un problema con la programación de un PIC. el 18F220, mediante el compilador C18.
He consultado distintos manuales i no termino de entender como se hace el acceso a memoria a la hora de declarar variables e inicializarlas. En el archivo adjunto se muestran las caracteristicas principales de la memoria del PIC. No termino de comprender el uso del comando #pragma, se que sirve para ubicar secciones de codigo en posiciones concretas de memoria. Necesito definir un vector de más de 100 variables tipo int ( 2 Bytes por variable), intento definirlo dentro de los margenes establecidos (512Bytes de SRam) pero sale un error donde dice que no cabe dicho vector en esa seccion. Tambien he provado de definirlo como datos en la Rom mediante #pragma romdata, pero tampoco funciona. Mi programa todavia no es muy extenso, por eso creo que es un error de concepto y no de que realmente mis variables no quepan en la memoria.
Parte de uno de los códigos usados és la siguiente:
//Llibreries:
#include <p18f2220.h>
#include <stdio.h>
#include <math.h>
#include <i2c.h>
#include <adc.h>
#include <timers.h>
#include <delays.h>
//Configuració:
#pragma config OSC=INTIO2, WDT=OFF
#pragma romdata array_temps
int temps[110]; //He provado con variables char, ya que solo ocupan un solo Byte
#pragma romdata
#pragma idata ferquencies
int freq[8]={100,120,145,168,190,210,245,268};
#pragma idata
//Definicions:
#define led_verd LATCbits.LATC0
#define led_groc LATCbits.LATC1
#define led_vermell LATCbits.LATC2
#define switch_1 LATBbits.LATB0
#define switch_2 LATAbits.LATA4
#define switch_3 LATBbits.LATB4
#define switch_4 LATBbits.LATB5
#define dio_1 LATCbits.LATC5
#define dio_2 LATCbits.LATC6
#define dio_3 LATCbits.LATC7
const rom double pi = 3.14159265;
..............
El tipo de error es el siguiente:
Copyright (c) 2008 Microchip Technology Inc.
Error - section '.udata_Untitled.o' can not fit the section. Section '.udata_Untitled.o' length=0x000000dc
Errors : 1
BUILD FAILED: Fri Apr 25 11:35:13 2008
Les agradeceria si pudieeran aclararme el uso y acceso a la memoria de dicho PIC.
Gracias.