eeproma seri portdan yanlis bilgi

Başlatan teknikelektronikci, 01 Kasım 2007, 21:05:48

teknikelektronikci

merhaba arkadaslar
programimda seri portdan gelen bilgiyi eeproma kaydetmek icin bir alt program var  ve denanimsal kesme oldugunda alt programa gidiyor ve gelen bilgiyi kayit ediyor fakat bu yazdiklarim sadece isis de oluyor gercek hayata gene seri portdan bilgiyi aliyor eeproma isliyor ama atiyorum - yerine j harfi a harfi yerine l harfi gibi degisik degisik karakter kayit ediyor karakterleri kayit etme sirasi dogru ama yanlis karakter kayit ediyor .donanimsal olarak usb-232 ceviricinin 2-3 nolu uclarini direk pice baglamadim hic rs232 kullanmadim cünkü ceviricinin icinde zaten ftdi chipi var diye .simdi sizlere sorum acaba bunu yapmasinin sebebi ne ollabilir yazilimsalmi donanimsalmi? birde sanirim bu ceviri cikisi terslenerek cikior onun bi etkisi varmidir acaba ? yardimci olursaniz sevinirim simdiden tesekürler



Device 16F877


TRISA=%11111111            
TRISB=%00000000 
TRISC=%10111111
TRISD=%00000000
TRISE=%00000000



PORTA=%00000000              
PORTB=%00000000
PORTC=%11111111
PORTD=%00000000
PORTE=%00000000

XTAL 4
Declare HSERIAL_BAUD 4800
Declare HSERIAL_RCSTA 90
Declare HSERIAL_TXSTA 20
Declare HSERIAL_CLEAR On 
Declare HBUS_BITRATE 400
WARNINGS = OFF 




RCSTA = $90 ' Enable serial port & continuous receive
TXSTA = $20 ' Enable transmit, BRGH = 0
SPBRG = 12  ' 4800 Baud @ 4MHz, 0,17%




Symbol GIE  =INTCON.7 
Symbol PEIE =INTCON.6 
Symbol RCIE =PIE1.5 
Symbol RCIF =PIR1.5


RCIE=1 
PEIE=1 
GIE=1

.
.
degiskenler 
.
.

On Interrupt GoTo  seri_kesme
.
.
.
.
.
.
.
Disable 
seri_kesme:
   
     RCIE=0
     PEIE=0 
     GIE=0
    
     RCSTA =%10010000
    DelayMS 100
    temp=RCREG
    EWrite x,[temp]
    x=x+1
   


exit:
RCREG=0
    RCIE=1 
    PEIE=1 
    GIE=1
    Context Restore 
    Enable 
    Resume 
    End
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

Gurkan-Demirbas

Merhabalar;
keyifli forumlar diliyorum. Seri haberleşmede çok iyi olduğumu söyleyemem. Ancak belki ışık tutabilir;
Eğer program similatörde çalıştı ise yazdığın programda hata yok demektir. İncelendiğinde de zaten pek hata görünmüyor.
Gönderilen bilgileri yanlışta olsa aldığına göre, PC nin COM portu numarası da yanlış değil
PC'nin USB COM'undaki baud rate vs gibi set değerlerini kontrol edermisin?
USB - RS232 çevirici kablosu PC'ye bağlı iken !... (önemli !..)
Start -> settings -> Control Panel ==> system'i çift tıkla
Hardware sekmesinden Device Manager'a gel; oradan Port (COM & LPT) yi tıkla; altına açılan seçeneklerden, senin çeviriciye ait olanı seçip çift tıkla. Açılan pencerede, Port settings sekmesine gel ve oradaki Baud rate ve diğer detay settingsleri senin Pic'e seri haberleşme için girdiğin set değerleri ile kontrol et. Eğer farklı ise, pic programındaki bu değerleri düzelt ve bir de öyle dene bakalım.
Tavsiyem device manager'daki bu set değerlerini değiştirmemen, başka zaman kullanacağın zaman sıkıntı yaşayabilirsin. Pic'in set değerlerini değiştirmek daha mantıklı.

