Autor Tema: Pporque este codigo no funciona???  (Leído 1574 veces)

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

Desconectado Sebascl

  • PIC12
  • **
  • Mensajes: 73
Pporque este codigo no funciona???
« en: 24 de Febrero de 2006, 13:25:00 »
hola me gustaria saver porke este codigo no funciona sera mi compilador mi pc mi windows ke sera, sere yo"???


codigo:

#include <16F84A.h>
#use delay(clock=20000000)
#fuses HS,NOWDT
#use fixed_io(A_OUTPUTS=PIN_A0,PIN_A2,PIN_A3,PIN_A4)
#use fixed_io(B_OUTPUTS=PIN_B1,PIN_B2,PIN_B3,PIN_B4,PIN_B5,PIN_B6,PIN_B7)
#use rs232(baud=19200, xmit=PIN_A2, rcv=PIN_A1, invert)

#byte port_a=5
#byte port_b=6
#priority EXT,RTCC
int1 j=0;
unsigned int8 i=0,guardatiempo=0;

#INT_EXT
void entra_senal()
{
   if (j==0){
   j=1;
   guardatiempo=i;
   i=0;
   ext_int_edge(H_TO_L); // Cambio la detección del flanco, para que la proxima sea de bajada
   }
   else {
   j=0;
   guardatiempo=i;
   i=0;
   ext_int_edge(L_TO_H); // La próxima interrupción será de subida
   }
}

#INT_RTCC
void tiempo()
{
   set_rtcc(6);
   i++;
   if(i>=250) i=0;
}

void main()
{
   setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
   enable_interrupts(INT_RTCC);
   enable_interrupts(INT_EXT);
   enable_interrupts(global);
   ext_int_edge(L_TO_H);

   set_rtcc(6);

   set_tris_a(2);
   set_tris_b(1);

   port_a=0;
   port_b=0;

   while(true)
   {
      printf("hola"Giño;
   }
}

compila sin problemas, el problema ke me da ke la informacion que recivo kon el pc es incoerente no yega la palabra "hola"  dice puros caracteres raros.


saludos y gracias.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Pporque este codigo no funciona???
« Respuesta #1 en: 24 de Febrero de 2006, 17:00:00 »
Pues es probable que la velocidad de transferencia (bauds) no sea la misma en la PC, pon ambos a 19200bps como dice tu programa.

Desconectado Sebascl

  • PIC12
  • **
  • Mensajes: 73
RE: Pporque este codigo no funciona???
« Respuesta #2 en: 24 de Febrero de 2006, 17:30:00 »
esta bien configurado el hiperterminal del pc, incluso en el proteus me da los mismos caracteres que sera, este es el hex.

:1000000000308A007D280000831A0A288E00030E23
:100010008F000F2883128E00030E8F008F140A08A2
:1000200093008A0183138E0E040890000C0891003F
:100030000D08920083120B1E1F288B183B288B1E65
:1000400023280B194F281008840011088C0012086F
:100050008D0013088A000F0E830083120E0E8F1876
:10006000831609000A108A100A11820768346F3457
:100070006C346134003414184528141415089600A3
:100080009501831601134B2883121410150896004E
:1000900095018316011783128B108A1123280630CD
:1000A0008100950A1508F93C031C95010B118A1172
:1000B0002328E2306500051508308D00000000009F
:1000C00000008D1772288D13980C03180511031C5E
:1000D00005150D1772280D138D0B64280000000004
:1000E0000000051150308400840B742800000000CB
:1000F0008D1B63280D1B6B28AD2884011F308305E1
:10010000E230650005111410950196018C018C1DDB
:10011000912807308101813084000008C0390F38F0
:1001200080006400813084000008C0390C04800025
:100130008B160B168B17831601170630831281005E
:1001400002306500013066008501860197011708BD
:100150003220970A8C009800592804301702031D9A
:06016000A728A628630099
:02400E00FA3F77
:00000001FF
;PIC16F84A


por favor alguien pruebelo y me dice si le funciona.


saludos y gracias.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Pporque este codigo no funciona???
« Respuesta #3 en: 24 de Febrero de 2006, 18:11:00 »
Parece ser que la interrupción del timer te está dislocando la comunicación serie.
He cambiado algunas cosillas y en proteus simula bien.

#use delay(clock=10000000)  // El 16F84 creo que como máximo va a 10 MHz
#use rs232(baud=19200, xmit=PIN_A2, rcv=PIN_A1)

setup_counters(RTCC_INTERNAL,RTCC_DIV_8); // He subido el prescaler


Al no disponer el micro de una usart hardware,seguramente el timer te está interrumpiendo la comunicación.Podrías probar varias cosas:

- Aumentar el prescaler del timer
- Aumentar el baud rate de la comunicación serie
- Desactivar la interrupcion del timer cada vez que vayas a enviar algo vía serie.

No se me ocurre nada más.
Ve probando,suerte.

Desconectado Sebascl

  • PIC12
  • **
  • Mensajes: 73
RE: Pporque este codigo no funciona???
« Respuesta #4 en: 24 de Febrero de 2006, 18:56:00 »
hola modulay, tenias razon era el timer en caso de tener que conservar una interrupcion cada 2us en rtcc seria posible que la informacion enviada por rs232 la realice bien con un pic con usart como el 16f628A y funciona bien pero lo que se encuentra dentro del main o en otras funciones no funciona por que sera???

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Pporque este codigo no funciona???
« Respuesta #5 en: 26 de Febrero de 2006, 10:17:00 »
¿A qué te refieres exactamente? ¿no funciona usando el 16f84 o el 16f628?