TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Manel28 en 06 de Octubre de 2011, 04:54:04

Título: Aumentar número de UARTs
Publicado por: Manel28 en 06 de Octubre de 2011, 04:54:04
Buenas a todos,
me gustaría presentaros mis duda. Resulta que tengo un PIC con una sola UART y con este PIC me gustaría llegar a controlar 3 UARTs. Mi pregunta es si existe algún expansor de UART o algo así que se controle por I2C/SPI o por el contrario merece la pena implementar otras 2 UART por software(creo que este caso me consumiría muchos recursos). Estoy hablando de un PIC18F4620. será demasiado proceso para el micro el controlar 3 UARTs mas un controlador ethernet? Quizás será mejor usar FPGA? Ando un poco perdido.
Gracias por la ayuda
Título: Re: Aumentar número de UARTs
Publicado por: Suky en 06 de Octubre de 2011, 10:10:36
Estas entre usar un 18F4620 o un FPGA!  :o  :undecided: Por ahí te conviene algún microcontrolador con 2 UART por hardware e implementar una por software  :)
Título: Re: Aumentar número de UARTs
Publicado por: Manel28 en 06 de Octubre de 2011, 10:45:54
Hola Suky. Ahora mismo dispongo de un kit de desarrollo de CCS con un controlador ethernet y un PIC18F4620 con 1 UART. Para hacer pruebas habia pensado en algún expansor UART via I2C como el SC16IS762. Pero creo que voy a terminar por comprar algún PIC con 2 UART e implementar la tercera por software, además esta última solo va a transmitir en una dirección así me ahorro las interrupciones para recepción de datos. Nunca he usado UART por software y no se si tienen el mismo rendimiento a velocidades altas, en mi caso 56700bps.
Intuyo que será algo así como:

#USE RS232(BAUD=9600, XMIT=PIN_C6, RCV=PIN_C7, STREAM=COM1)
#USE RS232(BAUD=9600, XMIT=PIN_B0, RCV=PIN_B1, STREAM=COM2 )
#USE RS232(BAUD=9600, XMIT=PIN_B2, RCV=PIN_B3, STREAM=COM3 )

Hay algún ejemplo de UART por software en CCS?
Título: Re: Aumentar número de UARTs
Publicado por: KALLITOS en 06 de Octubre de 2011, 12:17:29
Hola Manel, en ESTE HILO (http://www.todopic.com.ar/foros/index.php?topic=34031.0) Marttyn vende unos pics pequeñitos que tienen usart, por alli que implementas varios esclavos por SPI o I2C.


saludos
Título: Re: Aumentar número de UARTs
Publicado por: jeremylf en 06 de Octubre de 2011, 13:44:41
No olvides agregar "FORCE_SW" a los que quieres que sean por software, puede que sea automatico, pero almenos yo prefiero ponerlo para saber un poco mas a detalle que coños quiero que haga al ccs =D
Título: Re: Aumentar número de UARTs
Publicado por: Manel28 en 25 de Octubre de 2011, 06:04:21
Existe alguna limitación en la tasa de envio cuando se usa Software UART?. He comprobado que usando tasas bajas de 19.2kbps se envian bien los caracteres pero al aumentarlo hasta 57.6kbps hay algún carácter que se corrompe. No me fio mucho de usar una uart por software solo para tx..quizás debería comprarme un expansor UART, este parece que esta bien: http://www.datasheetarchive.com/SC16IS762-datasheet.html

 El reloj del sistema es de 40Mhz.
Título: Re: Aumentar número de UARTs
Publicado por: fram_22 en 25 de Octubre de 2011, 11:34:11
Los dsPIC cuentan con dos UART, podrias implementar un tercero por software.
eso te hacria mas secilla la tarea. O si no simplemente puedes ponerle un pic 16 de esclavo para que la haga de tercer uart
Título: Re: Aumentar número de UARTs
Publicado por: Suky en 25 de Octubre de 2011, 11:56:46
Los dsPIC cuentan con dos UART, podrias implementar un tercero por software.

No es necesario pasar a un dsPIC para 2 UARTs. Hay muchos PIC18 con esa caracteristica  ;-)


Saludos!
Título: Re: Aumentar número de UARTs
Publicado por: MerLiNz en 25 de Octubre de 2011, 12:00:52
siempre te puedes pillar un pic32 con 6 usarts xD

Tienes pics de 8bits con 2 usarts. Puedes usar uno de estos y luego un expansor SPI por ejemplo.

Los usart por software no van bien porque en cuanto hay una interrupcion el tiempo que tarde en hacerla es el tiempo que aumenta al baud. Ademas si la libreria no esta muy optimizada y no cuenta el tiempo entre instruccion e instruccion el % de error se aumenta.