DS18S20 yi 18F452 nin 1 Mhz lik İç Osilatör Değeri ile Çalıştırma?

Başlatan davul42, 27 Mayıs 2011, 19:11:51

davul42

Device = 18F452
        WATCHDOG = OFF
        ALL_DIGITAL TRUE 

		LCD_DTPIN = PORTD.4	
		LCD_RSPIN = PORTD.2
		LCD_ENPIN = PORTD.3
		LCD_INTERFACE = 4     
		LCD_LINES = 2
        LCD_TYPE = 0
        
        Symbol DQ = PORTA.3   
        Dim Temp As Word      
        Dim D As Byte
        Dim C As Byte         
        Dim CPerD As Byte    
        Print $FE,$40,$06,$09,$09,$06,$00,$00,$00,$00
        Cls                  
   
     
        BASLA:    
        OWrite DQ, 1, [$CC, $44]   
        
        Repeat 
        DelayMS 25                 
        ORead DQ, 4, [C]           
        Until C <> 0             
        
        OWrite DQ, 1, [$CC, $BE]  
        
        ORead  DQ, 2,[Temp.LowByte,Temp.HighByte, C, C, C, C, C, CPerD] 
       

        Print At 1, 2, Dec (Temp>>1), ".", Dec (Temp.0 * 5),0,"C  DERECE "
        
        GoTo BASLA


http://www.upload.gen.tr/d.php/www/2rhtxo3s/452___LE_ISI___L____M__.rar.html

Arkadaşlar Forumda bir örnek uygulamayı kendi PİC' ime (18f452) göre uyarlayarak iç osilatörü 1 MHZ veyahut 20 MHZ şartıyla çalıştırıyorum fakat sabit bir değer geliyor. Datasheetini inceledim ama frekans hakkında bir şey göremedim ..bu konu ile ilgili bilgisi olan varmıı?

İisis ve proton+ dosyalarını ekledim..

davul42

Yok arkadaş yok datasheetinide bütün forumlarada baktım ..One wire haberleşmesinide inceledim.. Genellikle herşey aynı uygulamarın hepsinde formüller haberleşme komutları...Acaba one wire de haberleşme hızı sabit bir faktörmüdür..???
Çünkü adı üstünde tek bir hattan haberleşiyor Clk palsi filan yok.....
DS18S20 nin gönderdiği Temp Bilgisi 1 Mhz de çalışırken Sonsuz Word Değerini alıyor ve öyle kalıyor....

yamak

onewire haberleşmede komutlar arası bekleme değerli çok önemli çok az bir farklılıkta bile program düzgün çalışmayabilir.Yani işlemcinin hızına göre bekleme süresini ayarlamalısınız.Yani işlemci 1mhz de olsa 20 mhz de olsa bekleme süreleri aynı olmalıdır.Aşağıdaki linkteki dosyayı incelemenizi öneririm.
http://www.4shared.com/document/GyLJrprR/1-wire_full.html

davul42

hocam verdiğin link erişim engelli indiremiyorum...
Komutlar arası süreyi  0,006 sn den 6 saniyeye kadar denedim ama olmadı ..

yamak

Ama her komut arası süre aynı değil.Yani deneme yanılmayla yapılacak gibi değil.Ayrıca 0,006 saniye çok yük bi değer bekleme süreleri mikro saniyeler mertebesinde.Eğer o link çalışmamışşsa aşağıdaki linki deneyin.
coecsl.ece.illinois.edu/ge423/sensorprojects/1-wire_full.doc

ete

Siz pic'i 1 Mhz de çalıştırıyorsunuz ama program onu bilmiyor. O kendisini default çalışma hızı olan 4 Mhz'e göre zamanlıyor. Bu nedenle programın başına kaç Mhz de OSC frekansınız var bildirmeniz gerek.
Protonda galiba xtall komutu ile veriliyordu. BU şekilde verirseniz çalışacaktır.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Maxim

Soru: neden 1mhz?


ete hocam,
protonda 1mhz xtal tanımlaması yok


Crystal Frequency Declare.
12-bit core device XTAL values:
Declare Xtal 4, 8, 10, 12, 16, or 20.

Standard 14-bit core device XTAL values:
Declare Xtal 3, 4, 7, 8, 10, 12, 14, 16, 19, 20, 22, or 24.

Enhanced 14-bit core device XTAL values:
Declare Xtal 3, 4, 7, 8, 10, 12, 14, 16, 19, 20, 22, 24, 32 or 48.

18F device XTAL values:
Declare Xtal 3, 4, 7, 8, 10, 12, 14, 16, 19, 20, 22, 24, 25, 29, 32, 33, 40, 48, or 64.