12F1822 Uart kullanımı

Başlatan umitco, 25 Haziran 2016, 18:31:08

umitco

     Arkadaşlar merhaba 
 
     ETE Hocam bu işlemciyle uğraşıyorum 4 gündür.İnternette uart modülünün kullanımıyla ilgili Picbasic ile bir bilgi bulamadım. En yakın yine bu sitede DAC ile ilgili sizin verdiğiniz bir kod ile led yak söndür yapabildim

http://etepic.com/index.php?topic=1892.msg18794#msg18794

      Sizin kodlara uart ayarlarını ekledim ama nafile.


Include "modedefs.bas"
DEFINE OSC 4

;Bunalr internette EUSART için kodlar  ,bunlarıda denedim
;TXSTA   =   %00100100
;RCSTA   =   %10010000
;BAUDCON =   %00000000     
;SPBRG  =    25         

DEFINE HSER_RCSTA 90h     
DEFINE HSER_TXSTA 24h     
DEFINE HSER_BAUD 9600     
DEFINE HSER_SPBRG 25     
DEFINE HSER_CLROERR 1     


;OSCILLATOR
OSCCON=%01101000   '%01101000=4 mHZ
OPTION_REG=0

;COMPARATOR
CM1CON0=0                         
CM1CON1=0
ANSELA = 0                       

;PORT A
TRISA   =   %000100010 
ANSELA  =   0         
PORTA   =   255


WPUA =0
CPSCON0.7=0                     
ADCON1.7=0
DACCON0=%00100000               
FVRCON.7=0                     
SRCON0.7=0                       
;MDSRC=%10001010   
Pause 200

BASLA:

hserout [65,13]
toggle porta.2
pause 1000

GoTo basla



  Datashhet sayfa 283 de TX için hangi register ayarları gerekli hepsi var oradakilerin hepsini yaptım ama çalıştıramadım yada birşey atlıyorum belki göremiyorum. 2 tane TX ve RX bacakları var , A0 Eusart , A4 Usart için olarak anladım (ingilizce sıfır) , zaten işi karıştıranda bu Eusart. Eğer göndermeyi yapabilirsem sonra alıma geçeceğim hocam. Bu tür çok fonksiyonlu işlemciyle işim olmazdı ama 8 pin uartlı işlemci gerekti mecbur.
   Kodlar çalışıyor led yak sön yapıyor hocam yani osilatör ve diğer ayarlar tamam gibi. 8 , 16 Mhz ilede çalıştırdım.Birde eğer A4 TX ise nasıl harici OSC kullanacağız onuda anlamadım.

Burak

#1

#config
__CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
__CONFIG _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_19 & _LVP_OFF
#ENDCONFIG

DEFINE OSC 4
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

'OSCCON=%01110000    'OSC is @8 MHZ
OSCCON=%01101010    'OSC is @ 4 MHZ
PORTA=%00000000     :      TRISA=%000011
ADCON0=%00000000    :      ADCON1=%10110000
ANSELA=%00000
OPTION_REG=%00000000
WPUA=%111111 ' This register consists of "6" bits .

RCSTA = $90   ' Enable serial port & continuous receive
TXSTA = $20   ' Enable transmit, BRGH = 0
SPBRGL = 25    ' 9600 Baud @ 4MHz, 0,16%
SPBRGH = 0
BAUDCON.3 = 1 ' Enable 16 bit baudrate generator



RA0 = TX
RA1 = RX

Olarak kullanılacak .. Dolayısıyla ;

A portunun hem 0. hemde 1. bitlerinin giriş olarak ayarlanması gerek ama datasheet'te TX'e tekabül eden bacak için bu pinin giriş olarak ayarlanması gerektiğinden bahsetmemiş ... Ayrıca baudrate ayarı yapan kayıtçıların low byte'ını SPBRG olarak değil SPBRGL olarak ifade etmişler yani klasik bir EUSART gibi değil .. Verdiğim kodları bir dene bakalım ...

Burak
Ω Gens Una Sumus Ω

umitco

#2
 Burak hocam en azından anlamsızda olsa karakterler alabildim bu şekilde. A karakteri gönderiyorum her saniyede bir.

ÀÿÿøüşààüÀÀÿ>øàÿÿşşÿø2ÿÿ €üÿøÿ€À>Ò0Âüpøîğğÿ¿ø<øÿşüøÿÿşş@¿ÿÀğş

Burak

Demekki baudrate sıkıntısı var .. Unutmadan TRISA'nın 0. bitini 0 yapıpta dener misin birde ?

Burak
Ω Gens Una Sumus Ω

umitco

#4
Burak hocam verdiğiniz kodlarla şu an TX ve RX de çalışıyor ,  TRISA.0 biti 1 veya 0 olması hiçbirşeyi değiştirmedi.Hserout pini gönderme yaparken 0 , işi bitince tekrar eski ayarına getirmesinden dolayı olabilirmi ?

Hocam birde bu Eusart ile ilgili kısa bir bilgi verebilirmisiniz , kabaca baud hızını oto ayarlıyor diye biliyorum ama hepsi bumu.

Burak

#5
Çalışıyor derken ? Düzgün bi şekilde karakterleri alabilmeye başladı mı ? Evet Enhanced USART için sadece Otomatik Baud saptayabilme tarzında gelişmiş özellikler var ve ayrıca bufferları diğer USART'lara göre daha stabil..

Burak
Ω Gens Una Sumus Ω

umitco

Evet hocam göndermede ve almada hiçbir problem yok , karakterler bozuk gitmesinin nedeni ICSP kablosunu çıkartmayı unutmuşum TX pininden ondan yapıyormuş.

Yardımlarınız için çok teşekkürler Burak hocam.

Powered by EzPortal