TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: japifer_22 en 03 de Marzo de 2011, 16:34:09
-
uff otra vez mas con dudas. como bien dice el titulo tengo en mis manos un pic de la familia de los 18f el cual es el 18f6520, he revisado su data sheet y me dice que tiene 2puertos seriales, bueno, por otro lado hace algunas semanas quevengo metiendome con esto de los pic 18f, y asta el momento me avia a resultado de lo mas bn, pero ahora tengo un problema y no se si es el codigo o el proteus, pues el codigo es muy basico, y el ccsc no me da ningun error, el cual ensiende y apaga unos led por medio de 2 entradas seriales a lpic, pero en el momento de simular me da un error el proteus y no se por que, aver si me ayudan a detectar el problema por favor.
#include <18f6520.h> // PIC utilizado
//#fuses HS,NOWDT,NOPROTECT,PUT // Configura el hardware del micro
#device HIGH_INTS=TRUE // PRIORIDAD ALTA DE INTERUPCION
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES NOSTVREN //Stack full/underflow will not cause reset
#FUSES DEBUG //Debug mode for use with ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#use delay (clock=4000000) //clock=20Mhz
#USE RS232(BAUD=9600, XMIT=PIN_C6, RCV=PIN_C7,stream=radio)
#USE RS232(BAUD=9600, XMIT=PIN_G1, RCV=PIN_G2,stream=antena)
char lectura_radio=0x00,lectura_antena=0x00;
#int_RDA //interrupcion para la resepcion del master
void serial_isr()
{
if(kbhit()) { //Esto es para que no se cuelgue el pic
lectura_radio=fGETC(radio); //guarda el valor enviado por el puerto serie
}
}
#INT_RDA2
void serial_isr_2()
{
if(kbhit()) { //Esto es para que no se cuelgue el pic
lectura_antena=fGETC(antena); //guarda el valor enviado por el puerto serie
}
}
void main(){
enable_interrupts(INT_RDA); // Habilita Interrupción RDA
enable_interrupts(INT_RDA2);
enable_interrupts(GLOBAL); //todas las interrupciones activadas
set_tris_d(0x00); // Todo el puerto B es salida
printf("\rprimera prueba de comunicacion\n");
printf("\r\serial para el PIC18f452\n\n\n\n");
while(TRUE){
switch (lectura_radio){
case '1':
output_high(PIN_D0);
break;
case '3':
output_high(PIN_D1);
break;
case '5':
output_high(PIN_D2);
break;
case '7':
output_high(PIN_D3);
break;
case '9':
output_high(PIN_D4);
break;
}
switch (lectura_antena){
case '2':
output_low(PIN_D0);
break;
case '4':
output_low(PIN_D0);
break;
case '6':
output_low(PIN_D0);
break;
case '8':
output_low(PIN_D0);
break;
case '0':
output_low(PIN_D0);
break;
}
}
}
y el proteus lo adjunto
-
En el proteus te falta conectar el pin MCLR a 5V.
En el código tienes configurado el reloj a 4MHz y en el proteus lo tienes a 20Mhz, con esto los puertos serie no funcionan correctamente.
Saludos
-
hola pablo, gracias por responder, te comento que he realisado los cambios que as dicho y aun asi no pasa nada y sigue dando error el proteus, adjunto imagen para que se vea mejor lo ue pasa
(http://img713.imageshack.us/i/erroproteus.gif/)
-
Ese error no me lo da en la versión de proteus que estoy usando (7.7 SP2).
Parece que tu versión de proteus no soporta la simulación de todos lo periféricos de ese micro
-
que raro
(http://s3.subirimagenes.com:81/otros/previo/thump_6055165error-2.jpg)
yo uso el 7.7 tendre algo mal configurado ??
aqui se puede ver mejor la imagen
http://www.megaupload.com/?d=VYJNIM6D
-
La verdad, ni idea, que es lo que pasa,
Te subo el diseño que usé y el código que copie de tu post, (compilado)
Para ver si funciona.
Debe ser algun problema con el modelo de pic que tiene el proteus o tal vez con la licencia que está usando.
-
hola, uff por fin encontre el problema, no es el proteus sino es el compilador, que compilador usas tu ??? ya que al compilarcon el CCSC me esta arrojando el erro, esto lo cmprobe poniendo tu hexa en el proteus y anda bn
-
Uso el 4.118
-
otra duda tu usas el ccsc18 o solo el ccs c pero laversion 4.118 ??
-
solo el ccs
-
gracias pablo he solucionado mi problemas gracias de antemano