Problemas comunicación serie PIC 18F4550 y PC
Resultados 1 al 10 de 10

Tema: Problemas comunicación serie PIC 18F4550 y PC

  1. #1
    Usuario
    Mensajes
    60
    Gracias
    4
    Agradecido 49 veces en 21 posts

    Unhappy Problemas comunicación serie PIC 18F4550 y PC

    Buen día,
    He estado intentado realizar la comunicación serial (nunca antes lo había intentado) con el módulo UART del PIC 18F4550 con un programa bastante sencillo el cual solo prende o apaga un led dependiendo de si recibe una "a" o una "b" desde la pc mientras otro led se mantiene prendiendo y apagando cada cierto tiempo. El micro lo estoy programando en C18 y simulado en proteus funciona correctamente pero al momento de programar el micro y probarlo con el UART Tool del Pickit 2 el micro parece que no recibe nada de la pc.
    El micro lo tengo programado para que trabaje en modo asíncrono a 9600 bauds y así tambien están configurados el virtual terminal de proteus y el UART Tool del Pickit 2.

    Dejo mi código a ver si alguien encuentra algo mal configurado o algo.
    Código:
    #define USE_OR_MASKS
    
    #include <p18F4550.h>
    #include <timers.h>
    #include <usart.h>
    
    
    
            #pragma config PLLDIV   = 5         // (20 MHz crystal on PICDEM FS USB board)
            #pragma config CPUDIV   = OSC1_PLL2
            #pragma config USBDIV   = 2         // Clock source from 96MHz PLL/2
            #pragma config FOSC     = HSPLL_HS
            #pragma config FCMEN    = OFF
            #pragma config IESO     = OFF
            #pragma config PWRT     = OFF
            #pragma config BOR      = ON
            #pragma config BORV     = 3
            #pragma config VREGEN   = ON      //USB Voltage Regulator
            #pragma config WDT      = OFF
            #pragma config WDTPS    = 32768
            #pragma config MCLRE    = ON
            #pragma config LPT1OSC  = OFF
            #pragma config PBADEN   = OFF
    //      #pragma config CCP2MX   = ON
            #pragma config STVREN   = ON
            #pragma config LVP      = OFF
    //      #pragma config ICPRT    = OFF       // Dedicated In-Circuit Debug/Programming
            #pragma config XINST    = OFF       // Extended Instruction Set
            #pragma config CP0      = OFF
            #pragma config CP1      = OFF
    //      #pragma config CP2      = OFF
    //      #pragma config CP3      = OFF
            #pragma config CPB      = OFF
    //      #pragma config CPD      = OFF
            #pragma config WRT0     = OFF
            #pragma config WRT1     = OFF
    //      #pragma config WRT2     = OFF
    //      #pragma config WRT3     = OFF
            #pragma config WRTB     = OFF       // Boot Block Write Protection
            #pragma config WRTC     = OFF
    //      #pragma config WRTD     = OFF
            #pragma config EBTR0    = OFF
            #pragma config EBTR1    = OFF
    //      #pragma config EBTR2    = OFF
    //      #pragma config EBTR3    = OFF
            #pragma config EBTRB    = OFF
    
    void ISRRecepcion(void);
    volatile char Data,Kbhit;
    
    #define REMAPPED_RESET_VECTOR_ADDRESS            0x1000
    #define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS    0x1008
    #define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS    0x1018
    
    void YourHighPriorityISRCode();
    void YourLowPriorityISRCode();
    
    extern void _startup (void);        // See c018i.c in your C18 compiler dir
    #pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS
    void _reset (void){
        _asm goto _startup _endasm
    }
    #pragma code REMAPPED_HIGH_INTERRUPT_VECTOR = REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS
    void Remapped_High_ISR (void)    {
         _asm goto YourHighPriorityISRCode _endasm
    }
    #pragma code REMAPPED_LOW_INTERRUPT_VECTOR = REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS
    void Remapped_Low_ISR (void){
         _asm goto YourLowPriorityISRCode _endasm
    }
    
    #pragma code HIGH_INTERRUPT_VECTOR = 0x08
    void High_ISR (void)    {
         _asm goto REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS _endasm
    }
    #pragma code LOW_INTERRUPT_VECTOR = 0x18
    void Low_ISR (void){
         _asm goto REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS _endasm
    }
    #pragma code
    
    #pragma interrupt YourHighPriorityISRCode
    void YourHighPriorityISRCode()    {
            if (PIR1bits.RCIF==1){
            Data=getcUSART();
            PIR1bits.RCIF=0;
            switch(Data){
                case 0x61:
                    putrsUSART("Led apagado\r");
                    PORTDbits.RD7=0;
                 break;
                case 0x62:
                    putrsUSART("Led prendido\r");
                    PORTDbits.RD7=1;
    
                    break;
            }
        }
    }    //This return will be a "retfie fast", since this is in a #pragma interrupt section
    
    #pragma interruptlow YourLowPriorityISRCode
    void YourLowPriorityISRCode()    {
    
    }    //This return will be a "retfie", since this is in a #pragma interruptlow section
    
    /** DECLARATIONS ***************************************************/
    #pragma code
    char k;
    
        void main (void)
        {
        unsigned char config=0,spbrg=0,baudconfig=0,i=0;
        TRISD=0X00;
        LATD=0XFF;
    
        CloseUSART();  //turn off usart if was previously on
    
    //-----configure USART -----
        config = USART_TX_INT_OFF | USART_RX_INT_ON| USART_ASYNCH_MODE | USART_EIGHT_BIT | USART_CONT_RX | USART_BRGH_LOW;
    //-----SPBRG needs to be changed depending upon oscillator frequency-------
        spbrg = 129;                    //At 20Mhz of oscillator frequency & baud rate of 9600.
    
        OpenUSART(config, spbrg);        //API configures USART for desired parameters
    
        baudconfig =  BAUD_16_BIT_RATE | BAUD_AUTO_OFF;
        baudUSART (baudconfig);
    
        RCONbits.IPEN=0;
        INTCONbits.PEIE=1;
        INTCONbits.GIE=1;
    
        putrsUSART("Prueba Comunicacion Serial \r");
        while(1){
                for(k=0;k<2;k++)
                    {
                        Delay10KTCYx(130);
                    }
                PORTDbits.RD6=1;
                for(k=0;k<2;k++)
                    {
                        Delay10KTCYx(130);
                    }
                PORTDbits.RD6=0;
    
            
                }
            }
    Saludos!

  2. #2
    Super Moderator Avatar de HJ.0X00
    Ubicación
    Tanti - Córdoba - Argentina
    Mensajes
    2,159
    Gracias
    1,904
    Agradecido 1,577 veces en 942 posts
    Hola David376, inicialmente deberías subir el circuito que estas utilizando para descartar problemas de hardware, lo digo ya que mencionas que la simulación te funciona correctamente.

    Saludos
    HJ
    "Cuando llegue la inspiración, que me encuentre trabajando."
    ​PICASSO, Pablo

    Consulta el Indice de Montajes NeoTeo

    Esta etapa concluyó, ahora estoy Por aquí...

    No soy mas Moderador aunque figure como tal.

  3. #3
    Usuario Avatar de Julian_03
    Ubicación
    Entre Rios, Argentina
    Mensajes
    1,493
    Gracias
    492
    Agradecido 525 veces en 373 posts
    Muy bueno David felicitaciones
    que programa usas para enviar la letra "a" o "b", lo hiciste tu, o usas el hyperterminal?
    y coincido con HJ si la simulación anda debe haber un problema de Hardware, el proteus (por lo menos a mi) cada cosa que simule anda, por lo menos con PIC.....
    Saludos!

  4. #4
    Usuario
    Mensajes
    60
    Gracias
    4
    Agradecido 49 veces en 21 posts
    J5 es donde estoy conectando los pines RX y TX

    Pulsa en la imagen para verla en tamaño completo

Nombre: 18f4550.jpg
Visitas: 188
Tamaño: 94.9 KB
ID: 2773


    Y aquí una foto del PCB
    Pulsa en la imagen para verla en tamaño completo

Nombre: 2012-04-17_09-11-49_282.jpg
Visitas: 35
Tamaño: 96.3 KB
ID: 2774


    La conexión en el mundo real la estoy intentado hacer con el UART Tool del Pickit 2
    Última edición por david376; 19/04/2012 a las 09:28

  5. Los siguientes usuarios agradecen a david376 por este post:

    Julian_03 (17/04/2012)

  6. #5
    Usuario
    Mensajes
    60
    Gracias
    4
    Agradecido 49 veces en 21 posts
    Por fin pude hacerlo funcionar. Tenía un error en la configuración de la velocidad del pic, en la formula para configurar el baud se necesita FOSC y pensé que se refería a la frecuencia del cristal pero lo que debe ir ahí es la frecuencia que sale despues del PLL Postscaler

    Saludos

  7. #6
    Usuario Avatar de Julian_03
    Ubicación
    Entre Rios, Argentina
    Mensajes
    1,493
    Gracias
    492
    Agradecido 525 veces en 373 posts
    Felicitaciones amigo!
    me paso, es comun jajaja
    Saludos y espero que sigas avanzando con esto!

  8. #7
    Super Moderator Avatar de HJ.0X00
    Ubicación
    Tanti - Córdoba - Argentina
    Mensajes
    2,159
    Gracias
    1,904
    Agradecido 1,577 veces en 942 posts
    Que bueno que hayas solucionado tu problema.
    Pero tu experiencia, como la de tantos, nos deja el sabor amargo de saber que no se puede confiar en las simulaciones...

    Saludos
    HJ
    "Cuando llegue la inspiración, que me encuentre trabajando."
    ​PICASSO, Pablo

    Consulta el Indice de Montajes NeoTeo

    Esta etapa concluyó, ahora estoy Por aquí...

    No soy mas Moderador aunque figure como tal.

  9. #8
    Usuario
    Mensajes
    60
    Gracias
    4
    Agradecido 49 veces en 21 posts
    Pues habiendo solucionado este problema con el UART, pude avanzar y lograr lo que realmente quería hacer, controlar un robot por bluetooth con la computadora

    http://www.neoteo.com/foro/f51/robot...-18f4550-3041/

    Saludos

  10. #9
    Super Moderator Avatar de HJ.0X00
    Ubicación
    Tanti - Córdoba - Argentina
    Mensajes
    2,159
    Gracias
    1,904
    Agradecido 1,577 veces en 942 posts
    Cita Iniciado por david376 Ver mensaje
    Pues habiendo solucionado este problema con el UART, pude avanzar y lograr lo que realmente quería hacer, controlar un robot por bluetooth con la computadora

    http://www.neoteo.com/foro/f51/robot...-18f4550-3041/

    Saludos
    Lo estuve viendo, muy bueno, felicitaciones.

    Saludos
    HJ
    "Cuando llegue la inspiración, que me encuentre trabajando."
    ​PICASSO, Pablo

    Consulta el Indice de Montajes NeoTeo

    Esta etapa concluyó, ahora estoy Por aquí...

    No soy mas Moderador aunque figure como tal.

  11. #10
    Usuario Avatar de Julian_03
    Ubicación
    Entre Rios, Argentina
    Mensajes
    1,493
    Gracias
    492
    Agradecido 525 veces en 373 posts
    Mis felicitaciones amigo!

