PIC 16F688 iıle usart ornek arıyorum

Başlatan med, 21 Mart 2012, 14:03:49

med

    Merhaba
    Daha önceden 16f628 ile yaptıgım USART ile alıcı verıcı modullu devreyı 16F688 ıle çalıştıramadım.
   Kitaplarda ve internette 16F688 ile ilgili  örnek bulamadım.
   Usart ayarları kısmında sanırım hata yapıyorum.
   !6F688 de Usart ayarları yapılmıs alıcı ve verıcı programı  olan varmı arkadaşlar
   Veya Usart ayarlarını nasıl yapmak lazım ve Pıc 16f688 ıle ılgılı baska hangı ayarları yapmak lazım.
   Bu konuda yardımlarınızı beklıyorum
   Teşekkürler.
Önyargıları parçalamak ATOMU parçalamaktan daha zor. Einstein

camby

Piclerde USART yada EUSART oluyor. EUSART biraz daha geliştirilmişi fakat kullanım açısından çok bir farklı yok .

Temel olarak :

Baudcon
TXSTA
RCSTA
ve Baud hız ayarı yapmak yeterli.

Tabi ihtiyacin varsa da kesme ayarlamalari. PIE PIR dan yapabilirsin.

kudretuzuner

Merhaba
__Confıg ve INC ayarlarına baktınız mı?Sakıncası yok ise programın baş kısmını ve de TX veye RX ile ilgili yazılımı olsa daha kolay yardım alırsınız.
Amatör

drmp

kolay gelsin
bu kendi yaptığım porjenin kodları

            Device=16F688
Declare Xtal=8

Declare Hserial_Baud = 9600           ;9600 BAUD 8 N 1
Declare Hserial_RCSTA = $90
Declare Hserial_TXSTA = %00100000
Declare Hserial_Clear = On
Declare Reminders = On

PORTA=0
PORTC=0
TRISA=%11010111
TRISC=%11110011

ANSEL=%00001000
ADCON0=%10001100
ADCON1=%01101100
OSCCON=%01110111  'onemli
CMCON0=7


HSerOut ["AKIMSET = ",#AKIM_SET,"   AKIM = ",#AKIM,"  WTIME = ",#WAITTIME,"  S = ",#S,10,13]


med

Merhaba
Sanirim üsttekı program proton ıle yazılmış .Deneyeceğim.
Bu arada ınternal  osılator kullandım .4mhz seçtim. Bunun için hangi ayarları iç osilator için yapmam lazım.
Önyargıları parçalamak ATOMU parçalamaktan daha zor. Einstein

drmp

kodlar proton ile yazıldı

4 mhz seçim içim OSCCON=%01110110 yapmanız yeterlidir

kolay gelsin

med

#6
Alıntı yapılan: drmp - 25 Mart 2012, 19:02:12
kodlar proton ile yazıldı

4 mhz seçim içim OSCCON=%01110110 yapmanız yeterlidir

kolay gelsin

Merhaba
Yukaridaki OSCCON ayari 8Mhz gibi gozukuyor. 4 MHz olmasi icin  %01100110 olmasi gerekmiyor mu?

Önyargıları parçalamak ATOMU parçalamaktan daha zor. Einstein

med

Alıntı yapılan: drmp - 25 Mart 2012, 19:02:12
kodlar proton ile yazıldı

4 mhz seçim içim OSCCON=%01110110 yapmanız yeterlidir

kolay gelsin
Merhaba
Osccon ayari yukaridaki gibi yapilirsa 8Mhz olur sanirim
4MHz ayari icin OSCCON %01100110 olmasi gerekmiyor mu

Ayrica Pic Basic Pro ile 16F688 ile alici verici devresini calistirdim
fakat istikrarsizlik var
Acaba ayarlardan mi kaynakli
Asagidaki ayarlara bakabilirseniz sevinirim

Verici icin ayarlar
@ DEVICE pic16F688 \'islemci 16F688
@ DEVICE pic16F688, WDT_OFF \'Watch Dog timer kapali
@ DEVICE pic16F688, PWRT_ON \'Power on timer acik
@ DEVICE pic16F688, PROTECT_OFF \'Kod Protek kapali
@ DEVICE pic16F688, MCLR_OFF \'MCLR pini kullaniliyor.
@ DEVICE pic16F688, INTRC_OSC_NOCLKOUT  \'Dahili osilator kullanilacak
@ DEVICE pic16F688, BOD_OFF

DEFINE  OSC 4
OSCCON=%01100110
DEFINE HSER_RCSTA 90h \' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h \' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  \'9600 baud @ 4mhz
DEFINE HSER_CLROERR 1

CMCON0=7     
ADCON0=0
ADCON1=0
ANSEL=0
WPUA=0
.....
.....
....
.....
.....
.....
GONDER:
HSEROUT [REP$AA\\5,REP$00\\5,REP$FF\\5]\'uyandirma sinyali preambl
HSEROUT [REP$AA\\5,REP$00\\5,REP$FF\\5]\'uyandirma sinyali preambl
HSEROUT [\"N\",\"O\",\"T\",VER] 
HSEROUT [\"N\",\"O\",\"T\",VER]   
RETURN
END



Alici icin ise
@ DEVICE pic16F688 \'islemci 16F688
@ DEVICE pic16F688, WDT_OFF \'Watch Dog timer kapali
@ DEVICE pic16F688, PWRT_ON \'Power on timer acik
@ DEVICE pic16F688, PROTECT_OFF \'Kod Protek kapali
@ DEVICE pic16F688, MCLR_OFF \'MCLR pini kullaniliyor.
@ DEVICE pic16F688, INTRC_OSC_NOCLKOUT  \'Dahili osilator kullanilacak
@ DEVICE pic16F688, BOD_OFF
DEFINE  OSC 4
OSCCON=%01100110
DEFINE HSER_RCSTA 90h \' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h \' Enable transmit, BRGH = 0  24tu
DEFINE HSER_SPBRG 25  \'9600 baud @ 4mhz
DEFINE HSER_CLROERR 1

SYMBOL GIE  =INTCON.7   \'genel interruptlarý açiyor
SYMBOL PEIE =INTCON.6   \'peripheral interruptlarý açiyor
SYMBOL RCIE =PIE1.5     \'USART Recive interrupt enable bit
SYMBOL RCIF =PIR1.5     \'USART ALICI TAMPONU DOLU 1
ON INTERRUPT GOTO KESME
CMCON0=7     
ADCON0=0
ADCON1=0
ANSEL=0
WPUA=0

RCIE=1
PEIE=1
GIE=1
.....
.....
.....
.....
DISABLE
KESME:
GIE=0 \'tüm interruptlari kapat yani INTCON.7=0
HSERIN 1,CIK,[WAIT(\"NOT\"),AL ]
TEMP=RCREG
US=1
CIK:
RCIF=0   
GIE=1      \'Yani INTCON.7=1 kesmeleri açtik.
RESUME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
ENABLE
END
Önyargıları parçalamak ATOMU parçalamaktan daha zor. Einstein

med

Merhaba
16f688 ile tmr0 kesmesi kullanmaya calistim.
Fakat yanlis calisti.
Kesmeyi aktiflestirmedigim halde surekli kesmeye gidiyor ve zaman sonunda islem yapiyor.
Bunu surekli yapiyor
Bunun nasil oldugunu anlayamadim.
Kendi kendine surekli Tmr0 kesmesine gidiyor program
Bunu nasil cozebilirim.

Tesekkurler
Yardimlarinizi bekliyorum
Önyargıları parçalamak ATOMU parçalamaktan daha zor. Einstein