Picproje Elektronik Sitesi

DERLEYİCİLER => Hi-Tech => Konuyu başlatan: mcan - 23 Eylül 2006, 12:02:14

Başlık: c kodunun çevrim toplam süresini gösteren kolay yol varmÄ
Gönderen: mcan - 23 Eylül 2006, 12:02:14
if(x)y++;else y--;gibi yazdığımız kodun tamamı yada bir bölümünün donanım tarafından kaç çevrimde işlendiğini gösteren bir yazılım bir derleyici ve bunun gibi yararlı olabilecek bir şeyler varmı? örnek;
if (t1_overflow)//true=2,false=3                   //----|
  {t1_overflow=0;freqc_high++;}//6 çevrim         //    |
else                                               //    |-- 8 çevrim    
   {delay_cycles(5);}                             //----|
Başlık: c kodunun çevrim toplam süresini gösteren kolay yol varmı?
Gönderen: birkan - 23 Eylül 2006, 12:37:35
Hi-Tech C de bunu yapmanın en pratik yolu oluşan asm dosyasına bakarak hesaplamaktır. Direkt c kodlarına bakarak bunu yapma imkanı sanırım yoktur. if'e şart olarak yazdığın değişkenlerin tipine bağlı olarak işlem zamanı çok değişik olabilir.
Başlık: c kodunun çevrim toplam süresini gösteren kolay yol varmı?
Gönderen: mcan - 23 Eylül 2006, 13:23:06
Htec derleyici olması şart değil,herhangi bi 8bitlik pic için c derleyicisi için soruyorum aslında.Asm dosyasından bakmak için önce derlemek gerekiyor(sanırım) eğer derlemeden görülemiyorsa zaten işime pek yaramıyor ben c dilinde kodu yazarken yani programı daha oluştururken kaç çevrim süreceğini merak ediyorum,yanlış olmasın yorumlayıcı gibi bişey c kodunu okuyup adım adım makie diline çevrirecek ve kaç çevrim olduğunu söyleyecek gibi...
Başlık: c kodunun çevrim toplam süresini gösteren kolay yol varmı?
Gönderen: gsever - 23 Eylül 2006, 14:23:28
MPLAB'da projeyi MPLAB SIM ile debug ettiğinde "debug" menüsü altında "StopWatch" aracı var. Bununla kodun zamanlamasını ölçebilirsin.
Başlık: c kodunun çevrim toplam süresini gösteren kolay yol varmı?
Gönderen: Subzero - 25 Eylül 2006, 15:31:09
MPLAB bi çözüm olabilir bilemiyorum,
ama genelde yapılan şudur; C dosyasında bir asm blok yazılır.
mesela : _asm nop nop nop _endasm gibi...
bunun 5 cycle olduğu bilindiği için,
bu blok bir for döngüsü ile çevrilir, for değişkeni sayesinde istenen
gecikme yapılır.
Ama çok hassas istiyosan biraz daha uğraşmak lazım,
c kodu ile yazuılan kısmı da incelemek gerek.
Ama belki MPLABden bakılıyordur, ben de bi deneyeyim.