16F1827 yeni nesil pic.

Başlatan F®T, 30 Aralık 2014, 19:21:59

Hattuşa

@ete hocam dediğiniz gibi yaptım alamadım hala çıkışı üstelik FVRCON registerinin 2,3 bitleri dac ile alakalı onlarıda 11 yaptım ama sonuc yok

ete

#46
Böyle yarım yamalak çalışmalara çok dikkat etmek gerekiyor. Zira DAC kısmının çalışabilmesi için;
PortA gerek Analog pinlerden gerekse komparatör pinlerinden arıdırılarak digital pin şeklinde çevrilmesi gerekiyor.
Bunun için;
ANSELA=0
ANSELB=0
CM1CON0=0
komutlarınıda programa eklemek gerek.
Bu aşamadan sonra sistem DAC olarak çalışabilir diye düşünüyorum.
Bunu bir denemek gerek. Bu arada DACCON0 değerinide aşağıdaki ile değiştirmekte yarar var gibi.
DACCON0=%10100000

Ancak mantığım birde şunu söylüyor. DAC işlemi bir analog işlemdir. O halde pin en azından Analog olarak ayarlanmalıdır diyorum. Bu nedenle ,
programa ANSELA.2=1 komutunu ilave etmekte yarar var.
Bu şekilde bir denersen ve sonucu söylersen memnun olurum.

Ete


Hattuşa

@ete hocam; dediğiniz gibi uyguladım gene çıkış alamadım. ayrıca bu tip uygulamalara ait hiç bir yerde örnek kodda bulamadım.  hiç kimse ihtiyac duymadı sanırım. isis şema ve denediğim bas dosyasını ilgilenen olursa diye ekliyorum. sanırım FT ustanın dediği yeni nesil işlemci benim gibi eski modellerin komutlarını kabul etmiyor  :D

er-da


Hattuşa

er-da arkadaşım ilgin için tşk ederim.
verdiğiniz linkteki conf. kopyala yapıştır yaptım. şimdi sorunun boyutu değişti.
şöyleki
dac çıkışında 0,04v a kadar değişiyordu, şimdi 4,96v tan 5,00v a kadar değişiyor. bi tutturamadım. ve dikkat ettiğim aslında farklı bişey yok.

F®T

#50
   Device = 16F1827

    Config1 FOSC_INTOSC,WDTE_OFF,PWRTE_ON,MCLRE_OFF,CP_ON,CPD_OFF,BOREN_OFF,CLKOUTEN_OFF,IESO_ON,FCMEN_OFF
    Config2 WRT_ALL,PLLEN_ON,STVREN_ON,LVP_OFF,BORV_19,LVP_OFF   

Declare Xtal=32 
OSCCON= %11110000   

TRISA=%00000110
PORTA=0
TRISB=%0000000
PORTB=0 
OPTION_REG=0
CM1CON0=0 
CM1CON1=0
ANSELA=%0000010
WPUA =0 '%00001011
CPSCON0.7=0
ADCON1.7=1
DACCON0=%10100000
FVRCON.7=0
SRCON0.7=0
Dim A As Word   
Cls
DelayMS 100

BaSlA:
Inc A
If A=31 Then A=0
DACCON1=A
DelayMS 300
GoTo BaSlA   
End



Arkadaşlar bu kod DAC çıkışında 0-5 volt ayarlı çıkış veren  bir koddur.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

er-da

pro-TR arkadaşım ekte çalışan kodlar ve proteus dosyası var .F.T arkadaş  da çalışan kod  vermiş  ama ben de dün gece sonuca ulaştım.ikisinden de ayararlanabilirsin kolay gelsin.. 

Hattuşa

günaydın arkadaşlar, yardımlarınız ve ilginiz için hepinize teşekkür ederim. vermiş olduğunuz kodları inceledim, bizim yaptığımız (yapamadığımız) eksiklik nerde diye ve farkettim ki "TRIS" yazmacında dac çıkışı pini "0" olarak değerlendirmişiz, mantık olarak çıkış pini ya  ;D

herneyse bişey daha öğrenmiş olduk sayenizde...

ete

