TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jose_manuel en 04 de Mayo de 2023, 21:30:41

Título: problemas con mplab y proteus
Publicado por: jose_manuel en 04 de Mayo de 2023, 21:30:41
que tal no se si me puedan ayudar con este problema, estoy intentado mandar el valor de una variable por el puerto serie de proteus, pero me manda caracteres extraños, estoy utilizando el pic 18f4550 y lo compilo con el maplab para obtener el .hex, ya le ajuste la velocidad a 9600 y tiene un cristal de 4Mhz no se si me puedan ayudar para poder visualizar los mensajes por la terminal virtual, el codigo es el siguiente:


#include <18F4550.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#define cuenta 15536 //TMR0-16bits 65536 - 50000=15536
                                    //4*50000*10=1,000,000 microseg
//*******************************************
#use delay(clock=4000000)
//*******************************************
// declaracion variables globales
long i =0,miliseg=0,seg=0,min=0,hr=0;
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)

//*******************************************
// Rutina de servicio de interrupcion
#INT_TIMER1    //INT-Timer0                                                               
void clock_isr() {
  set_timer1(cuenta);
  i=i+1; // la variable contador se incrementa cada 100 ms   

  miliseg = (i*100);
                    
 
}

void main(void) {                             
  set_tris_d(0x00);  //RB como salidas
  SETUP_TIMER_1(T1_INTERNAL | T1_DIV_BY_2);
  SET_TIMER1(cuenta);

  ENABLE_INTERRUPTS(GLOBAL);
  ENABLE_INTERRUPTS( INT_TIMER1 );

 
  while(1){

  printf("%ld\r",i);
  printf("%ld\r",miliseg);

 }
}
Título: Re:problemas con mplab y proteus
Publicado por: DominusDRR en 04 de Mayo de 2023, 22:51:06
Casi seguro que no está calibrado a 9600 bpm.

¿También en el simulador al dar clic derecho en el microcontrolador está calibrado un cristal de 4MHz?

Tal vez deberías hacer una prueba sin usar todavía la interrupción, algo muy simple printf("Hola ");
Título: Re:problemas con mplab y proteus
Publicado por: Eduardo2 en 04 de Mayo de 2023, 23:57:27
El problema lo tenés en:    #use delay(clock=4000000)

En CCS no podés usar el argumento que quieras porque te hace cualquier cosa con los fuses. En este caso, la velocidad del micro resultaba 1MHz -->  el baudrate era 2400bauds.

Los argumentos permitidos para 4MHz con el 18F4550 son:
#use delay(crystal=4MHz) ,  #use delay(internal=4MHz)   o  #use delay(oscillator=4MHz)
Título: Re:problemas con mplab y proteus
Publicado por: jose_manuel en 05 de Mayo de 2023, 17:14:01
Eduardo2 muchas gracias estas en lo correcto le cambie el #use delay(clock=4000000) por #use delay(crystal=4MHz) y ya lo pude solucionar estaba batallando mucho con esto, te lo agradezco