Autor Tema: PIC12F675 con HYPERTERMINAL  (Leído 3465 veces)

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

Desconectado agobiadox1000

  • PIC10
  • *
  • Mensajes: 4
PIC12F675 con HYPERTERMINAL
« en: 04 de Junio de 2009, 14:18:33 »
Buenas tardes.

He ingresado en este foro porque siempre he encontrado solución a todos los problemas que he tenido pero es que este me desborda completamente porque he probado de todo y no hay maneras.

Os explico, estoy haciendo un proyecto con el pic12F675 y intento transmitir tramas al hyperterminal a traves del RS232 y no soy capaz ed ver ni un simple printf en el hyperterminal.

Os pongo el programa a ver si algun alma caritativa me puede ayudar lo antes posible.

#include <12F675.h>

#fuses NOWDT,XT, NOCPD, NOPROTECT, NOMCLR, PUT, NOBROWNOUT
#use delay(clock=60000000) //TENEMOS UN CRISTAL EXTERNO DE 60 M
#use rs232(baud=9600,xmit=PIN_A1,rcv=PIN_A2,bits=8)
#use fast_io(A)

#int_RA
void RA2_isr()
{
   output_high(PIN_A0);
   delay_us(1000);
}


void main()
{
   char ch;
   set_tris_a(0xfC);       // a0, a1, and a2 : outs; a3 : in
   setup_comparator(NC_NC_NC_NC);
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_timer_1(T1_DISABLED);
   enable_interrupts(INT_RA2);
   enable_interrupts(GLOBAL);

   ch = 'x';                     // default char
   while(TRUE)
   {
      output_low(PIN_A0);
      if(kbhit())
      {
         ch = getc();            // get char
         printf("%c ", ch);      // print char
      }
   }
}

COMO VEIS EL PROGRAMA NO HACE UNA  MIERDA Y ES LO MAS BASICO DEL MUNDO PERO SOY TAN TONTO QUE NO SOY CAPAZ DE VER EL ERROR. POR FAVOR AYUDARME.

GRACIAS A TODOS DE VERDAD.

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: PIC12F675 con HYPERTERMINAL
« Respuesta #1 en: 04 de Junio de 2009, 14:40:10 »
porque no usas un printf("hola"); y descartas que sea problema hardware, la sentencia KBhit se suele emplear dentro de la interrupción del puerto serie.
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: PIC12F675 con HYPERTERMINAL
« Respuesta #2 en: 04 de Junio de 2009, 15:01:43 »
El cristal es a 60MHz???? Creo que el 12F solo llega a 20MHz, ademas eso no seria XT si no HS.

El papel lo aguanta todo

Desconectado agobiadox1000

  • PIC10
  • *
  • Mensajes: 4
Re: PIC12F675 con HYPERTERMINAL
« Respuesta #3 en: 04 de Junio de 2009, 18:48:24 »
ya si lo de XT tienes razon...k solo llega asta 8 Mhz....pero el sigue sin verse lo del printf...
el kbhit lo pongo xk lo voy a poner como interrupcion serie para utilizar el hyperterminal como un mando a distancia que va a mandar a mi dispositivo ordenes pero e sk no entra en la interrupcion...ni escribe nada...y es k estoy despesperado con esto...

si alguien pudiera decirme algo mas...

Ah por cierto si estas seguro k solo soporta hasta 20 Mhz hazmelo saber...aunke otros dispositivos han funcionado con ese cristal...

KIERO K ENTRE EN LA INTERRUPCION Y ACABAR YAAAAA JAJAJA.

Gracias d eantemano
« Última modificación: 04 de Junio de 2009, 18:54:01 por agobiadox1000 »

Desconectado setshomaru

  • PIC12
  • **
  • Mensajes: 66
Re: PIC12F675 con HYPERTERMINAL
« Respuesta #4 en: 04 de Junio de 2009, 21:36:29 »
no creo que el pic aguente 60MHz prueba con un cristal mas bajo, creo que deberias colocarle uno de 4Mhz
entre mas se, me doy cuenta que no se nada

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: PIC12F675 con HYPERTERMINAL
« Respuesta #5 en: 04 de Junio de 2009, 22:30:49 »
Hola.



