12f675 ile analog girişe bağlanan 10k lık bir potansiyometre

Başlatan . Kağan, 23 Kasım 2013, 18:17:32

. Kağan

  Şehir dışında olduğumdan size cevap yazamadım.

  Derleyici olarak MicroCodeStudio 4.0 kullanıyorum. Programcıya hex kodunu yüklemek içinde DIY K150 v150807 PICmicro Programmer diye bir yazılım kullanıyorum. Kullandığım programlayıcı ise


Ticari, birşey değil sadece öğrenmek için aklımdan geçirdiğim bir işi yapmaya çalıştım. Tabi ki kodu eklerim.

'****************************************************************
'*  İsim      : Program Adı.BAS                                  *
'*  Yazar     : [KAGANAYANOGLU]                                  *
'*  Not       : Copyright (c) 2004]                              *
'*            : Tüm Hakları Saklıdır                             *
'*  Tarih     : 25.11.2013                                       *
'*  Sürüm     : 1.001                                            *
'*  Notlar    : *                                                *
'****************************************************************
Define OSCCAL_1K 1  ' Calibrate internal oscillator 
DEFINE ADC_BITS 10     ' ADCIN resolution  (Bits)
DEFINE ADC_CLOCK 1     ' ADC clock source  (Fosc/8)
DEFINE ADC_SAMPLEUS 11 ' ADC sampling time (uSec)

@ __config _INTRC_OSC_NOCLKOUT&_WDT_OFF&_MCLRE_OFF&_CP_OFF

REM PORTLARIN TANIMLARI
LED Con 1     ' DEGISTIR, GPIO.1 to LED  UYARI CIKISI
'****************************************************************
REM DEGISKENLER
ham var WORD
sure var WORD
I VAR WORD 
'****************************************************************
REM AYAR ISLEMLERI
ANSEL = %00010001  ' Set all digital 
CMCON = 7          ' Analog comparators off 
TRISIO = %00001001   ' GIRIŞ VEYA CIKIS AYARLAMA
ADCON0 = %10000000
REM       GPI43210   ' Port sırası
WPU = 0
'****************************************************************                 
GPIO.0=0
GPIO.1=1
PAUSE 200

BASLA:
     adcin 0, ham            ' ADC KANALINI OKU
     Sure=((ham+1)*/4500)    ' SUREYI HESAPLA   0-3 DK
     GPIO.1=1                ' LEDI YAK 
     GPIO.2=1                ' BUZZER SES CIKAR   
     PAUSE 500               ' 0,5 sn. BEKLE
     GPIO.1=0                ' LEDI SONDUR
     GPIO.2=0                ' BUZZER SUS
     Gosub zaman             ' ZAMAN ETIKETINE GIT
     Goto basla

ZAMAN:
For I=0 to sure      ' "0" DAN sure'YE KADAR SAY
     Pause 10          ' SAYDIGIN SAYININ 10 ms KATI KADAR bekle
Next
Return


Belki .hex yaparken bir hata oluyordur. Hex koduda BURADA Kİ linkte.  https://dl.dropboxusercontent.com/u/39217325/PIC/POT_BEKLEME_SON.hex


kılıckaya

Kağan Bey, proteusta çalıştıramadım. Proteus dosyasını ve PBP dosyasını buradan yükler misiniz? Ben de Microcode 4 kullanıyorum. Ancak hex dosyasının içeriğine baktığımda farklı görünüyor.Bendeki hex kodunun içeriğini yüklüyorum.Teşekkürler.

. Kağan

PBP dosyası ekte.
hex dosyası neden farklı bilemiyorum. Proteusta simüle etmedim, dosyası da bu nedenle yok. Doğrudan breadboard üzerine kurdum.

PBP dosyası: https://dl.dropboxusercontent.com/u/39217325/POT_BEKLEME_SON.pbp

kılıckaya

Kağan Bey, microcode yine hata verdi. Hatayı verdiği satır şurası "@_config _INTRC_OSC_NOCLKOUT &_WDT_OFF&_MCLRE_OFF&_CP_OFF"
Burada en azından mikrodenetleyicinin hangisi olduğunu belirtmek için "@ DEVICE PIC12f675" gibi bir satır olması gerekmez miydi? Teşekkürler.

dnaci

Alıntı yapılan: kılıckaya - 02 Aralık 2013, 22:31:15
Kağan Bey, microcode yine hata verdi. Hatayı verdiği satır şurası "@_config _INTRC_OSC_NOCLKOUT &_WDT_OFF&_MCLRE_OFF&_CP_OFF"
Burada en azından mikrodenetleyicinin hangisi olduğunu belirtmek için "@ DEVICE PIC12f675" gibi bir satır olması gerekmez miydi? Teşekkürler.

bu satırı silin:

@_config _INTRC_OSC_NOCLKOUT &_WDT_OFF&_MCLRE_OFF&_CP_OFF

