TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: BossDiablo en 31 de Marzo de 2007, 11:27:46
-
Hola
El problema q tengo es q no se como borrar los datos de la memoria eeprom externa (24LC256) que la tengo conectada al PIC. Y la otra cosa es q no se muy bien si estoy utilizando bien los puertos Analogicos. Os voy a poner una parte de mi programa para ver si lo estoy haciendo bien.
#include <18f452.h>
#device adc=8
#use delay(clock=8000000)
#fuses NOWDT,HS, NOPROTECT, NOOSCSEN, NOBROWNOUT, NOPUT, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#define EEPROM_SDA PIN_D1 //definimos los pines donde...
#define EEPROM_SCL PIN_D0 //la eeprom ira conectada
#include <Flex_lcd_cursor.c> //Libreria del LCD
#include <24256.c> //Libreria memoria eeprom
int8 medidas,Intensidad,Tension; //Con esta variable contamos las medidas realizadas
long value;//Valores q usaremos para la PWM
long int dir;
void Realizar_Medida(void)
{
printf(lcd_putc,"\fGuardando datos en");
printf(lcd_putc,"\nla memoria .......");
for(value=1;value<=251;value++){
set_pwm1_duty(value);//value*4*(1/clock)*t2div=microsegundos=delta
//value=
//T=seteo del timer-->setup_timer_2(el valor introducido aqui)
delay_ms(5);
set_adc_channel(0); //Con esto selecciono el RA0 o AN0 (O eso creo, xq esta funcion no la entiewndo bien)
delay_us(200);
Intensidad=read_adc();
delay_us(200);
write_ext_eeprom(dir,Intensidad ) ; //Escribo el valor obtenido en la direccion de la eeprom
dir++;
set_adc_channel(1); // Con esto selecciono el RA1 o AN1 para capturar los datos de tension
delay_us(200);
Tension=read_adc();
delay_us(200);
write_ext_eeprom(dir,Tension ) ;
dir++;
}
}
void main()
{
int8 i,j;
dir=0;
medidas=0; //Iniciamos la variable medidas a 0
lcd_init(); //Inicializa la pantalla LCD
init_ext_eeprom(); //LLama a la memoria eeprom externa
setup_adc_ports(AN0_AN1_AN2_AN3_AN4); //Selecciono los puertos RA0,RA1,RA2,RA3 y RA4 como analogicos
setup_adc(ADC_CLOCK_INTERNAL);
setup_ccp1(CCP_PWM); // Selecciono el CCP_PWM para la patilla CCP1
setup_timer_2(T2_DIV_BY_1,50 ,1);
Aqui esta una parte de mi programa. A la hora de compilar no me da ningun error el programa completo, pero el proteus 6.5 no me deja simularlo si tengo puesta la memoria eeprom externa
Salu2 y gracias
-
Cuando dices que no te deja simularlo a que te refieres?
Suerte!!! ;)
-
Me da el siguiente error:
Building circuit...
Instantiating SPICE models...
Warning: Error Variable not found parsing property R(5) of RV1_R1
Warning: Error Variable not found parsing property R(5) of RV1_R2
[U1] PIC18 model release 6.05.05 simulating 'PIC18F452' device.
[U1] Loaded 256 bytes of persistent EEPROM data.
[U1] Loading PIC COFF file '..\..\..\Documents and Settings\XXXXXX\Mis documentos\XXXXXX\LCD\18f.COF'.
PROSPICE - Internal Exception: access violation in module 'ISIS.EXE'.
Real Time Simulation failed to start
Warning: [U1] at boot-up: No instruction cycles were executed - processor may never have made it out of reset!
Real Time Simulation FAILED.
El caso es q si quito el init_ext_eeprom(); y el write_ext_eeprom, no me da el error
-
Hola a todos, he usado el driver de CCS 24256.c pero al simular en proteus no me funciona, cuando guardo cualquier dato proteus me lee siempre -1 alguien me podria ayudar con este problema?