Picproje Elektronik Sitesi

DERLEYİCİLER => Hi-Tech => Konuyu başlatan: kubilaytuna - 08 Eylül 2012, 13:05:51

Başlık: __delay_us() ve DelayUs()
Gönderen: kubilaytuna - 08 Eylül 2012, 13:05:51
Arkadaşlar merhaba ben hitech c ile program yazmaya yeni başladım. İşin henüz çok acemisiyim ve takılığım bir konu var. İnternetteki örnekleri incelerken gecikme için __delay_us() komutunun kullanıldığını gördüm ve bikaç deneme yaptım oldukça doğru zamanlama yapıyor gibime geldi. Ama sitede yazılan örnekler ve biçok uygulamada hitech ile beraber gelen delay kütüphanesi kullanılıyor. Benim sormak istediğim çok düzgün çalışan __delay_us() varken zamanlama hatası yapan kütüphanedeki DelayUs() niçin kullanılıyor. Bu arada hitech c 9.80 pro kullanıyorum.
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: AsHeS - 08 Eylül 2012, 13:37:52
__delay_us()  komutu hi-tech için genel olarak kullanılan bir gecikme komutu değildir XC derleyicileri ile gelen standart bir fonksiyondur.Hi-Tech için ise başkasının yazdığı bir kütüphanedir büyük ihtimal.
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: kubilaytuna - 08 Eylül 2012, 14:12:58

#include <htc.h>
#define _XTAL_FREQ        32000000
void main(void)
{
    TRISB = 0;
    while(1)
{
    PORTB = 0;
   __delay_us(10);
    PORTB = 1;
   __delay_us(10);
    }
}

bu şekilde yazıyorum hitech c v9.80 ile derliyorum ve hatasız derleniyor isisde çalıştırdığımda zamanlama gerçekci birşekilde çalışıyor.
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: LukeSkywalker - 08 Eylül 2012, 16:26:21
Alıntı yapılan: AsHeS35 - 08 Eylül 2012, 13:37:52
__delay_us()  komutu hi-tech için genel olarak kullanılan bir gecikme komutu değildir XC derleyicileri ile gelen standart bir fonksiyondur.Hi-Tech için ise başkasının yazdığı bir kütüphanedir büyük ihtimal.
hi_tech de de kullanılıyor__delay_us()..
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: kubilaytuna - 08 Eylül 2012, 19:57:07
Ben hala anlamadım program yazarken hangisini kullanmak daha avantajlı ve doğru çalışıyor. Hiç _delay_us() kullanan yokmu?
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: LukeSkywalker - 08 Eylül 2012, 20:41:48
Manualde hangisi verilmisse onu kullanin...
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: ayhan_eee - 09 Eylül 2012, 01:58:08
__delay_us() daha kararlı çalışıyor.Hitech de mikro saniyelere inmek çok zor oluyordu.40kHz üretmeye çalışıtken DelayUs() kullandığımızda elde edememişken __delay_us() fonksiyonu,NOP ile aynı geçikmeyi verdi.
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: serhat1990 - 18 Eylül 2012, 18:50:06
Merhabalar __delay_us() fonksiyonunu içinde barındıran kütüphaneyi nereden buldunuz . İnceliyorum fakat bulamadım .
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: ayhan_eee - 19 Eylül 2012, 00:21:49
O fonksiyonu kullanabilmek için c içinde

#define _XTAL_FREQ 4000000

tanımlamasını yapmanız gerekiyor
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: serhat1990 - 19 Eylül 2012, 00:33:03
Ben kodum içerisinde bu tanımlamayı zaten yapıyorum . Yalnız fonksiyonun c ve h dosyası olmadan fonksiyonu yazmayı düşünmediğimden denemedim .
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: kubilaytuna - 19 Eylül 2012, 08:19:32
32 Mhz için  "#define _XTAL_FREQ        32000000" diye tanımlama yapıyorum sadece. Dahili bir komut galiba herhangi bir kütüphanesi yok.
Başlık: Ynt: __delay_us() ve DelayUs()
Gönderen: serhat1990 - 19 Eylül 2012, 09:41:02
Tamamdır ;) Fark şu ben 9.63 PRO kullanıyorum . Teşekkür ederim.