S

hserin ve hserout komutları

Başlatan secretagent, 07 Mart 2012, 10:49:12

secretagent

sayın ete bey bu komutları kullanmadan önce DEFİNE parametresi ile yazmaclar aktif ediliyor;

DEFINE HSER_RCTSA 90h ' bu komutlar her pic için farklımıdır yani 90h değeri yazmacın bulunduğu yermidir.Yoksa her pic de aynımıdır?Mesela RCTSA registırı benim kullandığım pic de 18h bölgesinde 90h değerini 18h olarak değiştirmelimiyim *

ete

Tanımlanan değerler her pic için aynıdır. Ayrıca bu değerler haberleşme hızını çalışma frekansına göre ayarlamak içindir.
Dolayısıyla pic ile doğrudan alakalı değil tamamen haberleşme hızı ile alakalıdır. Dolayısıyla Donanımsal USART portu olan her pic için aynıdır bu değerler. Dikkat etmeniz gereken şey, her pic de donanımsal usrat portunun olmayışıdır. Mesela 16F628 de var olan bu port 16F84 de yoktur. Dolayısıyla bu portu olmayan piclerde bu sistem kullanılamaz.

Aslında 16f628 işlemcinin Data Sheet'ini açın ve RCSTA registerine bir bakın.  8 bitlik olan bu registerin her bir biti bir işe yaramaktadır. Dolayısıyla bitlerin alacağı değerleri yapacağınız işe göre belirleyip sonunda elde edilen 8 bitlik değeri bu registere yerleştirerek işinizi yapmış oluyorsunuz.

Ete

secretagent

teşekkur ederim.netteki örneklere baktığım zaman usart özelliği olan piclerde RCSTA ve TXSTA regıstırlarında herhangi bir değişiklik yapılmadan yazıyorlar programları sadece define ile belirtilen kısımları yazıyorlar programa?Ama ben datasheete baktığımda mesela veriyi gönderebilmek için TXSTA regıstırın 5. biti enable etme biti programda bu biti enable etmeden bilgiyi nasıl gönderecek acaba pic basic de kullanılan Hserout komutu ilgili biti aktif mi yapıyor kendi kendine bu konuyada açıklık getirirseniz müteşekkir olurum.Saygılarım la...

ete

Örnek bir tanımlama verirsem daha iyi anlarsın. Başkaları ne yapıyor bilemem ama ben bu tanımlamayı kullanıyorum.

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 25  ' 2400 Baud @ 4MHz, 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

Dikkat edersen TXSTA registerine $20 değeri (binary %00100000) değeri verilmiş oluyor. Bu ise 5. biti enable ediyor.

Ete

secretagent

#4
hımm şimdi anladım ben diğer bitlerde değişiklik yapmak istesem 20h değerinde değişiklik yapmam gerekecek ozaman.birde HSER_SPBREG 25 kullanım amacı nedir acaba?gördüğüm kadarı ile hata oranı ile alakalı birşey?birde bu OERR bitini otomatik olarak temizlemenin atıyorum iletişim sırasında hata geldiğinde bu bit otomatik temizlencek peki bu hatayı biz göremiyeceğiz herhangi bir veri kaybı söz konusu olabilir mi bu durumda.teşşuker ederim yardımlarınız için..

Mucit23

SPBRG registeri İletişim hızının ayarlandığı registerdir. Datasheet de Tablo halinde verilmiş.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

secretagent

#6
ben aşagıdaki komutları yazdım isis simulasyonda simule ettiğim zaman çok uzun süre sonra bilgi gidiyor.portc deki led 10sn sonra yanıyor bu geçikme simulasyondan mı kaynaklanıyor yoksa kodlarda bir hata mı var .yardımcı olabilirmisiniz..


alıcı taraf:

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 07.03.2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
include "modedefs.bas"
@ device pic16f690
@ device pic16f690,wdt_on
@ device pic16f690,pwrt_on
@ device pic16f690,mclr_off
@ device pic16f690,INTRC_OSC_NOCLKOUT

option_reg=%10000000
intcon=0
pie1=0
pie2=0
pir1=0
pir2=0
osccon=%1101000
cm1con0=0
cm2con0=0
cm2con1=0
adcon0=0
ansel=0
anselh=0
adcon1=0
ccp1con=0
pwm1con=0


trisb=255
portb=0
    trisc=0
    portc=0
al var byte


define HSER_RCSTA 90h
define HSER_TXSTA 20h
DEFINE HSER_SPBRG 5
DEFINE HSER_CLROERR 1

basla:

hserin [wait("ha"),al]

if al=1 then high portc.0


          end



verici taraf:

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 07.03.2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
include "modedefs.bas"
@ device pic16f690
@ device pic16f690,wdt_on
@ device pic16f690,pwrt_on
@ device pic16f690,mclr_off
@ device pic16f690,INTRC_OSC_NOCLKOUT

option_reg=%10000000
intcon=0
pie1=0
pie2=0
pir1=0
pir2=0
osccon=%1101000
cm1con0=0
cm2con0=0
cm2con1=0
adcon0=0
ansel=0
anselh=0
adcon1=0
ccp1con=0
pwm1con=0


trisb=0
portb=0

ver var byte


define HSER_RCSTA 90h
define HSER_TXSTA 20h
DEFINE HSER_SPBRG 5
DEFINE HSER_CLROERR 1


basla:

ver=1

hserout ["ha",ver]


end

secretagent

tmm k.bakmayın mesaj kirliliği oluyor ama sorun osccon registırını eksik yuklemişim 7 bit yuklemişim sorun ondamış düzeltince sorun çıkmadı..

Powered by EzPortal