Pic Uart Data Aktarımı

Başlatan ALC, 16 Eylül 2013, 11:19:52

ALC

Merhaba arkadaşlar

Pic programlamada henüz yeniyim. Elimde pic18f67j60 var ve bununla terminalden "Merhaba" gibi bi yazı almam gerekiyor. c18 derleyicisini kullanıyorum. Baud ve fosc ayarları tamam ama yazı göremiyorum anlamsız karakterler cıkıyor. kod asağıda yardımcı olursanız sevinirim.

#include <p18f67j60.h>
#include <delays.h>

void UART_putc(char data)
{
      TXREG = data;
      while(PIR1bits.TXIF==0);
      PIR1bits.TXIF = 0;
}
void UART_puts(char *s)
{
      do{
            UART_putc(*s);
            s++;
            Delay10TCYx(250);
      }while(*s != 0);
}

void main(void)
{
      char str[] = "Hello World!";
      SPBRG = 39;
     TXSTAbits.TXEN = 1;
      while(1){
            UART_puts(str);
            UART_putc('\n');
            UART_putc('\r');
            Delay10KTCYx(250);
      }
}

salihonur

GND leri ortak ve parite bitlerinin de aynı olduğuna emin misiniz? Zaman zaman gözden kaçabiliyor.

Pyrodigy

Datasheet ini okuduğuna eminmisin ?
UART Pin ayarların nerede ?
Persistance is the name of the game in this business....

serhat1990

TXSTAx ve RCSTAx registerlarını göremedim ben . Port vs gibi hiç bir ayarda yok . Bu ayarlamaları yapıp denemeniz gerekiyor.

İyi çalışmalar ...

ALC

Arkadaşlar dediklerinizi yapmaya çalıstım ama gene olmadı. RealTerm programıyla bakıyorum RX kutucuğunda bişeyler var ama TXde hic bişey olmuyor. Tekrar bakabilir misiniz koda

#include <p18f67j60.h>
#include <delays.h>

void UART_putc(char data)
{
      TXREG = data;
      while(PIR1bits.TX1IF==0);
      PIR1bits.TXIF = 0;
}
void UART_puts(char *s)
{
      do
    {
            UART_putc(*s);
            s++;
            Delay10TCYx(250);
      }while(*s != 0);
}

void main(void)
{
      char str[] = "Hello World!";
      SPBRG = 39;    // FOSC 25Mhz, Baud:9600
//UART configuration
    TXSTA1bits.BRGH = 1;   // High speed selected
    TXSTA1bits.SYNC = 0;   // asynchronous selected
    RCSTA1bits.SPEN = 1;   //Serial port enable bit
    TXSTA1bits.TXEN = 1;   //Transmit enable bit
   
   PORTCbits.TX1 = 0;   //Uart write pins output
      while(1)
   {
            UART_puts(str);
            UART_putc('\n');
            UART_putc('\r');
            Delay10KTCYx(250);
    }
}