Transmision USART C18

#1
Hola a todos,
Estoy empezando con la programacion de PIC's con el compilador C18.

Estoy intentando comunicar datos a traves de puerto serie, he hecho un pequeño programa muy sencillo, que unicamente inicializa el modulo USART y manda al puerto serie un string, pero no consigo visualizar nada.
Este es el codigo:

Código:
#include <p18f2680.h>
#include <delays.h>
#include <stdlib.h>

#include <usart.h>

                void main(void){

	         OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT
		           & USART_SYNC_SLAVE & USART_CONT_RX & USART_BRGH_HIGH, 25);	
                         putrsUSART((const far rom char *)"hola");
	}
La cuestion es que no me aparece nada en el hyperterminal!!

Agradeceria mucho vuestros comentarios y sugerencias.
Un saludo
 
#2
Hola, por lo que veo trabajas a 9600bps y supongo que el hyper tambien esta a 9600.
Yo probaria de sacar USART_SYNC_SLAVE de la configuracion y usaria Printf("hola\n\r\"); en lugar de putrsUSART((const far rom char *)"hola");
 
#3
He hecho los cambios indicados, pero sigue sin funcionar.
Te pongo el codigo con los cambios realizados:

Código:
#define USE_OR_MASKS
#include <p18f2680.h>
#include "usart.h"

unsigned char Rxdata[25];

unsigned char Txdata[] = "MICROCHIP_USART";


void main(void)
{
    unsigned char config=0,spbrg=0;
    CloseUSART();  

//-----configure USART -----
    config = USART_TX_INT_OFF | USART_RX_INT_ON | USART_ASYNCH_MODE |   USART_EIGHT_BIT | USART_CONT_RX | USART_BRGH_HIGH;

    spbrg = 25;                    

    OpenUSART(config, spbrg);       

  

    while(1) {
        putsUSART((char *)"a");
    }
}
Lo que aparece ahora en el hyper son simbolos sin sentido, como X, @, etc...

Si pongo printf, en vez de putsUSART, no aparece nada...

Gracias por tu ayuda y un saludo
 
#4
Ok, voy a probar el codigo, dame un dia.

Prueba esta codigo

#include "p18f2680.h"
#include "usart.h"

unsigned char Rxdata[25];
unsigned char Txdata[] = "MICROCHIP_USART";
unsigned char config=0,spbrg=0;

void main(void)
{

CloseUSART();

OpenUSART (USART_TX_INT_OFF &
USART_RX_INT_ON &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH, 25);

//-----configure USART -----

/* config = USART_TX_INT_OFF | USART_RX_INT_OFF | USART_ASYNCH_MODE | USART_EIGHT_BIT | USART_CONT_RX | USART_BRGH_HIGH;
spbrg = 25;
OpenUSART(config, spbrg); */



while(1) {

putsUSART((char *)Txdata);
}
}


Cambie la forma de abrir el puerto
 
Última edición:
#5
¿¿A ti te funciona??

A mi me sale una especie de X...
Aver si va a ser problema del hyperterminal...

¿Cual es la version que tu tienes?

Gracias!!!!!
 
#6
Yo lo probe la simulacion en proteus y funciona, no lo puedo probar de otra forma porque no tengo el micro.
Tenes configurado el hyper a 9600?
 
Arriba