Autor Tema: Rs232,nada legible.  (Leído 1712 veces)

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

Desconectado culebrasx

  • PIC10
  • *
  • Mensajes: 39
Rs232,nada legible.
« en: 18 de Marzo de 2010, 15:37:43 »
Hola a todos, antes de nada, decir que llevo ya tiempo leyendo en el foro y buscando información, se que hay mucha información que estoy leyendo, pero he llegado a un punto que estoy estancado, asi que pido disculpas de antemano por iniciar otro hilo sobre rs232 :oops:
Me manejo mas o meno bien con asm, estoy pasando ahora a C con CCS,  he creado una rutina que no haga nada, y cuando llegue un bit active la interrupcion rda, y en funcion del valor de ese dato encienda un led, entra en el modo interrupcion bien, puse que parpadeará un led para saber que habia entrado, y dentro del if que lo apague, lo que pasa es que como no reconoce lo que le envio nunca entra de acuerdo al if, como terminal uso el docklight v1.9 configurado de la siguiente manera desde mi portatil,con puerto serie, 9600 N 1, si que sse que llegan los datos porque puse unos leds que parpadeen al pasar los datos,envia y recibe,pero nada legible
he comprobado con el mutlimetro que invierte la polaridad a las salida de max232, es asi como debe ser cierto?si a la entrada del max232 tengo 1 logico, a la salida -10V,
cuando le digo que me devuelve lo que ha leido me devuelve por el docklight un monton de nulls
aqui el cogido:
Código: [Seleccionar]
#include <18F2550.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES INTRC                    //Internal RC Osc
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV20                   //Brownout reset at 2.0V
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOCPD                    //No EE protection
#FUSES STVREN                   //Stack full/underflow will cause reset
#FUSES NODEBUG                  //No Debug mode for 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 IESO                     //Internal External Switch Over mode enabled
#FUSES FCMEN                    //Fail-safe clock monitor enabled
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#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
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES LPT1OSC                  //Timer1 configured for low-power operation
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL12                    //Divide By 12(48MHz oscillator input)
#FUSES CPUDIV4                  //System Clock by 4
#FUSES USBDIV                   //USB clock source comes from PLL divide by 2
#FUSES VREGEN                   //USB voltage regulator enabled

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#int_rda
void r232(void)
{
   output_high(pin_c1);
   delay_ms(200);
   output_low(pin_c2);
   delay_ms(200);
   output_high(pin_c2);
   delay_ms(200);
   output_low(pin_c2);
   delay_ms(200);
   output_high(pin_c2);
    delay_ms(200);
   output_low(pin_c2);
   char ch;
   ch=getchar();
   delay_ms(30);
   puts(ch);
   if(ch=="w")
      {
      output_high(pin_c2);
      delay_ms(5000);
      output_low(pin_c1);
      }

}

void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   setup_oscillator(OSC_4MHZ|OSC_TIMER1|OSC_31250|OSC_PLL_OFF);
set_tris_c(0x80);
enable_interrupts(int_rda);
enable_interrupts(global);
delay_ms(300);

delay_ms(3000);
while(1)
{
//puts("x");
delay_ms(200);
}
}

Aqui el circuito:
Y aqui mi agradecimiento;..... :-/ :-/ :-/ :-/ :-/
Un saludo a toda la comunidad!

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: Rs232,nada legible.
« Respuesta #1 en: 18 de Marzo de 2010, 15:58:34 »
Hola culebrasx:

Primeramente quitaría los diodos y las resistencias que has puesto en el RS232.

Por otro lado cambia el programa y pon este.

Código: [Seleccionar]
#include <18F2550.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,VREGEN
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)

char d;

void main() {

enable_interrupts(int_rda);
enable_interrupts(global);

while (true)
{
    if (kbhit())
    {
        d=getc();
        putc(d);
    }
}
}

Este programa debería de recibir lo mismo que envias. Por otro lado desde el PC, bájate este programa que es lo mejor que ha parido internet para estas cosas y además es opensource Realterm

Un saludete.
« Última modificación: 18 de Marzo de 2010, 16:04:56 por c4_esp_VR »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Rs232,nada legible.
« Respuesta #2 en: 18 de Marzo de 2010, 15:59:47 »
Hola, intenta sacar esos led que colgaste de Tx y Rx del Max.

Saludos !

Desconectado culebrasx

  • PIC10
  • *
  • Mensajes: 39
Re: Rs232,nada legible.
« Respuesta #3 en: 19 de Marzo de 2010, 14:57:27 »
Muchas gracias a los dos, ya lo tengo resuelto.... ;-)

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: Rs232,nada legible.
« Respuesta #4 en: 19 de Marzo de 2010, 15:18:14 »
Citar
Muchas gracias a los dos, ya lo tengo resuelto.... wink

Si puedes comenta que estaba mal para que otros usuarios con tu mismo problema puedan resolverlo please.

Un saludete.

Desconectado culebrasx

  • PIC10
  • *
  • Mensajes: 39
Re: Rs232,nada legible.
« Respuesta #5 en: 27 de Marzo de 2010, 00:35:32 »
pues ahora mismo no recuerdo lo que estaba mal, pero viendo mi codigo y con un poco mas de experencia puedo ver que tenia el reloj de 4000000 con lo que en FUSES tendria que haber puesto XT (para relojes <=4000000) o bien dejarlo como quedó al final, subir el reloj a 80000000

Gracias a todos....