seri iletişimde program hatası YARARMAN

Katılım
25 Ocak 2012
Mesajlar
45
Puanları
1
arkadaşlar yarına vermem gerekn bir proje var ama program kodu hatalı gibi ben ve arkadaşlarım hatayı bulamadık devrenin adc degerini usbttl(proteusda olmadıgı için mux232 ve virtuel terminal kullandım) atması gerekiyor ama potansiyometre ile ne kadar degeri degiştirirsem degiştireyim adc degeri degişmiyor ve çıkısa "3 volt " degerini veriyor ve degişmiyor programı aşagıda veriyorum hata gören arkadaşlar yardımcı olursa cok sevinirim

Kod:
#include <p18F452.h>
#include <usart.h>
#include <adc.h>
#include <stdlib.h>
#include <delays.h>
#pragma config OSC=XT,PWRT=ON,WDT=OFF,LVP=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
unsigned long int gonder;
unsigned long int gelen;
unsigned long int bilgi;
void DelayFor18TCY( void )
{
Nop(); Nop(); Nop();
Nop(); Nop(); Nop();
Nop(); Nop(); Nop();
Nop(); Nop(); Nop();
}
void main()
{
//USART’ı ayarla
OpenUSART( USART_TX_INT_OFF &
USART_RX_INT_OFF & // interrupt off
USART_ASYNCH_MODE & // asenkron mod
USART_EIGHT_BIT & // 8 bit veri
USART_CONT_RX & // sürekli mod
USART_BRGH_HIGH, // high speed mod
25 ); // baud rate için
OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_8ANA_0REF,
           ADC_CH0 & ADC_INT_OFF );
TRISA=0x00;
TRISB=0x00;
TRISC=0x80;
while (1)
{
  Delay10TCYx(5);
  ConvertADC();
  while( BusyADC() );
  bilgi=ReadADC();
while( BusyUSART() );
putcUSART(gonder);
while( BusyUSART() );
gelen=getcUSART();
PORTB=gelen;


}
CloseADC();
CloseUSART();
}
 
Eve yeni geldim, şimdi bakacağım.
Proteus dosyasını ve MPLAB C18 projesini RAR'layıp buraya ekler misin?
 
hocam bişey daha sorucam arayüzden gelen string degerini picde nasıl int te ceviricem bilgin varmı
 
Şuan kodunu Protues'da çalıştırmaya çalışıyorum.
Hele bir çalıştırayım, orasını da hallederiz.
Daha önce C18 ile çalışmadım.
 
hocam cok teşekkür ederim sen bu projemde bana cok yardımcı oldun bitirme projem bu benım yarın sabaha veremezsem okul biraz sıkıntıya giriyor tekrar teşekkür ettim ilgilendigin için
 
Merhaba
Kullandığınız dili bilmiyorum.Arayüzü çalıştıramadım.(vb.2008 express edition var ama açamadım)Ama prensip aynıdır.PC'den PIC'e yolladığınız string değeri olarak giden,klavye harflerinin,rakkamların sekizlik paketler halinde hex olarak PIC'e gider.Örneğin klavyeden (1) bir rakkamını yollarsanız HEX'31' veya B'00110001' gibi gider.PIC'İn yazılımının da bu gelen değeri işlemesi mümkündür.Tersi ise PIC'ten PC'ye yazılım ile (1) bir rakkamını yollarsanız PC'de DEC"49" (desimal olarak okursunuz)PC tarafında da gelen bu dec değerini yine basit bir iki kod ile (1) rakkamı olarak gösterirsiniz.Kolay gelsin.Not:İsiste Kristal frekansınız 1mhz olarak okudum.Dediğim gibi programın içindeki baudrate için BRGH hıgh ve SPBRG yi 25 okudum.Bu yazılım asm de 4mhz kristale ve 9600'e denk gelmesi gerekir diye düşünüyorum.Dediğim gibi dile tam hakim olmadığım için emin de değilim.
 
Son düzenleme:
Sen sürekli mi ADC değerin bilgisayara gönderilmesini istiyorsun?
Yoksa bilgisayardaki yazdığın yazılımdaki, ADC Değeri düğmesine bastığında mı ADC değerini okumak istiyorsun.
Ayrıca DAC Değeri düğmesine de basınca, yandaki kutuya girdiğin voltajı PIC devresinde DAC çıkışında görmek istiyorsun.
Değil mi?
 
kullandıgım dil C# arayüzde verdiğin bilgiler faydalı oldu teşekkur ederim
 
butona bastıgım zaman adc degerini arayüzde butona bastıgım zaman dac degerini devrede görmek istiyorum olabilirmi
 

Forum istatistikleri

Konular
127,951
Mesajlar
913,870
Kullanıcılar
449,599
Son üye
Gksn

Yeni konular

Geri
Üst