Autor Tema: Ayuda comunicacion serie DSPIC 30f3013  (Leído 3948 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado tincho_a

  • PIC10
  • *
  • Mensajes: 14
Ayuda comunicacion serie DSPIC 30f3013
« en: 27 de Junio de 2011, 09:57:58 »
Hola estoy intentando comunica mi dspic 30f3013 mediante el hyperterminal y en este me aparecen simbolos y cosas raras, segun yo configure para que los 2 trabajen a 9600 baud, 8bits,1 bit de parada y ninguno de paridad y sin control de flujo, les dejo el codigo para ver si alguien me puede dar una mano:


#include <p30f3013.h>
#include <stdio.h>
#include <stdlib.h>
#include <uart.h>
#include <libpic30.h>



#define FCY 3582056




_FOSC(CSW_FSCM_OFF & FRC & XT);     
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF & MCLR_EN);
_FGS(CODE_PROT_OFF);
#define ISR __attribute__((interrupt, no_auto_psv)) 
char texto[]={'h','o','\0'};


//Main
int main()


   void init(),send(char data);
    init();
   send(texto);
 
     return(0);
}

void init()
{    //UART Config
    
    U1BRG=23;                     //Baud_Rate=9600 with Error=0.042%
    U1MODE=0x0000;            //8,N,1
U1MODEbits.UARTEN = 1; // Enable UART
    U1STA=0x0000;
   IFS0bits.U1TXIF=0;
     _U1RXIP=4;
    U1MODEbits.UARTEN=1;    //Enables UART1 // siempre este debe ir antes del q sigue
    U1STAbits.UTXEN=1;
    TRISD=0x0000;
    TRISB=0x000F;



}

void send(char x)
{   
    while(U1STAbits.UTXBF==1) continue;  //Checks if Buffer is Full and w8ts for it to have one location empty
//   for(j=0;j==i;j++){

 
   U1TXREG=x;

   
    while(U1STAbits.TRMT==0) continue;     //Loops till Transmition is over
   TRISD=0xff; //Todos como entrada menos D8.-    
   LATDbits.LATD8 =1;// Si esta en 0 Encendemos leds.

}


Desconectado saimon

  • PIC10
  • *
  • Mensajes: 11
Re: Ayuda comunicacion serie DSPIC 30f3013
« Respuesta #1 en: 27 de Junio de 2011, 12:21:22 »
Hola.

Me podrías dar más datos. Por ejemplo si como lo conectas es half-duplex o full-duplex o en su caso el puerto RS que usas. Yo hago una comunicación half-duplex y esos simbolos me salen por colisiones entre lo que recibo y lo que envio, por lo que tengo que poner un delay.

Espero que lo que te he dicho te haya servido de ayuda, sino dame más datos y a ver si puedo ayudarte más.

un saludo

Desconectado tincho_a

  • PIC10
  • *
  • Mensajes: 14
Re: Ayuda comunicacion serie DSPIC 30f3013
« Respuesta #2 en: 27 de Junio de 2011, 14:05:12 »
Hola.

Me podrías dar más datos. Por ejemplo si como lo conectas es half-duplex o full-duplex o en su caso el puerto RS que usas. Yo hago una comunicación half-duplex y esos simbolos me salen por colisiones entre lo que recibo y lo que envio, por lo que tengo que poner un delay.

Espero que lo que te he dicho te haya servido de ayuda, sino dame más datos y a ver si puedo ayudarte más.

un saludo
lo que estoy haciendo es pasar por el pin de tx1 del UART del dspic, de ahi voy a un convertidor uart<->usb q me lo lleva al usb, en el hyperterminal configuro con los 9600 baud, etc y me entra por el COM9 del la maquina, si podes y tenes algun codigo como para que lo vea seria muy bueno, gracias

Desconectado saimon

  • PIC10
  • *
  • Mensajes: 11
Re: Ayuda comunicacion serie DSPIC 30f3013
« Respuesta #3 en: 28 de Junio de 2011, 14:15:40 »
Lo siento pero ahora mismo el código que tengo no podría ponerlo tal cual, tendría que modificarlo a lo básico (temas de trabajo) y es con un dspic33, pero lo haré. De todas maneras algunas cosas que he visto del usb.

Has probado en intercambiar el data+ y data- (lo digo porque a lo mejor es un tema de cable. Con el RS485 me pasa qu esi intercambio los dos cables trenzados, me sale una cosa u otra. Según he visto en el USB se trabaja de forma similar (al menos en el 1 y en el 2). Si tienes un osciloscopio o similar puedes ver la señal que le envias y analizar si es el código ascii que quieres enviar, teniendo en cuenta que los cable están invertidos uno del otro, porque la señal es diferencial.

Tambien puedes esperar un cierto tiempo como te dije antes antes de enviar nada, al ser half-duplex, puede que el ordenador le envie cosas y tu hacer lo mismo a la vez, sobre todo si no te dá los mismos caracteres cada vez que los ejecutes. Aunque segun mi entender y si está bien echo, el convertidor uart-usb debería de tener en cuenta que la uart es full-duplex y el usb half-duplex, por lo que no puede enviar nada si está recibiendo.

Prueba esto y cuando tenga un poco de tiempo envio mi ejemplo con RS485


 

anything