seri iletişimde program hatası YARARMAN

bahsettigin dac kısmı içinmi
 
Sonuçta ADC'den voltajı okuyabilmek için de PIC'e veri gönderilmesi lazım.
Neyse hallettim.
Şimdi de Visual Studio'ya PIC'ten gelen veri eksik geliyor.
Onu çözmeye çalışıyorum...
 
DAC kısmında takılıp kaldım.
ADC kısmını hallettim.
Sadece onun kodu yeter mi sana?
Daha uğraşıyorum kod üzerinde.
 
Elinde şuan devre var değil mi, deneyebileceğin?
 
Bu arada, ben bilgisayardaki arayüz yazılımını Visual Studio 2010 ile geliştirdim.
Sen Visual Studio 2008 kullanıyorsun.
Olmazsa sadece kodlara bakıp, aynısını 2008'de oluştur.
Umarım becerebilirsin.
DAC kısmını yetiştiremedim.
Aslında onda da fazla bir şey kalmamıştı.
Sadece girilen voltajı 8 bitlik bir veriye çevirip PORTB'ye yollayacaktım.
PIC kısmında sorun çıktı.
Projenin en son halini aşağıdaki bağlantıdan indirebilirsin.


Kod:
#include <p18F452.h>
#include <stdlib.h>
#include <usart.h>
#include <adc.h>
#pragma config OSC=XT,PWRT=ON,WDT=OFF,DEBUG=OFF
//#pragma config CP0=OFF,CP1=OFF,CP2=OFF,CP3=OFF,CPB=OFF,CPD=OFF
//#pragma config WRT0=OFF,WRT1=OFF,WRT2=OFF,WRT3=OFF,WRTB=OFF,WRTC=OFF,WRTD=OFF
//#pragma config EBTR0=OFF,EBTR1=OFF,EBTR2=OFF,EBTR3=OFF,EBTRB=OFF

// 4Mhz için bir gecikme fonksiyonu
// mS saniye olarak 0-16.777.215 arası değer girilebilir.
void delay_ms(unsigned short long x)
{
    unsigned short long y, z;
    for ( ; x > 0 ; x--)
        for ( y = 0 ; y < 4 ; y++)
            for ( z = 0 ; z < 176 ; z++);
}

void main(void)
{
    unsigned int ADCValue;            // ADC'den okunacak olan değer
    char *Sonuc;                    // RS232'ye gönderilecek ADC değeri
    char *temp;

    char inputstr[1];

    TRISB=0x00;
    
    while( 1 )
    {
        // Configure USART
        OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX, 25);
        // Configure ADC
        OpenADC(ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_8ANA_0REF, ADC_CH0 & ADC_INT_OFF );

        while(BusyUSART());
        getsUSART(inputstr, 1);
        // Eğer UART'tan 'r' harfi gelmişse; ADC okuma işlemi yapılıyor...
        if(inputstr[0] == 114)
        {
            ConvertADC();                    // Start conversion
            while(BusyADC());                // Wait for completion
            ADCValue = ReadADC();

            ultoa(ADCValue, Sonuc);
            putsUSART(Sonuc);
        }
        // Eğer UART'tan 'w' harfi gelmişse; DAC'a yazma işlemi yapılıyor...
        if(inputstr[0] == 119)
        {
            putrsUSART("Yazma Seçildi");
            PORTB = 0x55;
        }

        delay_ms(50);
        
        // Modülleri temizle
        CloseUSART();
        CloseADC();
    }
}


 
Uyuya kaldın herhalde? :)
Yaa, işte böyle bir şey...
Bu mesleğe aşık olmak gerekir.
Bak saat 6.30 ve halen ayaktayım. :)
Aslında biraz uğraşsan DAC kısmını da halledersin. ;)
 
uyuya kalmadım ben nete telden baglanıyorum 1 gb kotası vardı doldu giremedim umarım ayaktasın
 

Forum istatistikleri

Konular
128,203
Mesajlar
915,805
Kullanıcılar
449,984
Son üye
riki35

Yeni konular

Geri
Üst