TODOPIC

Microcontroladores PIC => dsPIC => Mensaje iniciado por: Marttyn en 25 de Agosto de 2009, 11:51:34

Título: Ayudita con UART
Publicado por: Marttyn en 25 de Agosto de 2009, 11:51:34
Hola chicos! es la primera vez que piso este subforo ya que nunca me meti con dsPic por ahora...
Estoy queriendo hacer un programita para controlar un iPod, y resulta que la base de lo que quiero hacer ya lo hizo alguien por internet, pero con un dsPic  :?
Yo lo quiero adaptar a un Pic12 porque no necesito ni tantos pines ni tantos recursos, pero leyendo el datasheet y el codigo no consigo entender muy bien como configura el UART.

Este es el codigo:

Código: C
  1. void uartInit (void)
  2. {
  3.         U1BRG = 0x33;   //19200 baud
  4.  
  5.         _U1TXIP = 0;
  6.         _U1RXIP = 0;
  7.         IEC0bits.U1TXIE = 1;
  8.         IEC0bits.U1RXIE = 1;
  9.  
  10.         U1STAbits.UTXISEL = 0;
  11.         U1STAbits.UTXBRK = 0;
  12.         U1STAbits.URXISEL = 0;
  13.         U1STAbits.ADDEN = 0;
  14.  
  15.         U1MODE = 0x8400;
  16.         U1STAbits.UTXEN = 1;
  17. }
  18.  
  19. void uartSend (char cString[], int len)
  20. {
  21.         messageLen = len;
  22.         message = cString;
  23.         messageI = 0;
  24.         _U1TXIF = 1;
  25.         _U1TXIP = 0x5;
  26.         Nop();
  27.         while ((messageI < messageLen) || (!U1STAbits.TRMT))
  28.         {
  29.                 Nop();
  30.         }
  31.         _U1TXIP = 0x0;
  32. }

En principio deberia ser 8N1, a 19200bps que es como funciona el Apple Accessory Protocol (http://nuxx.net/wiki/Apple_Accessory_Protocol)
Luego la transmision no entiendo tampoco como la hace...  :oops: Para que es el "while"?
Cualquier ayuda es bienvenida  :mrgreen:
Salu2
Título: Re: Ayudita con UART
Publicado por: Marttyn en 29 de Agosto de 2009, 02:14:21
Bueno, no consegui entender el codigo, y preferi investigar en el funcionamiento del protocolo del iPod en vez de pelearme con datasheets de un dsPic  :mrgreen:
Lo consegui, hice un mando a distancia para mi iPhone controlado por PIC  :-/
Lo teneis aqui: http://www.todopic.com.ar/foros/index.php?topic=27364.0
Título: Re: Ayudita con UART
Publicado por: Nocturno en 29 de Agosto de 2009, 02:54:15
Me perdí este tema cuando lo publicaste y no te he podido ayudar a tiempo, porque ya lo has terminado.

De todas formas, para que no te quedes con la duda, te diré que ese while está ahí para que el programa se quede esperando a que el byte transmitido termine de transmitirse, momento en el que el bit U1STAbits.TRMT pasará a 1.

Para saber cómo está configurada la UART hay que ir a la datasheet y mirar qué significa cada uno de esos bits. En CCS es mucho más sencillo e intuitivo; en C30 es más parecido al assembler.