16F777 configrasyon

Başlatan gokhangokcen, 23 Haziran 2011, 14:46:09

gokhangokcen

iyi günler arkadaşlar, bir kaç gündür üzerinde çalıştığım rgb devresi var, devrede karşılıklı haberleşme olduğu için arka planda renklerin düzgün bir şekilde çalışması için 3hpwm bulunan bu "16F777" pic'ini tercih ettim.Daha önce hiç bu pici kullanmadığım için ilk önce led yakıp söndürmek için uğraşıyorum fakat ledi yakıp söndüremedim.Pic içinde dahili kristal var,ben ise harici 4mHz kristal bağlayarak çalıştırmak istiyorum.Datasheetini incelediğimde osccon registeri (sayfa 42) ve sayfa 172 deki word tipindeki fuse bitlerini değiştirmem gerekiyor.fakat bu bitlere proton derleyicisi ile nasıl erişim yapacağımı bilmiyorum.Config komutu ile bir kaç deneme yaptım programı yazar iken fuse hatası veriyor x2008 kodlu.Kullandığım programlayıcı k128 diypack olarak 26v kullanıyorum ama bir türlü pici reelde çalıştırmayı beceremedim.Zaten isisin kutüphanesinde bu pic olmadığı için deneyemiyorumda daha önce bu pic ile çalışmış arkadaşlar vardır mutlaka yardımcı olursanız sevinirim şimdiden teşekkürler
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

ferit06

program files/PDS/includes/PPI/P16F777.ppi

dosyasını açın kullanmak istediğiniz konfigürasyona ait başlıkları alın ve

Programınızın başına
config 'den sonra yazın.

config XT_OSC, MCLR_ON, CP_OFF

gibi. ayrıca kullanacağınız kristal frekansını da

Xtal 4   ' gibi yazın...

Maxim

Proton icin kolay konfig eklenti programi var haberiniz yok galiba
Proton bolumunde en ustteki basliklara bakiniz

gokhangokcen

teşekkür ederim arkadaşlar devreyi çalıştırdım en azından led yakıp söndürebildim :) maxim hocam fuse config programı vardı bende ama sanırım eski sürüm imiş,içerisinde 777 yoktu yenisini indirdim forumdan kolay gelsin iyi çalışmalar..
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gokhangokcen

arkadaşlar merhabalar tekrardan bugün iş yerinde pwm denemelerini yapmaya başladım fakat bu seferde şöyle bir durumla karşılaştım amacım seri olarak gelen bilgiyi renklere pwm dutylerine uygulamak codum şu şekilde;

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 18.06.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Device 16F777
Xtal 4

Include "MODEDEFS.BAS" 

 @CONFIG_REQ
@__CONFIG _CONFIG1, CP_OFF & CCP2_RC1 & DEBUG_OFF & VBOR_2_0 & BOREN_1 & MCLR_ON & PWRTE_ON & WDT_OFF & HS_OSC 
@__CONFIG _CONFIG2, BORSEN_1 & IESO_ON & FCMEN_ON


    
Hserial_Baud = 2400 ' 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
Hserial_SPBRG= 25 
ADCON1 = 7

TRISA=%00000000
TRISB=%00000000
TRISC=%10000000
TRISD=%00000000
TRISE=%000

PORTA = 0
PORTB = 0
PORTC = 0
PORTD = 0
PORTE = 0 

INTCON =%11000000
'OPTION_REG =%01000000
PIE1.5 = 1
PIR1.5 = 0




On_Interrupt GoTo renk




  
CCP1CON = %00111100 
CCP2CON = %00111100
CCP3CON = %00111100

PR2 = $FF
T2CON = %00000110




                     


Dim r As Byte
Dim g As Byte
Dim b As Byte
Dim x As Word
Dim gelen  As Byte
Dim id As Byte
Dim id2 As Byte
Dim i As Byte
Dim r1 As Byte
Dim g1 As Byte
Dim b1 As Byte




r = 0
g = 0
b = 0
i = 0




PORTD.1 = 0

id = 02


basla:





CCPR1L = r1
CCPR2L = r1
CCPR3L = r1
DelayMS 1
Toggle PORTB.0










GoTo basla
Disable 
renk:

HSerIn [Dec3 gelen] 

Toggle PORTB.0
 
INTCON.7 = 1
PIR1.5 = 0
PIE1.5 = 1 
Resume
Enable