Gerçekten enteresan bir durum.
Hiç bir yerde açıklaması olmamasına rağmen ilgli DCOUT pini giriş olarak atanması gerekiyormuş.
Zira en yalın şekli ile aşağıdaki register ayarları ile sistem çalışıyor. Tek yapılması gereken şey DACCON1 registerine 0-31 arası değer vermek.

PORTA=0:TRISA=%00000100
PORTB=0:TRISB=%00000000
ANSELA=%00000000
CM1CON0=0
DACCON0=%11100000


Başka bir enteresan şey ise DACCON1 registerinin yalnızca %xxx00000 ilk 5 biti aktif olmasına rağmen 32 değerinide kabul edip çıkıştan 5V verebilmesidir. Buda isis'in azizliği olsa gerek. Zira sayıyı artırdıkça çıkış voltajı artmakta dır. bence simulasyon hatası bu. Bu durumda maksimum çıkış voltajı olarak;
Vout=(5v)*(31/32)=4,84 V olacağını söyleyebiliriz.

Ete

Burak

Evet , 16F1827 için Errata olarak yayınlanmış ek bir dökümanda da bulamadım giriş olarak ayarlanması gerekliliğini . 16F1827 kataloğunu okuyorum 2 gündür ama birşey bulamadım bununla ilgili gerçekten ... Her neyse , sonuca ulaşabildiğimize sevindim , bende picbasic + proteus dosyalarını yükleyeyim , belki birilerinin işine yarar .

Burak.
Ω Gens Una Sumus Ω

ete

Bunun sebebinin donanımsal olarak DAC ladder (Direnç_net) sisteminin Voltaj kaynağı olarak seçilen VDD ye bağlanabilmesini sağlamak olduğunu düşünüyorum. Benzer konu kapasitif dokunma sisteminde de kullanılan bir mantık. Malum çok amaçlı aletlerde zaman zaman buna benzer uygulamalara rastlıyoruz.
Data sheet bu işlemci içinbiraz zayıf kalmış. Açıklamalar daha net olabilirdi. Pek çok data sheet de önceden gördüğüm madde madde açıklama sistemi bu işlemcide kullanılmamış. Bir ADC okuma işlemi bir eproma kayıt işlemi için detaylı bilgiler verilmiş iken bu konunun neden bu kadar zayıf atlandığını anlamış değilim. Belkide bizim anlayacağımız dilden anlatılmadığı için anlamıyoruz. Her neyse bende sounun kaynağını bulmuş olduğumuza sevindim doğrusu.

Ete

fatihbaysu

Hocalarım,

ETE hocamızın önerisiyle başlayan PicBasic Pro çalışmalarım yazdığım kodları hex e çevirmekte sorun yaşadığım için Proton Basic e geçtim küçük bir projeyle uğraşırken 16F1826 ve 16F1827 SMD kullandım, fakat benim yetersiz bilgimle içinden çıkamadığım bir sorunla karşılaştım aşağıda kodumun ilk ayar satırları mevcut bir bilgisi olan varsa yardımcı olabilirmi.
A.0, A.1, A3 portu ile adc okuma yapıyorum ( aslında pek de kararlı değil) A.2, A.4, A.6, A.7 portlarını çıkış tanımladım A.4 portunun  çıkışını 1 yaptığımda ( bir role kontrol etmek için ) analog girişler sıfır değerini okuyor sadece, ama diğer portların çıkışını  1 yaptığımda sorun olmuyor. Birde ilk ayarlamalarımda başka yanlışlıklar varmıdır. Selamlar,
Fatih Bayşu

'Device = 16F1827
Device = 16F1826

Config1 FOSC_INTOSC, WDTE_OFF, PWRTE_OFF, MCLRE_OFF, CP_ON, CPD_OFF, BOREN_OFF, CLKOUTEN_OFF, IESO_OFF, FCMEN_OFF
Config2 WRT_OFF, PLLEN_OFF, STVREN_OFF, BORV_25, LVP_OFF


OSCCON=%11111011            ' Set INTOSC to 16Mhz
Xtal=16                     ' Config compiler for 16Mhz

'CMCON=7           'ADC GİRİŞLERİ DİGİTAL
'OPTION_REG.7=1    'Dahili pull-up lar iptal edildi   
All_Digital 1 
        Declare   LCD_DTPin = PORTB.4   
   Declare   LCD_RSPin = PORTB.2
   Declare   LCD_ENPin = PORTB.3
   Declare   LCD_Interface = 4   ' 4-bit Interface
   Declare   LCD_Lines = 2
   Declare   LCD_Type = 0
   Declare   LCD_CommandUs = 2000
   Declare   LCD_DataUs = 50
 