yerine aşağıdaki satırları ekleyip deneyin:

@ DEVICE pic12F675, WDT_ON
@ DEVICE pic12F675, PWRT_ON
@ DEVICE pic12F675, PROTECT_ON
@ DEVICE pic12F675, MCLR_OFF
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT

farklı mcs sürümü olabilir.

. Kağan

Alıntı yapılan: kılıckaya - 02 Aralık 2013, 22:31:15
Kağan Bey, microcode yine hata verdi. Hatayı verdiği satır şurası "@_config _INTRC_OSC_NOCLKOUT &_WDT_OFF&_MCLRE_OFF&_CP_OFF"
Burada en azından mikro denetleyicinin hangisi olduğunu belirtmek için "@ DEVICE PIC12f675" gibi bir satır olması gerekmez miydi? Teşekkürler.

Aynı konuya bende takılmıştım. ETE hocamın yazdığı  şu http://etepic.com/index.php/topic,300.0.html makaleyi okuyun. Sigorta ayarlarını anlarsınız. Ayrıca Micro Code Studio programında (sanırım diğerlerinde de var) hangi pic için derleme yapacağınızı seçtikten sonra derliyorsunuz.


Yukarıdaki gibi seçtikten sonra Compile (derle-Hex dosyası yap) tıklıyorsunuz ve dosyayı PBP olarak kaydettiğiniz yere hex dosyasını da atıyor.

. Kağan

Alıntı Yap1. Her şeyden önce programınızda baş taraflarda yazdığınız sigorta ayarları formatını MPASM 'ye göre değiştirmek gerekiyor.
Format'ın nasıl olduğunu  derleyici kalsöründe yar alan 16Fxxx.INC dosyasını açarak görebilirsiniz.
Örnekle açıklayalım. PBP kalsöründe yer alan 16F628A.INC dosyasını MCS içinde açıyorum. Alt kısıma doğru 1 adet config satırı görüyoruz. Bu satırda şunlar yazılı;
;        __config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF
öncelikle bu satırı başına bir ";" işareti koyarak kapatıyor ve dosyayı geri kayıt ediyoruz.

Sonra kapatılan satırdaki formatı programımızda sigorta ayarları formatı olarak kullanıyoruz.
Şöyle,
@ __config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF
@ işaretinden sonra bir boşluk verilecektir bu verilmez ise derleme hatalı sonuçlanır.
Bu satıra başka sigorta ayarlarıda eklenebilir. Yapılması gereken bir & işareti ekleyip sigorta ayarını _xxxx şeklinde eklemek olacaktır.

Bu şekilde hazırlanmış program artık MPASM de derlenebilecektir.  Bu sistemi hem 32 bit makinalar hemde zorunlu olarak 64 bit makinalar kullanabilirler.

ETE nin yazdığı makaleden sizin sorduğunuz bölüm bu. Ama tamamını okumanızı tavsiye ederim.

muyat

Konuyu bölmek istemedim.Burdan açıyım dedim..
Yaptıgım bir devrede potansın +5volta baglamam gereken uç ile şaseye baglamam gereken ucun yerlerini değiştirip bunun yerine


Sure=(ham+1) değil de Sure=(1024-ham) şeklinde de kullanabilir miyiz ete hocam.
Çünkü pcbde yer kalmadı.+5volta baglamam gereken uç şaseye daha yakın.Bu nedenle yer değiştirip potansında saat yönünde olan ayarını bozmamak için yazılımla bu şekilde tersleme yapabilir miyiz?

ete

"Yaptıgım bir devrede potansın +5volta baglamam gereken uç ile şaseye baglamam gereken ucun yerlerini değiştirip bunun yerine"
Potansiyometre uçlarını değiştirmiş olman pic açısında bir şey fakettirmeyecektir. Yalnızca ayar için pot un çevirlme yönü değişir.
Amacın yakın olan ucu kullanmak ise sorun yok bağla gitsin.  Zira bu değişiklik sonucu orta uç yine bir gerilim bölücü olarak çalışacak ve Pic pinine bir bölünmüş voltaj verecektir.

Böylece normal bağlantıda, potu  soldan sağa çevirirken artış sağlarken yeni bağlantıda sağdan sola doğru artış olacaktır.

Ete

muyat

Hocam konuyla alakalı oldugu için sormak istedim...Bu süre ayarlı devrede
ADCON0.7 = 1 almışım hep.
Bunun yerine
ADCON0=%10000000 yazmam neyi değiştirir.

ete

Birinde yalnızca registerin 7. ci bitini değiştirirsin. Default halinde diğer bitlerde 1 olan var ise onları değiştirmemiş olursun. Diğerinde ise registerin bütün bitlerini değiştiriyorsun. Olaya sırf 7. bit açısından bakarsan iki işlemde aynı sonucu veriyor.

Ete

Powered by EzPortal