Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Tiago Millioli

[PROBLEMAS] USART - PIC 18F4550 - MPLAB C18

Recommended Posts

Olá pessoal,

 

Alguém, por favor, poderia me ajudar a resolver esse problema.

Estou querendo usar a comunicação serial do PIC18F4550. meu objetivo é usá-la para conectar a um módulo bluetooth para usar em um projeto, porém não estou conseguindo nem enviar um simples dado pela porta serial do PIC (Na verdade não consigo enviar o dado correto). Alguem poderia me ajudar? Segue o código abaixo:

 

 

 

 

#include <p18f4550.h> //arquivo de cabeçalho do PIC18f4550D
#include <stdio.h>
#include <usart.h>
 
 
#pragma config FOSC=HS
#pragma config CPUDIV=OSC1_PLL2
#pragma config WDT=OFF
#pragma config PWRT=ON
#pragma config BOR=ON
#pragma config BORV=1
#pragma config PBADEN=OFF
#pragma config LVP=OFF
 
 
 
void main (){
 
            TRISC = 0b10111111;
            OSCCONbits.IDLEN=0;
 
 
            OpenUSART(USART_TX_INT_OFF & 
                                USART_RX_INT_OFF & 
                                 USART_ASYNCH_MODE &
                                 USART_EIGHT_BIT &
                                 USART_BRGH_LOW,31);
 
            baudUSART(BAUD_8_BIT_RATE &
                                 BAUD_AUTO_OFF &
                                 BAUD_WAKEUP_OFF);
 
             while (1)
            {
                     while(BusyUSART()); 
                     putcUSART('A');
                     while(BusyUSART()); 
                     putcUSART('B');
                     while(BusyUSART()); 
                    putcUSART('C');
           }
}
 
 
 
OBS.: Estou usando cristal de 20MHz.
          Dado quer recebo é errado
          baud=9600
          Uso o proteus para fazer as simulações
 
Agradeço a todos que puderem me ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites
Tiago Millioli    0
  • Autor do tópico
  • Não consegui anexar o arquivo no proteus, então fiz uma imagem no paint espero que ajude

    post-727348-0-90871900-1403287433_thumb.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    MOR    797

    Não conheço muito o C da CCs, mas não está faltando a instrução

    #use delay (clock=20000000) ?

    MOR_AL

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    vtrx    605

    @Tiago Millioli,ja postei a algum tempo uma ajuda com o C18.

     

    http://www.4shared.com/rar/ugpqKe1r/Serial_C18.html

     

    Altere o projeto do link pois ele usa um LCD,mas a comunicação rs232 você utiliza toda.

     

    @MOR.esta diretriz é realmente usado no CCS,mas o compilador aqui usado é o C18,que poderia usar uma síntese praticamente igual.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Tiago Millioli    0
  • Autor do tópico
  • Mas meu interesse é usar o que eu to fazendo saca? Não o porque eu usar outro codigo, primeiro, porque nao vou aprender a usar e depois, caso eu precise modifcar ou alguma coisa é mais fácil eu modificar o meu saca? mas mesmo assim, obrigado pelo seu codigo, eu dei uma olhada, mas nao consegui entender e com usar....se você puder olhar o meu codigo agradeço muito

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    vtrx    605

    @Tiago Millioli,o código do link é uma inicialização 'padrão' com 20 mhz.

    Quando estiver em casa vou ver se dou uma olhada.

    Editado por vtrx

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    vtrx    605

    #include <p18cxxx.h> // Biblioteca com as definições do PIC 18F4550

    #include <delays.h> // Biblioteca para gerar atrasos

    #include <usart.h>

    /************************************************DEFINES**********************************************/

    #pragma config FOSC=HS

    #pragma config CPUDIV=OSC1_PLL2

    #pragma config WDT=OFF

    #pragma config PWRT=ON

    #pragma config BOR=ON

    #pragma config BORV=1

    #pragma config PBADEN=OFF

    #pragma config LVP=OFF

    /*******************************************************************************************************/

    void main (){

    TRISC = 0b10111111;

    //Configura como oscilador externo - 20Mhz

    OSCCONbits.SCS0 = 0;

    OSCCONbits.SCS1 = 0;

    //Define TX como transmissor (saída)

    TRISCbits.TRISC6 = 0;

    //Define RX como receptor (entrada)

    TRISCbits.TRISC7 = 1;

    OpenUSART(USART_TX_INT_OFF &

    USART_RX_INT_OFF &

    USART_ASYNCH_MODE &

    USART_EIGHT_BIT &

    USART_BRGH_LOW,31);

    baudUSART(BAUD_8_BIT_RATE &

    BAUD_AUTO_OFF &

    BAUD_WAKEUP_OFF);

    while (1)

    {

    while(BusyUSART());

    putcUSART('A');

    Delay10KTCYx(250); // Delay 10000*250 Ciclos

    while(BusyUSART());

    putcUSART('B');

    Delay10KTCYx(250); // Delay 10000*250 Ciclos

    while(BusyUSART());

    putcUSART('C');

    Delay10KTCYx(250); // Delay 10000*250 Ciclos

    }

    }

    Editado por vtrx

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Tiago Millioli    0
  • Autor do tópico
  • Não funcionou...

     

    Não sei o porque, mas toda vez só sai esses simbolo (-), não importa o que eu faça...

     

    post-727348-0-79733700-1403314236_thumb.

    post-727348-0-61395900-1403314327_thumb.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    vtrx    605

    Faz o seguinte,posta um link com o Projeto do Proteus e o projeto C18,assim ja postamos tudo funcionando e corrigido para você ver onde estava o problema.

    Editado por vtrx

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    vtrx    605

    @Tiago Millioli,não tenho muita experiência com o Protesu(os ajustes)mas o problema é o sguinte;

    1-Clicando em cima do micro,escolha nas propriedades o valor da frequencia em 20MHZ e não 4MHZ.

    2-Na propriedade do terminal altere em 'RX/TX polarity' em 'inverted'.

    Só isso.

    Editado por vtrx
    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Visitante
    Este tópico está impedido de receber novos posts.





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×