Declare Adin_Res = 10               ' 10-bit
Declare Adin_Tad = FRC              ' RC OSC
Declare Adin_Stime = 50             ' 50us
 
  TRISA = %00101011
  TRISB = %00000011
  PORTA = 0
  PORTB = 0
  ADCON1=%10000100

Print  $FE,$40, 6,9,9,6,0,0,0,0                   '0 Derece
Print  $FE,$48,$0E,$11,$10,$10,$11,$0E,$04,$00 'Ç '1
'Print  $FE,$50, 3,7,4,4,4,7,19,0                  '2 tel
Print  $FE,$58,$0A,$00,$0E,$11,$11,$11,$0E,$00 'Ö '3
Print  $FE,$60,$0E,$00,$1F,$10,$13,$11,$1F,$00 'Ğ '4
Print  $FE,$68,$0E,$11,$10,$0E,$01,$15,$0E,$04 'Ş '5
Print  $FE,$70,$0A,$00,$11,$11,$11,$11,$0E,$00 'Ü '6
Print  $FE,$78, 6,8,8,22,9,9,14,0                 '7 imzam

Dim a As Byte
Dim sayac As Byte
Dim Dongu As Byte
Dim volt As Word
Dim tank As Word
Dim isi As Word
Dim devir As Word
Dim HAM As Word                   

Symbol S_BENZIN= PORTA.5    ' Dijital giriş
Symbol RPM = PORTB.1             ' Dijital giriş
Symbol bv = PORTA.2                ' Dijital çıkış
'Symbol ntc = PORTA.3              ' Anolog giriş
Symbol gv = PORTA.4                ' Dijital çıkış ( 1 olduğunda Analog girişler sadece sıfır okuyor )
Symbol S_GAZ = PORTB.0        ' Dijital giriş
Symbol bip = PORTA.6               ' Dijital çıkış
Symbol hled = PORTA.7             ' Dijital çıkış

er-da

#57
ANSELA registerini göremedim bunu ekle
ANSELA=%00001011

bir de bu komut" All_Digital 1 " yazmışsın  doğrusu" Declare All_Digital   =1" ozamanda  analog girişler kapanır  =0 olmalı

kodun tamamı yok sim. dosyası yok ..?

BİDİL

Merhaba;

16f1827 ile bir kaç deme yapmaya çalışıyorum çok teferruatlı bir entegreymiş.Elime aldığıma pişman oldum desem yeridir. Portb yi dijital çıkış yapmaya çalışıyorum ancak beceremedim.Datashhetinde b portuna ait özellikleri kapatmaya çalıştım ama bir şeyler eksik sanırım. Yardımcı olursanız sevinirim.

DEFINE OSC 8

ASM
  __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_ON & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
  __config _CONFIG2, _WRT_OFF & _PLLEN_OFF & _LVP_OFF & _STVREN_OFF
ENDASM

TRISA=0:PORTA=0
TRISB=0:PORTB=0

OSCCON=%00111010
;CCP1CON = %00111010    'PLL enabled, Internal RC-8MHz
INTCON.7=0
ADCON0 = %00000000      'select channel AN0, ADC off
ADCON1 = %00000000      'Internal Frc, Left justified, Ext. ref.
OPTION_REG.7=1 'PULL-UP LAR PASİF
ANSELA=0       'TÜM PORTA DİJİTAL PİN OLACAK
ANSELB=0       'TÜM PORTA DİJİTAL PİN OLACAK                     
CM1CON0=0      'KOMPARATORLER KAPATILACAK
CM2CON0=0      'KOMPARATORLER KAPATILACAK
;DACCON0.7=0
;RCSTA=0
;FVRCON.7=0
;SRCON0.7=0

SYMBOL  LED=PortB.0

BASLA:
HIGH LED
PAUSE 1000
LOW LED
PAUSE 1000
GOTO BASLA

F®T

#59
ne gibi bir sorun var pek sıkıntılı bir durum yok  gibi.
pullup iptal için WPUB=0 diyebilirsin.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal