Autor Tema: Hyperterminal  (Leído 7008 veces)

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

Desconectado DaYeS

  • PIC16
  • ***
  • Mensajes: 119
Re: Hyperterminal
« Respuesta #15 en: 14 de Julio de 2011, 17:54:51 »
Este programa corre bien y sin errores en Proteus. el programa es:

Código: [Seleccionar]
#include <18f4550.h>
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=20000000)
#use rs232(uart, baud=9600, xmit=PIN_D2, rcv=PIN_D3, BITS=8, stop=1, PARITY=N,ENABLE=PIN_D1 )

int8 buffer1;
void main()
 {
  while( TRUE )
    { 
      buffer1=getc();
      putc(buffer1);
    }
 }

El código debería funcionar, la verdad es que no utilizo CCS, pero los fuses parecen buenos. Lo que puedes probar es poner un cristal de 4 Mhz con los condensadores de 27 pF. Lo digo por que en el Datasheet el cristal de 20 Mhz lo ponen con dos de 15 pF pero dice que no esta optimizado.

Lo que puedes hacer es utilizar el cristal interno, hasta 8 Mhz, para quitarte de problemas, más ique nada por que si el proteus esta tirando bien casi seguro que sea un tema de alimentaciones, acoples o relojes...

Otra cosa, no puedes hacer esto:
Código: [Seleccionar]
while( TRUE )
    { 
      putc(getc());
    }
De esta manera no lo estas cambiando de tipo, tb habría que mirar la función putc y getc, pero si crees que estan bien nada...

Bueno, a espera que nos vayas contando si con estas pruebas va bien...

Salu2
Si buscas resultados distintos, no hagas siempre lo mismo. Albert Einstein.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Hyperterminal
« Respuesta #16 en: 14 de Julio de 2011, 22:20:19 »
el problema es lo que comenta pablo, cambia tus pines de rs232
#use rs232(uart, baud=9600, xmit=PIN_c6, rcv=PIN_c7, BITS=8, stop=1, PARITY=N,ENABLE=PIN_D1 )


cambia esta line y prueba con la interrupcion
"Nada es imposible, no si puedes imaginarlo"

Desconectado ivanbv4

  • PIC10
  • *
  • Mensajes: 21
Re: Hyperterminal
« Respuesta #17 en: 14 de Julio de 2011, 22:44:39 »
Hola muchachos..nuevamente gracias por sus aportes. Como bien me dijeron cambie los pines y la simulación el proteus corrió perfectamente. En cuanto a al circuito real, sigo viendo las xx, desarme y arme el circuito dos veces y sigue con lo mismo. Mañana continuare con mas pruebas. Por las dudas..este es el programa q tiene cargado el micro. Saludos

#include <18f4550.h>
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=20000000)
#use rs232(uart, baud=9600, xmit=PIN_C6, rcv=PIN_C7, BITS=8, stop=1, PARITY=N,ENABLE=PIN_D1 )

#INT_RDA
void recepcion()
{
   putc(getc());
}

void main()
{
   enable_interrupts(GLOBAL);
   enable_interrupts(INT_RDA);

  while(true)
  {
   output_toggle(PIN_D0);
   delay_ms(100);
  }

}

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Hyperterminal
« Respuesta #18 en: 14 de Julio de 2011, 22:49:03 »
con que hiperterminal estas trabajando?, modrias porner una impresion de pantalla, si estas configurando la velocidad de la hiperterminal adecuadamente?
"Nada es imposible, no si puedes imaginarlo"

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: Hyperterminal
« Respuesta #19 en: 15 de Julio de 2011, 01:30:20 »
Por las dudas usa la instrucción #use fast_io(C)
y configura el RC6 como salida y el Rc7 como entrada
Set_tris_c(0b10000000)

para así dejar fijos los pines.

Desconectado DaYeS

  • PIC16
  • ***
  • Mensajes: 119
Re: Hyperterminal
« Respuesta #20 en: 15 de Julio de 2011, 10:15:29 »
#include <18f4550.h>
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=20000000)
#use rs232(uart, baud=9600, xmit=PIN_C6, rcv=PIN_C7, BITS=8, stop=1, PARITY=N,ENABLE=PIN_D1 )

#INT_RDA
void recepcion()
{
   putc(getc());
}

void main()
{
   enable_interrupts(GLOBAL);
   enable_interrupts(INT_RDA);

  while(true)
  {
   output_toggle(PIN_D0);
   delay_ms(100);
  }

}

Te dejo un código que me funciona el hardware (18f26j50), esta con hitech:

Código: [Seleccionar]
#define _XTAL_FREQ 4000000
#define DS3232_PWR LATA6
#define RS232_BAUD 9600
#define DIVIDER ((int)(_XTAL_FREQ/(16UL * RS232_BAUD) -1))

#include <htc.h>
#include <stdio.h>

__CONFIG(1, DEBUG_OFF & XINST_OFF & STVREN_ON & PLLDIV_1 & WDTEN_OFF & CP0_OFF & CPUDIV_OSC1);
__CONFIG(2, IESO_OFF & FCMEN_OFF & LPT1OSC_ON & T1DIG_OFF & OSC_INTOSC & WDTPS_4096);
__CONFIG(3, DSWDTPS_8192 & DSWDTEN_OFF & DSBOREN_OFF & RTCOSC_INTOSCREF & DSWDTOSC_INTOSCREF & MSSP7B_EN_MSK7 & IOL1WAY_OFF);
__CONFIG(4, WPDIS_OFF);

void main(){
TRISA = 0xFF; //Todo entrada
    TRISB = 0xF5; //Todo entrada menos rb1 y rb3
LATB = 0;   
//Configuracíon Puerto serie
SPBRG = DIVIDER;
RCSTA = 0x90;
TXSTA = 0x24;
//Interrupciones
RC1IE = 1;
GIE = 1;
        PEIE = 1;

while(1)
}
void interrupt isr()
{
    if (RC1IF && RC1IE){
char rc="";
while((RCREG)!=0)
        rc = rc + RCREG;
printf("He recibido %s",rc);
RC1IF=0;       
}
}

Espero que te sirva, más que nada para que lo pruebes para verificar circuito y micro.

Salu2
Si buscas resultados distintos, no hagas siempre lo mismo. Albert Einstein.

Desconectado ivanbv4

  • PIC10
  • *
  • Mensajes: 21
Re: Hyperterminal
« Respuesta #21 en: 15 de Julio de 2011, 10:58:01 »
Hola muchachos, adjunto imágenes del hiperterminar y su versión para que puedan decirme si hay algo mal.
Pablo realice los cambios que sugeriste y el comportamiento sigue siendo el mismo. Para descartar que el micro podía estar dañado hice la prueba con otro 18F4550 que tengo y el resultado a sido el mismo. Curiosamente si corro el mismo programa en un 16f88 corre perfectamente.
DaYeS gracias por tu aporte.. ahora mismo hago la prueba con el código que me has pasado.
Subo también fotos del circuito...su calidad es pobre por que las tome con un celular sepan disculpar. Gracias por sus aportes

Me olvidaba en cuanto al hiperterminal: Versión 5.1 (Build 2600.xpsp.080413-2111 Service Pack 3)

Desconectado DaYeS

  • PIC16
  • ***
  • Mensajes: 119
Re: Hyperterminal
« Respuesta #22 en: 16 de Julio de 2011, 04:49:50 »
Ummm, podrias tb probar con otra proboard, ya que tb puede ser, no hay que fiarse mucho de ellas...

El cristal puedes utilizar el suyo interno, y bajar un poco la velocidad, a unos 8 o 4 Mhz. Mira tb si se te esta reseteando por algo, por ejemplo hacer parpadear un led cuando inicia y que luego para, a lo mejor se te estaba reseteando...

Salu2
Si buscas resultados distintos, no hagas siempre lo mismo. Albert Einstein.

Desconectado ivanbv4

  • PIC10
  • *
  • Mensajes: 21
Re: Hyperterminal
« Respuesta #23 en: 29 de Julio de 2011, 12:06:51 »
Hola muchachos, yo de nuevo y con el mismo problema. Suspendí para armar una fuente de +12 -12 +5 1A que si a alguien le hace falta la publico.
Seguí con pruebas y descubrí algo. El pic recibe los datos que le envío..logre verlo a través del siguiente programita   

#include <18f4550.h>
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=20000000)
#use rs232(uart, baud=9600, xmit=PIN_C6, rcv=PIN_C7, BITS=8, stop=1, PARITY=N,ENABLE=PIN_D1 )

char dato;

void main()
{
  while(true)
  {
     if(kbhit())
      {
        dato=getc();  // solo para actualizar el estado de la kbhit()
        output_toggle(PIN_D0);
      }
   }

}
 Lo que no logre hacer es que el pic transmita un carácter y poder verlo en el hiperterminal. He probado con dos pic´s, verifique conexiones, reloj, velocidades, alimentaciones. Como notaran en la linea del use rs232 coloque ENABLE=PIN_D1que hace destellar un led que tengo colgado en este pin cuando envia un dato. Durante la prueba de envio lo hacia...pero nada aparecia en la pc.  Alguna otra sugerencia?
Desde ya muchas gracias
Saludos

Desconectado ivanbv4

  • PIC10
  • *
  • Mensajes: 21
Re: Hyperterminal
« Respuesta #24 en: 29 de Julio de 2011, 12:22:23 »
Se me olvido agregar que también cambié de protoboard

Desconectado ivanbv4

  • PIC10
  • *
  • Mensajes: 21
Re: Hyperterminal
« Respuesta #25 en: 02 de Agosto de 2011, 10:07:03 »
Hola muchachos... Agrego un nuevo avance. Logre que todo funcionara como debía hacerlo luego de usar el oscilador interno del pic en lugar del externo de 20Mhz que estaba usando (mas los correspondientes capacitores de 15p). No entiendo realmente cual es el problema del oscilador externo ya que solo es conectarlo entre los pines 13 y 14 con los cap a masa. Creería que el programa que previamente publiqué tiene los fuses de manera correcta. Cualquier idea que se les venga a la cabeza será muy bien recibida.
Saludos y espero que puedan ayudarme


 

anything