kod şu an çalışmıyor kesmeye girdiğinde kesmede takılıp kalıyor.kesme içerindeki intcon.7 yi aktif yapmamın sebebi proton arka planda ben kesmeyi kapatmadığım halde kapatıyor diğerleride flag biti ve seri kesme enable biti program şu an bord üzerinde denediğim kadarı ile portb.0 daki ledi yakıyor yanık kalıyor tahminimde kesme içerisinde çakılı kalıyor acaba sebebi ne olabilir? aynı programı 628 için derledim 628ler arası çok güzel bir şekilde haberleşiyor oradaki kod parçacığı işe şu şekilde;

Device 16F628A

@ CONFIG_REQ 
@ __config CP_ON & DATA_CP_ON & WDT_OFF & INTRC_OSC_NOCLKOUT & MCLRE_OFF & LVP_OFF & BODEN_OFF & PWRTE_ON

Xtal 4

TRISA=%00000000
TRISB=%00000010

PORTA = 0
PORTB = 0

CMCON = 7

INTCON =%11000000
'OPTION_REG =%01000000
PIE1.5 = 1
PIR1.5 = 0

CCP1_Pin PORTB.3


Include "MODEDEFS.BAS" 



 Hserial_Baud = 2400        ' Set baud rate to 9600
 Hserial_RCSTA = %10010000  ' Enable serial port and continuous receive
 Hserial_TXSTA = %00100100  ' Enable transmit and asynchronous mode 
 Hserial_Clear = On         ' Optionally clear the buffer before receiving
 Hserial_SPBRG= 25   
 
 
 Dim gelen As Byte
 Dim i As Byte
 Dim k As Byte
 
 On_Interrupt GoTo kesme
 PORTA.2 = 0
 
 
 basla:
 
HPWM 1,gelen,1000
DelayMS 10 
 
 
 GoTo basla
 
 
 
Disable 
kesme:

HSerIn [Dec3 gelen] 
HPWM 1,gelen,1000
Toggle PORTB.0
 
INTCON.7 = 1
PIR1.5 = 0
PIE1.5 = 1 
Resume
Enable



edit: bu arada gönderici pic deki kod ise şu şekilde;

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 16.06.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Device 16F628A

@ CONFIG_REQ 
@ __config CP_ON & DATA_CP_ON & WDT_OFF & INTRC_OSC_NOCLKOUT & MCLRE_OFF & LVP_OFF & BODEN_OFF & PWRTE_ON

Xtal 4

TRISA=%00000000
TRISB=%00000010

PORTA = 0
PORTB = 0

CMCON = 7

INTCON =%11000000
'OPTION_REG =%01000000
PIE1.5 = 1
PIR1.5 = 0


Include "MODEDEFS.BAS" 



 Hserial_Baud = 2400        ' Set baud rate to 9600
 Hserial_RCSTA = %10010000  ' Enable serial port and continuous receive
 Hserial_TXSTA = %00100100  ' Enable transmit and asynchronous mode 
 Hserial_Clear = On         ' Optionally clear the buffer before receiving
 Hserial_SPBRG= 25   



'On_Interrupt GoTo kesme

Dim dizi[7] As Byte
Dim i As Byte
Dim a As Byte
Dim id As Byte
Dim gelen As Byte
Dim gelen1 As Byte
Dim giden As Word
Dim giden1 As Byte
Dim satir As Byte
Dim id2 As Byte
Dim r As Word
Dim g As Word
Dim b As Word

Clear

id = 01
id2 = 02

CCP1_Pin PORTB.3

basla:



For satir = 0 To 254
GoSub gster
HPWM 1,satir,1000
DelayMS 3
Next

For satir = 254 To 0 Step -1
GoSub gster
HPWM 1,satir,1000
DelayMS 3
Next
 

     
GoTo basla



gster:

'PORTB = gelen1
Toggle PORTB.0
PORTA.2 = 1


HSerOut [Dec3 satir]
DelayMS 5
PORTA.2 = 0

Return

GoTo basla


Disable
kesme:

'Toggle PORTB.7

HSerIn [gelen,gelen1]

If gelen = id Then
dizi[i]= gelen1
i = i+1
EndIf 



PIR1.5 = 0

Resume
Enable


iyi günler iyi çalışmalar dilerim..
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

ferit06

kodu tam incelemedim ama configürasyonda HS_OSC kullanılmış bu  yüksek frekanslı kristaller için kullanılan bir ifade

4 MHz için ; XT_OSC kullanılır.

gokhangokcen

#6
ferit hocam denedim çalışmadı durum yine aynı

arkadaşlar yokmu başına böyle bir durum gelen  :(
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.