Autor Tema: Ayudita con UART  (Leído 2595 veces)

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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Ayudita con UART
« 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
Luego la transmision no entiendo tampoco como la hace...  :oops: Para que es el "while"?
Cualquier ayuda es bienvenida  :mrgreen:
Salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Ayudita con UART
« Respuesta #1 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
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Ayudita con UART
« Respuesta #2 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.