Autor Tema: bit de paridad  (Leído 4693 veces)

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

Desconectado loverman24

  • PIC12
  • **
  • Mensajes: 66
bit de paridad
« en: 26 de Febrero de 2006, 04:26:00 »
Hola, lo siguiente es una pregunta sencilla

en la configuracion del pic para comunicarse con el pc, como se indica el bit de parada??

he visto varios ejemplos, y en la configuarion suele poner algo asi:

#use rs232(BAUD=19200, BITS=8, PARITY=N, XMIT=PIN_C6, RCV=PIN_C7)

bien, yo entiendo todo excepto xmit y rcv. Con esto se dice el bit de parada?? que es exactamente. Destacar que en los ejemplos que he visto por aqui, o mejor dicho en los programas que he visto, no coinciden estos pines en la mayoria, cada uno tiene uno.

Podria alguien decirme en que consisten?

Gracias

Un saludo

Desconectado bottar

  • PIC10
  • *
  • Mensajes: 6
RE: bit de paridad
« Respuesta #1 en: 26 de Febrero de 2006, 07:18:00 »
Hola loverman24, respondiendo a tu cuestion, los pines xmit y rcv, son por los cuales vas a hacer la transmision xmit y la recepcion rcv de los datos.
Es decir si como tu pones en el ejemplo inicializas xmit=PIN_C6 y rcv=PIN_C7 le estas indicando al pic que PIN_C6 es la salida de datos de una comunicacion serie y el PIN_C7 es la entrada de datos de esa comunicacion.

El bit de parada es un bit que se transmite despues de los bits de datos, no se si existe alguna directiva para modificarlo pero en el ejemplo que tu has puesto al no poner nada se toma por defecto 1 bit de stop o de parada.

Espero haberte aclarado tus dudas, un saludo Giño.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
RE: bit de paridad
« Respuesta #2 en: 26 de Febrero de 2006, 07:56:00 »
Copiado del Reference Manual CCS-C

#USE RS232

Syntax: #use rs232 (options)

Elements: Options are separated by commas and may be:
• BAUD=x Set baud rate to x
• XMIT=pin Set transmit pin
• RCV=pin Set receive pin
• RESTART_WDT Will cause GETC() to clear the WDT as it waits for a character.
• INVERT Invert the polarity of the serial pins (normally not needed when level converter, such as the MAX232). May not be used with the internal SCI.
• PARITY=X- Where x is N, E, or O.
• BITS =X- Where x is 5-9 (5-7 may not be used with the SCI).
• FLOAT_HIGH- The line is not driven high. This is used for open collector outputs.
• ERRORS- Used to cause the compiler to keep receive errors in the variable RS232_ERRORS and to reset errors when they occur.
• BRGH1OK- Allow bad baud rates on chips that have baud rate problems.
• ENABLE=pin- The specified pin will be high during transmit. This may be used to enable 485 transmit.
• STREAM=streamed- Associates a stream identifier with this RS232 port. The identifier may then be used in functions like fputc.

Purpose: This directive tells the compiler the baud rate and pins used for serial I/O. This directive takes effect until another RS232 directive is encountered. The #USE DELAY directive must appear before this directive can be used. This directive enables use of built-in functions such as GETC, PUTC, and PRINTF.
When using parts with built-in SCI and the SCI pins are specified, the SCI will be used. If a baud rate cannot be achieved within 3% of the desired value using the current clock rate, an error will be generated.

The definition of the RS232_ERRORS is as follows:

No UART:
• Bit 7 is 9th bit for 9 bit data mode (get and put).
• Bit 6 set to one indicates a put failed in float high mode.
With a UART:
• Used only by get:
• Copy of RCSTA register except:
• Bit 0 is used to indicate a parity error.
Examples:

#use rs232(baud=9600, xmit=PIN_A2,rcv=PIN_A3)

Example Files: ex_sqw.c
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado leobianco

  • PIC10
  • *
  • Mensajes: 7
Re: RE: bit de paridad
« Respuesta #3 en: 28 de Junio de 2006, 11:17:28 »
Hola mi nombre es leonardo, me podrias explicar como utilisar el bit de paridad, cual es el bit de falla de paridad en RS232_ERRORS, lo calcula el compilador al enviarlo y al resivirlo..? muchas gracias espero tu ayuda.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: bit de paridad
« Respuesta #4 en: 28 de Junio de 2006, 12:31:41 »
El bit de paridad es un bit que se añade a la información transmitida de tal forma que el número de "1" sea par o impar.
Por ejemplo si transmito el byte 01101101 si quiero un bit de paridad par este valdra "1" (ya que el número de unos que tenemos es impar, al añadir este se vuelve par) quedando: 011011011. Por el contrario si es paridad impar añadiremos un "0" (por ser el números de unos impar) quedando: 011011010.

La forma de consigurarlo es mediante el FUSE: PARITY que puede valer:

N => No se utiliza paridad,
E => Patidad Par,
O => Paridad Impar.

Si utilizamos SCI se encarga automaticamente de calcular y añadir el bit, y nosotros solo tendremos que verificar si se ha producido un error.

Saludos
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado leobianco

  • PIC10
  • *
  • Mensajes: 7
Re: bit de paridad
« Respuesta #5 en: 28 de Junio de 2006, 14:03:06 »
Hola otra ves..!
Lo q me detallaste al principio lo entendi a la perfecion, lo q no me quedo claro es lo del SCI, tiene algo q ver con la UART..?
Te doy mas detalle de lo q quiero lograg...
 quiero comunicar 2 pic, 18F252 y 12F675, via RS232 por software por medio de un solo pin de comunicacion, bidirecional. La comunicacion la he logrado pero me interesa aumentar la velosidad de comunicacion y usar el bit de parida para estar seguro de los datos transmitidos...
te muestro la configuracion q estoy usando:
#use delay(clock=10000000)
#use rs232(baud=18000, parity=E, xmit=PIN_B0, rcv=PIN_B0, bits=8, float_high, errors)
por favor aclarame tambien donde chequear si esisten fallas.

un abrazo.
leo

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: bit de paridad
« Respuesta #6 en: 28 de Junio de 2006, 15:49:12 »
Este es un pequeño ejemplo:

Código: CSS
  1. #bit ninth_bit = RS232_ERRORS.7
  2. #bit collision = RS232_ERRORS.6
  3.  
  4. #include <16F877.h>
  5. #use delay(clock=4000000)
  6. #fuses HS,NOWDT,NOPROTECT,NOLVP
  7.  
  8. #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,errors)
  9.  
  10.  
  11. #int_RDA
  12. void RDA_isr()
  13. {
  14.    // Check for errors
  15.    if(collision)
  16.    {
  17.       output_high(PIN_B0); // Tells the user about the error
  18.    }
  19.    else
  20.    {
  21.       putc(getc() + 1);
  22.    }
  23. }
  24.  
  25.  
  26. void main()
  27. {
  28.    output_low(PIN_B0);  // No errors from the beginning
  29.  
  30.    enable_interrupts(INT_RDA);   // Enable Rx interrupt
  31.    enable_interrupts(GLOBAL);    // Enable Global interrupts
  32.  
  33.    while(1);
  34. }

Saludos
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús