Serin komutu kullanımı sırasındaki gecikme.

Başlatan dyonizos, 28 Ekim 2011, 14:50:07

dyonizos

evet

'HSerIn 1000,main,[Wait("AZ"),Azimuth]

bu satır kalkınca devam edıyor program ama Serin olarak aldıgım datayı Hserin ile aynı formatta neden alamıyorum ?

OG

HSerIn 1000,main,[Wait("AZ"),Azimuth]

Burada 1000ms bekleme iş görmez, önce "AZ" bekler, gelmedikçe de bekler.

Diğer bir konu usart rx portuna LOW geliyorsa 1000ms süre kısıtlaması çalışmaz, isterse 10 saat beklesin 1000ms süresi başlamaz.

Ben bunu şöyle aşıyorum.

Önce data giriş ucunu boş başka bir porta daha bağlıyorum. diyelimki porta.0 olsun

'''' Önce H bekliyorum,
a_1:
if porta.0 = 0 then a_1

''' Üstteki döngüye de süre sınırlaması koymak istersen mesela

dim w_1 as word

w_1=0
a_1:
w_1 = w_1 + 1
if w_1 > 30000 then filana_git  ''' LOW olduğu sürece bu döngüde takılır kalır, bunu aşmak için.
if porta.0 = 0 then a_1

'' Data girişi H oldu, işte burada verdiğiniz 1000ms süre işlemi dikkate alır

dim hata as bit   ''' 1000ms süre sınırı aşıldımı onu görmek için
dim d_1 as byte  ' normal datayı almak için
a_2:
hata = 0
HSerIn 1000,sure_tasti,[d_1]  '' burada d_1 beklenen "AZ" nin ilk karakteri olmalı
if d_1 <> beklenen then sure_tasti  ''' beklenen gelmedi ise hata set edip dönsün ki işlem gerçekleşmediği anlaşılsın

HSerIn 1000,sure_tasti,[d_1]  '' burada d_1 beklenen "AZ" nin ikinci karakteri olmalı
if d_1 <> beklenen then sure_tasti

'' Şimdi beklenen karakterler geldi, esas datayı bekleriz
HSerIn 1000,sure_tasti,[d_1]

''' Buraya düştü ise yani sure_tasti ya gitmedi ise data alınmış demektir ve bu d_1 de saklıdır.



sure_tasti:
hata=1
goto nereye_gideceksen

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

pcb

Declare HSERIAL_SPBRG=25 demişsiniz ama işlemci  PLL ile mi çalışıyor , PLL aktif değilse USART bu hıza uyum sağlamaz

HSerial_Baud 9600
BRGH = 0 'ise
HSERIAL_SPBRG = 7

yalnış mı düşünüyorum ?

dyonizos

sayın OG
bu durumda da benım ılk mesajımda belırttıgım gecıkme sorunu karsıma cıkmıycakmı.

Maxim

Alıntı yapılan: pcb - 28 Ekim 2011, 21:35:34
Declare HSERIAL_SPBRG=25 demişsiniz ama işlemci  PLL ile mi çalışıyor , PLL aktif değilse USART bu hıza uyum sağlamaz

HSerial_Baud 9600
BRGH = 0 'ise
HSERIAL_SPBRG = 7

yalnış mı düşünüyorum ?

PLL ile bir bağlantısı varmıdır ?

mesela 4mhz internal osc seçtik ve x4 PLL yaptık = 16mhz oldu
şimdi usart için hangi osc kullanmamız lazım ?
4mhz - 16mhz ?

dyonizos

Kristalimi 20 mhz ve configde OSC = Hs yaptım yine bir değişiklik olmadı. Serin bu kadar kolayken Hserin calısmaması cok sinir bozucu.

t2

Proton hserinde bir sorun var.  Varsayılan haliyle çalışmıyor. galiba rcsta txtsas gibi registerları elle ayarlamak gerekiyor. 

dyonizos

Alıntı yapılan: t2 - 28 Ekim 2011, 22:32:35
Proton hserinde bir sorun var.  Varsayılan haliyle çalışmıyor. galiba rcsta txtsas gibi registerları elle ayarlamak gerekiyor.

ne gibi elle ayar. örnek verebilirmisiniz?

t2

Ayar içeriğini bilmiyorum sadece tahmin ettim. benzer bir sorunla günlerdir uğraştım. bir de bu kısma bakacağım. ya da yukarıda OG nin dediği şekilde yapmak gerek. ben ek pin kullanmak istemem bunun yerine usartı kapatıp rx pinini normal giriş  gibi okuyup 1 olduğunda usartı açıp okumayı deneyeceğim

pcb

Alıntı yapılan: Maxim - 28 Ekim 2011, 22:21:39
şimdi usart için hangi osc kullanmamız lazım ?
4mhz - 16mhz ?

PLL yaptığımız hızı kullanıyoruz USArt için, PLL yok ise 4Mhz

dyonizos

#25
Deli oldum. ne sinir bozucu bir şey bu Hserin ya. Nette buldugum nerdeyse her yolu denedım. nuh dıyor peygamber demıyor.


Maxim

og hocanın dediğini yaptınızmı ?
mutlaka bir hata var bu komutta

dyonizos

evet ama yıne aynı sonuc degısmıyor.
Peki bu işi Hserin yada Serin dışında çözmenin bir yolu yokmu?

dyonizos

Arkadaşlar hallettim. Problemim çok basitmiş aslında :)
hepinizden özürdilerim öncelikle. Benim kaçtığı gibi sizinde gözlerinizden kaçmış sanırım PORTC = 0 olarak yazmışım programda eskiden kalan tanımlama.
Giriş olmayan yerden duman çıkmaz misali :) data okuyamıyordum. C7 yi giriş yapınca data okunabiliyor.
herkese tekrar teşekkürler.

Maxim

Alıntı yapılan: Maxim - 28 Ekim 2011, 20:01:11
hserin için picin hangi ayaklarını kullandınız ?
portc.0 ise olmaz biliyorsunuz değilmi ?


18F252
portc.7 > RX
portc.6 > TX
uçlarıdır

birde kaç mhz osc var ?

ohoo ne yaptın sen hoca ya