Página 1 de 1

Problema com USART 18F4550 no CCS

MensagemEnviado: 21 Out 2012 15:16
por mrgadotti
Boa tarde pessoal, estou migrando uma aplicação para o PIC18F4550, onde vou usar a USART em conjunto com USB. Até aqui sem menores problemas, mas ainda não havia utilizado a USART do 18F4550 e tive o problema de ela estar me retornando lixo, como se estivesse com baud incorreto...

Segue um exemplo que fiz no CCS que está apresentando esse mesmo erro.

#include <18F4550.h>
#FUSES NOWDT, WDT128, HSPLL, NOPROTECT, NOBROWNOUT, BORV20, NOPUT, NOCPD, NOSTVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOIESO, NOFCMEN, NOPBADEN, NOWRTC, NOWRTB, NOEBTR, NOEBTRB, NOCPB, MCLR, NOLPT1OSC, NOXINST, PLL5, CPUDIV1, NOUSBDIV, NOVREGEN, NOICPRT

#use delay(clock=20000000)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

void main()
{

setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

while(1){
printf("teste\n\r");
delay_ms(500);

}

}

Na serial recebo nada além de caracteres inválidos.

Marcelo

MensagemEnviado: 21 Out 2012 20:42
por mastk
Seu clock condiz com o que setou no programa?
Seu conversor TTL ou LVTTL para 232, esta ok?
O terminal do outro lado esta certinho?

MensagemEnviado: 21 Out 2012 22:24
por mrgadotti
Está tudo certo, pois havia no lugar um 16F877A no lugar funcionando perfeitamente com o max232. Poderia até ser o clock para estar com um baud incorreto, mas ainda to apanhando no PLL do 18F...

Re: Problema com USART 18F4550 no CCS

MensagemEnviado: 22 Out 2012 06:52
por andre_luis
Experimenta iniciar com o PUTC ( envio de um caractere apenas ) para tentar entender a lógica do erro.


+++

MensagemEnviado: 22 Out 2012 12:38
por mrgadotti
Tanto com putc ou printf tenho mesmo problema, no osciloscópio aparenta tudo certo a comunicação serial, mas é como estivesse saindo com baud incorreto... Obs.: estou usando um cristal de 20MHz.

MensagemEnviado: 22 Out 2012 20:47
por vtrx
Se voce vai usar UART com USB,onde arrajou esse clock#use delay(clock=20000000) ?
Ei sei que o 'fuses' a seguir funciona,tenta com eles usando cristal de 4 MHZ uSB Full,só para testar se é problema de configuração;
Código: Selecionar todos
#fuses XTPLL,NOWDT,NOPROTECT,LVP,NODEBUG,USBDIV,PLL1,CPUDIV2,VREGEN
#use delay(clock=48000000)
#DEFINE USB_HID_DEVICE TRUE
#define USB_USE_FULL_SPEED TRUE

MensagemEnviado: 23 Out 2012 21:27
por mrgadotti
Deu certo, era somente problema de configuração do Clock/PLL :D