Autor Tema: Ayuda con comunicación con el PC  (Leído 1608 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado TheNewHetfield

  • PIC10
  • *
  • Mensajes: 4
Ayuda con comunicación con el PC
« en: 26 de Abril de 2006, 01:49:52 »
Hola!

Los felicito de verdad por esta página. Ha sido una fuente invaluable de conocimientos para mis primeros proyectos con programación en C de microcontroladores.

Les escribo porque tengo un problema con la comunicación vía RS232. A pesar de que creo configurar todo ok, recibo en el hiperterminal pura basura al intentar mandar un simple "hola mundo". Todo esto en un código que estoy empezando a preparar, con el que tengo que hacer una chorrada de cosas además de esto, que me tiene congelado el avance.

Adjunto el código:
Código: [Seleccionar]
// Conexiones: A0 -> SCK eeprom externa
// A1 -> SDA eeprom externa
// A2 -> T1IN RS232
// A3 -> R1OUT RS232 (negado)
// B0 -> E      
// B1 -> RS
// B2 -> RW
// B4 -> D4  
// B5 -> D5           
// B6 -> D6
// B7 -> D7                   
//////////////////////////////////////////////////////////////////////////////////

#include <16f877a.h> //pic a utilizar
#use delay(CLOCK=4000000) //Fosc=4Mhz
#fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT,NOCPD,NOWRT,NODEBUG
#define use_portb_lcd TRUE //utilizar el port b para lcd
#define EEPROM_SDA PIN_A1 //definimos los pines donde...
#define EEPROM_SCL PIN_A0 //la eeprom ira conectada
#use rs232(baud=9600, xmit=PIN_A2, rcv=PIN_A3) //manejo del RS232
#include <24256.c> //libreria de eeprom externa 24LC256
#include <lcd.c> //libreria de lcd

////INTERRUPCION DE TIMER
//#INT_TIMER0
//void interrupcion(){
// set_timer0(61); //reset TMR0
//}


///PRINCIPAL
void main(void){
int dir=0; //direccion de eeprom a escribir y leer mensajes
int num = 10;
int duty = 50;
char men1[]="wena"; //escribir
char men2[]="0101"; //escribir
char men3[]="wawa"; //escribir
char men4[]="plplp"; //escribir

lcd_init(); //inicializa lcd
init_ext_eeprom(); //inicializa eeprom
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_1, 127, 1);

// enable_interrupts(INT_TIMER0); //interrupcion TIMER0 activada
// setup_counters(RTCC_INTERNAL,RTCC_DIV_256); //configuracion interrupcion TMR0
// set_timer0(61); //carga TMR0
// enable_interrupts(GLOBAL); //activadas interrupciones

set_pwm1_duty(duty);

printf("hola mundo");

// lcd_enviar(LCD_COMANDO,LCD_CURSOR_BLINK); // Envía comando al LCD
    printf(LCD_PUTC,"x=%d",num);
    delay_ms(500);
   
lcd_putc("~ Escribiendo en...\n24LC256\n");
delay_ms(500);
write_ext_eeprom(dir,men1); //proceso de escribir...
dir++;
write_ext_eeprom(dir,men2);
dir++;
write_ext_eeprom(dir,men3);
dir++;
write_ext_eeprom(dir,men4); //...los mensajes en la eeprom externa
lcd_putc("\fFin de escritura en\n24LC25");
delay_ms(1500);

lcd_putc("\f>>>Leyendo...\n");
  for(dir=0;dir<4;dir++){ //bucle para leer mensajes en eeprom externa y muestra por lcd
printf(lcd_putc,"\n %d ~ %s",dir,read_ext_eeprom(dir));
delay_ms(800); //retraso para que se vea en pantalla los mensajes
lcd_putc("\n                "); //borrado 2ºlinea de lcd
}
output_a(0b00); //apago port a
lcd_putc("\fFin de lectura!");
   
while(1){
if(duty==100){
duty=0;
}
duty++;
delay_ms(10);
set_pwm1_duty(duty);
}

}

Espero que se pueda corregir fácilmente. Agradeciendo de antemano la ayuda que me puedan prestar, se despide.

Sergio Navarro

Desconectado TheNewHetfield

  • PIC10
  • *
  • Mensajes: 4
Re: Ayuda con comunicación con el PC
« Respuesta #1 en: 26 de Abril de 2006, 14:50:30 »
La configuración que intento es la típica, no da para equivocarse:

Código: [Seleccionar]
#use rs232(baud=9600, xmit=PIN_A2, rcv=PIN_A3) //manejo del RS232
y luego sólo hago el call:
Código: [Seleccionar]
printf("hola mundo");
Mi duda es si de alguna forma la configuración para la comunicación con la EEPROM o el LCD hayan cambiado algo que causa que esto último no funcione. La eeprom la tengo comunicada con A0-A1 y el lcd en portb.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Ayuda con comunicación con el PC
« Respuesta #2 en: 26 de Abril de 2006, 15:17:55 »
Veo que en tu programa (el del primer post) no haces uso para nada del hardware que lleva el 16F877 ya que las funciones Tx y Rx de la USART de este micro las tiene en RC6 y RC7 respectivamente, asi como las del I2C cuyas SCL y SDA estan conectadas a RC3 y RC4 ... En principio por Soft el CSS C las implementa pero ...

Una pregunta ... ¿has probado con la RS232 sola, sin las librerias de la EEPROM y del LCD?

Algo del estilo de Ejemplito 16F876A: Lo mínimo para comunicarnos vía RS232 Hardware y Software ... para ir descartando cosas ...

« Última modificación: 26 de Abril de 2006, 15:20:27 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: Ayuda con comunicación con el PC
« Respuesta #3 en: 27 de Abril de 2006, 01:57:48 »
quisiera agregar con respecto a lo de basura que yo tuve un problema parecido y lo que me ocurria es que no estaba usando el max232 para comunicarme con la pc. esto no invalida el estudio del programa que estas implementando ni lo que te comenta el sabio amigo redpic experto en serial!

espero haber sido de ayuda


 

anything