proton da seri iletişim editörü

Başlatan emrah, 22 Aralık 2010, 15:05:30

emrah

arkadaşlar, pic basicte seri ileşim için açılan serial comminicatör sayfası proton editöründe yokmu ?  yada proton da  pc ile seri iletişim yapmak için herhangi başka editörler var mı ???

Maxim


emrah

proton derleyicisinde cıkmıyor !

maxim arkadasım senden baska yardm eden yok yada sen cok hızlısın, ilgin için teşekkür ederm.

pic basic editörun seri iletişim için editörü kullansam olurmu ?

hserout  ve hserin  konutlarını nasıl kullanabilirim?

birkaç yere baktım uyguladım ama olmadı

Hserout [ veri ]

yaptım  pic basık seri iltşm. editöründe gelen veriye baktım Y harfinin ortası çizgili şekilde aynı veri geliyor. veri içerisinde 23 sayısı vardı!


HSERİN komutunu nasıl kullanacamı bulamadım denedim ama olmadı
HSERİN [ veri ]
bu yeterli oluyormu ?
bunların yanına iletşim hızları falnda yazılmalımı ? baundrate flan ??

Maxim

bende IDE serial communicator diye bir program var PLUGIN lerin altında ama
o sonradanmı ekleniyor? programın kendi içindemi geliyor tam emin değilim.

diğer komutlar için süreekli helpe bakın, help çok iyi

' Receive values serially and timeout if no reception after 1 second (1000ms).
DEVICE 16F877
XTAL = 4

HSERIAL_BAUD = 9600        ' Set baud rate to 9600
HSERIAL_RCSTA = %10010000  ' Enable serial port and continuous receive
HSERIAL_TXSTA = %00100000  ' Enable transmit and asynchronous mode
HSERIAL_CLEAR = ON         ' Optionally clear the buffer before receiving

DIM VAR1 AS BYTE

Loop:
HSERIN , 1000 , Timeout , [VAR1] ' Receive a byte serially into VAR1
PRINT DEC VAR1 , " "      ' Display the byte received
GOTO Loop                 ' Loop forever
Timeout:
CLS
PRINT "TIMED OUT"         ' Display an error if HSERIN timed out
STOP

emrah

timeout yerine loop yazsak daha iiyi olmazmı ??

bunlar proton yardımda mı yazıyor ???

HSEROUT için ne kullanmalıyım pek i??

Maxim

Alıntı yapılan: emrahGS - 22 Aralık 2010, 16:06:24
timeout yerine loop yazsak daha iiyi olmazmı ??

bunlar proton yardımda mı yazıyor ???

HSEROUT için ne kullanmalıyım pek i??

timeout opsiyoneldir ,kullanmak zorunda değilsin .

ama gene aynı şeyi söylüyorum,
helpte yazıyor her komutun açıklaması, hemde örnekleri ile beraber, çok güzel .
hserin de yazıyor, hserout ta yazıyor ,cls de yazıyor, print te, if de yazıyor,case de, delayms de , gosub da, shin de, usbin de

Maxim

oldumu olmadımı ?
gene olmadıysa yazın

emrah

kodlarda problem yok fkat bir yazı gönderdigimde editöre o yazı gelmiyor farklı karekter geliyor, şimdi devreyi kontrol ediyorum hiç bir yanlıslık yok. acaba laptoptan usb yi 232 çeviripte bagladıgım içinmi olmuyo onu çözmeye çalııyorum

alayli

Gönderdiğin karakterden farklı bir şey okuyorsan; büyük ihtimalle hızlar uyuşmuyor. Ayrıca HSerin ve HSerout donanım tabanlı komutlardır. Programın başına ilgili registerlere ait deklarasyonlar girmen lazım. Hangi hızda kaç MHz ile çalışacağına göre bu deklarasyonlar değişir. Yazdığın kodları buraya aktar daha fazla yardımcı olalım...
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

emrah