Bu arada PC'den haberleşmeyi nasıl sağlıyorsun? Visual Basic ile mi? eğer yanıt evet ise; Visual basic'e ekleme yaptığın dll nedir? yada başka bir yöntemmidir? sadece yöntemi merak ettim


iyi çalışmalar

teknikelektronikci

merhaba öncelikle cevabiniz icin tesekür ederim

dediginiz islemleri ben yapmisdim hatta benim picin yazilimi 4800 baund ordaki 19000 di ben onu 4800 yaptim yani baund ratede saniirm bir problem yok :(  bilgisayar programini kendim yazmadim (ama yazma asamasindayim) hazir bir program ile gönderiyorum bilgileri sanirim bilgiler terslenerek gidiyor (ft232de) bende onu yazilimda tekrar nasil tersleyecem onu bilmiyorum neyse denemeelrime devame diyorum bu arada insallah problemi cözecez ilginiz icin tesekür ederim kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

teknikelektronikci

merhaba üstadlar problemi sonunda galiba buldum simdilik isisde gercekde denyemedim yapmam gereken rcreg i terslemek ya da bir not kapisi koymak fakat donanimsal yapmak bunu zor olcak acaba bunu yazilimsal olarak nasil yaparim veya bilgisayar icin seri portu tersleyen pogram varmi acaba bi bilginiz varmi ?
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

buiba

asm olsaydi:

COMF      RCREG,W   ;RCREG REGISTERIBI TERSLE SONUCU W,YA YAZ
MOVWF    ?               ;ISTEDIGIN REGISTERE VEYA PORTA ATA

 seklinde basitce tersleyebilirdin.

teknikelektronikci

cevapalriniz icin tesekür ederim problemi rs232 entegresinin maxim markasi ile degistirdim ve condansatörleri datashetdeki gibi taktim problem düzeldi cok rahat ve saglikli seri iletisim yapabiliyorum herkeze kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

Gurkan-Demirbas

Merhabalar
Problemi çözdüğüne çok sevindim. Buiba kardeş'in söylediği gibi terslemek için bilginin complement'ini alman lazım; COMF
ya da picbasic kullanıyorsan; RCREG'i FF hex ile exclusive OR'laman lazım. Bunun operatörü ^ işaretidir

Deger VAR BYTE
Deger = RCREG ^ $FF     'RCREG'in complementini alıp Deger isimli değişkene atar.

Eğer seri haberleşme için Visual Basic kullanacaksan, burada tecrübelerimizi paylaşalım derim;
Şu an diğer projelerden dolayı pek zaman ayıramadım USB -> PIC haberleşmesine. FTDI drivers  ve FT232 kullanarak birşeyler yapılabilir. FT232 DIP kılıf değil, DIP kılıf'a çevirecek bir adaptör arıyorum, yada mecbur kendim yapacağım.
www.ftdi.com'da FTDI drivers ile ilgili çok güzel dökümanlar var; örnekler, açıklamalar, driver ile ilgili VB de kullanılabilecek komutların detaylı açıklamaları vs vs.
Ah zaman olsa....., zor değil aslında bunlar (konu USB olunca, göründüğü kadar kolay da değil); bu USB'yi normal RS232 port gibi kullanamıyorsun
http://support.microsoft.com/kb/832678#appliesto

kolay gelsin

teknikelektronikci

hocam bu tersleme olayini ögrendigim cok iyi oldu tesekür ederim cünkü rcreg icin değil ama kayan yazida data portunu tersleyerek efekt ollarak kullanamak istiyorum o yüzden orda isimi görecek bu komut ayrica belirtiigniz gibi

söyledikelriniz cok dogru usb hem zevkli hemde sanildigi kadarda kolay değil haklisiniz ah bir zaman olsa neler yapilmazki ? :D

programi visual basic ile yapacam ama su an visual basic de sirf görsellik olusturma biliyorum code yazma bilmiyorum onu ielride yapacam artik simdilik baska bir arkadasa yazdirdcam

ilginiz icin tesekür ederim kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!