Temas similares

  1. 18f4550 + ethernet + 3servos
    Por luisko en el foro Electrónica Digital
    Respuestas: 13
    Último mensaje: 17/05/2013, 21:50
  2. PROBLEMAS con MTI-6 SIRFSTARIII y 18F4550 usando ETHERNET
    Por luisko en el foro Electrónica Digital
    Respuestas: 4
    Último mensaje: 04/06/2012, 15:31
  3. Duda comunicacion serie Pic y Pc
    Por gamuu en el foro Electrónica Digital
    Respuestas: 13
    Último mensaje: 21/02/2012, 05:05
  4. 18f4550 + ethernet + 3servos
    Por luisko en el foro Electrónica
    Respuestas: 1
    Último mensaje: 20/02/2012, 18:17
  5. Termometros en serie
    Por brandanbra en el foro Electrónica Digital
    Respuestas: 13
    Último mensaje: 17/01/2012, 23:54

Los visitantes encuentran esta página buscando por:

pic18f4550 comunicacion serial

comunicacion serial con pic18f4550

serial pic18f4550

comunicacion serial pic 18f4550

pic 18f4550 serial

comunicacion serial pic 18

comunicacion serie con pic

comunicacion serial rs232 con pic 18f4550

comunicacion serial ccs

usart 18f4550 serial

comunicacion serial pic a pc

comunicacion serial entre dos pics 18f4550

usart 18f4550

uart 18f4550

programa usart 18f4550

Problemas de comunicación entre el pic 18f4550 y la pc

18f4550 ccs rx error

18f4550 serial pc

pic ccs 20mhz

comunicacion serial pic a pic

18f4550 serial

comunicacion serie pic

comunicacion serial pic 18f4550 con ccsusuart a usbcomunicacion serial pic 16f con 18f

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37