Device 18F452
XTAL = 10
'ADCON1=$0F
ALL_DIGITAL true       ' anolog girişler iptal, hepsi dijital
@CONFIG_REQ
' @__CONFIG config1h, OSCS_OFF_1 & HSPLL_OSC_1
@__CONFIG config1h, OSCS_OFF_1 & HS_OSC_1
@__CONFIG config2l, BOR_ON_2 & BORV_45_2 & PWRT_ON_2
@__CONFIG config2h, WDT_OFF_2 & WDTPS_128_2
@__CONFIG config3h, CCP2MX_ON_3
@__CONFIG config4l, STVR_OFF_4 & LVP_OFF_4 & DEBUG_OFF_4
@__CONFIG config5l, CP0_ON_5 & CP1_ON_5 & CP2_ON_5 & CP3_ON_5
@__CONFIG config5h, CPB_ON_5
@__CONFIG config6h, WRTC_ON_6

HSERIAL_BAUD = 9600
HSERIAL_RCSTA = %10010000
HSERIAL_TXSTA = %00100100
HSERIAL_SPBRG=129
HSERIAL_CLEAR = On

dim veri as byte
veri = 100

menu:

HSEROUT [veri]

goto menu

emrah

#10
bu progrmda baundrate 9600 fakat bilgi gitmiyor ! ama baundrate 4800 yapınca bilgi gidiyor   bunun açıklaması ne olmalı ?

bir sorum daha olacak.  laptopta rs232 olmadıgı için usb to rs232 kullanıyorum, picten veri geldigini görüyorum fakat benim göderdigim veri gitmiyor, basit olark şöyle denedim gönderdigim sayıyı 2 ile çarpıp bana sonucu göndermeli.
masaustü pc de deniyorum çalısıyor ama laptopta olmuyor. tecrubesi olan varmı bu konuda ??

alayli

Alıntı yapılan: emrahGS - 23 Aralık 2010, 12:45:39
bu progrmda baundrate 9600 fakat bilgi gitmiyor ! ama baundrate 4800 yapınca bilgi gidiyor   bunun açıklaması ne olmalı ?

Verdiğin kodda
ALL_DIGITAL true       ' anolog girişler iptal, hepsi dijital


satırını

ALL_DIGITAL = true       ' anolog girişler iptal, hepsi dijital


olarak değiştir.

Ayrıca SPBRG değerini yanlış hesaplamışsın. 10 MHz için bu değer (129) 4800 baud için, bu durumda kod doğru çalışıyor.Eğer PIC18F452'yi 20MHz çalıştırırsan HSERIAL_SPBRG=129 değeri 9600 bauda denk gelir. Ama 10 MHz için;

HSERIAL_SPBRG=129


satırını da

HSERIAL_SPBRG=64


olarak değiştirirsen, 9600 baudda ancak düzgün çalışır...

Alıntı yapılan: emrahGS - 23 Aralık 2010, 12:45:39
bir sorum daha olacak.  laptopta rs232 olmadıgı için usb to rs232 kullanıyorum, picten veri geldigini görüyorum fakat benim göderdigim veri gitmiyor, basit olark şöyle denedim gönderdigim sayıyı 2 ile çarpıp bana sonucu göndermeli.
masaustü pc de deniyorum çalısıyor ama laptopta olmuyor. tecrubesi olan varmı bu konuda ??

Masaüstünde düzgün çalıştığına göre USB-RS232 çeviricinde bir sorun vardır. Bunların ceptelefonlarıyla uyumlu çalışan 3.3V TTL seviyeli olanları genelde bu soruna yol açıyor. 5V TTL uyumlu bir USB-RS232 çevirici kullandığından emin ol. Ya da imkanın varsa skopta lojik seviyeleri kontrol et...

Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

alayli

Ayrıca belirtmek isterim ki;

veri = 100

menu:

 HSEROUT [veri]

goto menu


şeklindeki yazılımda sürekli "d" karakterini göndermiş olursun karşıya eğer desimal olarak "100" göndermek istersen ve karşı tarafta text "100" görmek istersen "Dec" belirleyicisi eklemen lazım kodun bağına...

veri = 100

menu:

 HSEROUT [Dec veri]

goto menu


Ya da tek bayt asıl değeri göndermek ve karşıda görmek istiyorsan; bilgisayar tarafında ASCII değil Hex alım yapmalısın. Bu durumda karşıda (bilgisayar tarafında) "64" görürsün (desimal 100'ün hexadesimal karşılığı)
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

alayli

#13
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

emrah

açıklamalarınızdan dolayı çok teşekkür ederim çok faydalı oldu.