Ahi está. El XT solo llega a 4MHz.

El PIC12F no tiene interrupcion por serial, pero puedes implementarla con la interrupcion GP2, no es dificil hacerlo.

Saludos
El papel lo aguanta todo

Desconectado agobiadox1000

  • PIC10
  • *
  • Mensajes: 4
Re: PIC12F675 con HYPERTERMINAL
« Respuesta #6 en: 05 de Junio de 2009, 06:40:21 »
No tiene? es que he visto en muxos ejemplos del 12F675 que ponen la funcion KBHIT para detectar una interrupcion por hardware y yo lo que quiero es que con el teclado del pc y el hyperterminal pues cuando pulse una tecla, entre en la interrupcion y pueda almacenar lo que viene del hyperterminal.

Pense en hacerla con un la externa pero es k la externa la utilizo para detectar los cruces por cero de una sinusoide de 50 hz.

Joder pues me acabas de romper con lo de que no admite un cristal de mas de 20 Mhz porque consegui con este crsital hacer una onda cuadrada de 120kH y con el cristal de 4 Mhz no soy capaz. Alguna sugerencia para hacerla?



Alguien con el programa que puse puede variarme la configuracion para conseguir que entre en la interrupción por favor?es que he visto que hay una configuracion para realizar la interrupcion usart mediante software pero no he conseguido ver ningun ejemplo...alguno lo tiene o lo ha hecho?

Gracias de antemano a todos.
« Última modificación: 05 de Junio de 2009, 08:48:20 por agobiadox1000 »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: PIC12F675 con HYPERTERMINAL
« Respuesta #7 en: 05 de Junio de 2009, 11:45:47 »
Hola.

A ver, si admite el cristal de 20MHz, ese es el valor maximo. Lo que no admite es el de 60MHz que mensionas anteriormente.

Interrupcion por software? no creo que eso exista, las interrupciones son eventos hardware, pero el PIC12 solo tiene una: la el GP2, es decir usas esa interrupcion para detectar el cambio de estado de la linea de transmision del PC y de ahi ya gestionas por software la recepcion del byte enviado.

Si lo haces con otro pin que no tenga interrupcion, siempre vas a necesitar estar testeando en el programa principal el estado de ese pin para determinar el cambio de estado del pin de recepcion para adquirir el dato, el problema: que cuando detectes el cruce por cero, se va a ver interrumpida la parte de recepcion y por ende el valor del byte recibido te va a cambiar.

Solucion: Trabajarlo a 20MHz y disminuir el valor del baud rate ... pero pierdes 2 pines de I/O

Saludos
El papel lo aguanta todo

Desconectado agobiadox1000

  • PIC10
  • *
  • Mensajes: 4
Re: PIC12F675 con HYPERTERMINAL
« Respuesta #8 en: 05 de Junio de 2009, 12:03:25 »
Entonces con la iupcion externa detecto los cruce por ceros y con polling en otro pin detecto el cambio de estado???es eso?

es k claro con la interrupcion INT_ RA que la he visto en muxos sitios...pues con un simple getc podriamos conseguir el dato y con put c visualizarlo pero al probarlo nada de esto funciona...entonces nose si puedes darnos algun ejemplo que funcione y sea un inicio para nosotros...es que sin las funciones getc .....pues como almaceno y proceso todo lo que recibo....

gracias de antemano de nuevo
« Última modificación: 05 de Junio de 2009, 12:06:06 por agobiadox1000 »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: PIC12F675 con HYPERTERMINAL
« Respuesta #9 en: 05 de Junio de 2009, 12:21:47 »
El getc() siempre vas a usarlo.

Con interrupcion:

Código: C#
  1. #int_EXT
  2. void serial_isr(void)
  3. {
  4.         DatoRx=0;
  5.         if(kbhit())
  6.         {
  7.                 DatoRx=getc();
  8.         }
  9. }

Con polling:

Código: C#
  1. rcvchar=0x00;
  2. while(true)
  3. {
  4.   if(kbhit())
  5.  {
  6.     rcvchar=getc();
  7.   }
  8. }
El papel lo aguanta todo