Autor Tema: PIC16F1825 y comunicación UART  (Leído 2018 veces)

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

Desconectado a9965

  • PIC10
  • *
  • Mensajes: 22
PIC16F1825 y comunicación UART
« en: 07 de Abril de 2015, 13:17:17 »
Buenas tardes.

Estoy tratando de comunicarme con el pic16f1825 y el terminal serie.
Lo estoy haciendo con MikroC. He escrito en el foro de mikroe, pero no damos con el clavo.

Aquí os dejo el código:

Código: [Seleccionar]


int j = 12;
char txt[7];

void main(){


 ANSELC = 0;       //PORTC as digital
 TRISC.F4 = 0;     //PORT C4 as Output
 TRISC.F5 = 1;     //PORT C5 as Input
 APFCON0 = 0x00;   //Configure Rx and Tx pins

 UART1_Init(9600); // Initialize UART module at 9600 bps


  while (1) {



    IntToStr(j, txt);
    UART1_Write_Text(txt);


    }
}


A mí me da, que el problema es de configuración del oscilador y el baudarate de la comunicación.
El proyecto está bien configurado. Mi reloj es de 12Mhz y externo.

Aquí os dejo algunas imágenes del proyecto y configuración.


Un saludo y gracias a quien le dedique unos minutos.  ((:-))



Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: PIC16F1825 y comunicación UART
« Respuesta #1 en: 07 de Abril de 2015, 20:17:51 »
El unico ejemplo que encontre fue este:

char uart_rd;

void main() {

  CHECON = 30;                     // Esto es configuracion de puertos
  AD1PCFG = 0xFFFF;

  UART1_Init(56000);              // Initialize UART module at 9600 bps
  Delay_ms(100);                  // Wait for UART module to stabilize

  UART1_Write_Text("Start");
  UART1_Write(13);
  UART1_Write(10);

  while (1) {                     // Endless loop
    if (UART1_Data_Ready()) {     // If data is received
      uart_rd = UART1_Read();     // read the received data
      UART1_Write(uart_rd);       // and send data via UART
    }
  }
}

Si observas para iniciarlo ahi utiliza otro valor para los 9600, sino usa el avanzado:
http://www.mikroe.com/download/eng/documents/compilers/mikroc/pro/pic32/help/uart_library.htm


UARTx_Init_Advanced(unsigned long baud_rate, unsigned long freq_Khz, unsigned short high_low, unsigned short parity, unsigned short stop_bits);

UARTx_Init_Advanced(9600, 2000,_UART_LOW_SPEED, _UART_8BIT_NOPARITY, _UART_ONE_STOPBIT);

Ese te permite seleccionar la frecuencia del bus, es decir 8Mhz/4 son 2Mhz o 2000Khz, podrias probarlo.

Desconectado a9965

  • PIC10
  • *
  • Mensajes: 22
Re: PIC16F1825 y comunicación UART
« Respuesta #2 en: 08 de Abril de 2015, 04:56:50 »
Gracias por tu respuesta.

El ejemplo que me has pasado ya lo he probado y no funciona.

El ejemplo que yo presento es más simple, muestra un 12 por terminal.

En cuanto a la librería que me has pasado, es para pic 32. Yo estoy usando un pic16.
Libreria UART pic16

Ayer probé el código en proteus y funcionó a la primera. No nos podemos fiar porque es un simulador, pero en mi circuito real, revisé el hardware e incluso cambié el adaptador ftdi. Seguía sin funcionar.

¿Qué co***** puede pasar?
¿Si el hardware está bien y el software también, por qué no va ?
A mí me da que es un registro de la comunicación o el oscilador.


En fin, gracias de nuevo por su tiempo. Un saludo. :5]


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: PIC16F1825 y comunicación UART
« Respuesta #3 en: 08 de Abril de 2015, 05:21:47 »
Fijate que valor le esta poniendo en el registro donde se carga el baudrate en proteus, y la frecuencia del PIC, en lso datasheet del PIC esta la formula para calcular el baudrate, ahi te podes sacar la duda si es por un error de frecuencia o ya pasas a otra cosa.

Desconectado a9965

  • PIC10
  • *
  • Mensajes: 22
Re: PIC16F1825 y comunicación UART
« Respuesta #4 en: 08 de Abril de 2015, 06:41:59 »
Gracias de nuevo por tu aportación.

Registro a registro configuré todo lo que dices.

Voy a volver a escribir a los de mikroe a ver qué me dicen. Lo último que se me ocurre es que sea un error del compilador.
El problema es que este micro está en la versión de 20 y 14 pines. ¿Puede ser que el compilador esté haciendo cosas mal?
En fin. Dadas las quejas sobre éste, no dudaría que algún problema hay.


De nuevo gracias por su tiempo y estaré de vuelta con la solución o preguntando qué compilador usar: el de MP o el de HI TECH.

Un saludo!!  :z)