Picproje Elektronik Sitesi

DERLEYİCİLER => Hi-Tech => Konuyu başlatan: NaMcHo - 09 Ağustos 2010, 14:28:53

Başlık: Hi-Tech gecikme sorunu /Düzeldi.(Mplab ile)
Gönderen: NaMcHo - 09 Ağustos 2010, 14:28:53
for(y=0;y<8;y++)
{
PORTB=led;
DelayMs(50);
led=led<<1;
}

Burda 8 tane ledi yakıp sondurcek her biri arası 50 ms olması lazım normalde ama 8. lede gelmesi 1.75 sn suruyo normalde
8.50=400 milisaniye oda 0.4 saniye olmalı,sorunu nasıl halledebilirim?
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: sigmoid - 09 Ağustos 2010, 15:10:56
delay.h dosyasını açıp

#define   XTAL_FREQ  ifadesine kullandığın kristal frekansını girmen gerekiyor. normalde burada yazan ifade senin kristal frekansından daha büyük olduğu için geçikme normalden daha uzun sürüyor.

kolay gelsin.
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 09 Ağustos 2010, 15:42:49
Alıntı yapılan: abdullaho - 09 Ağustos 2010, 15:10:56
delay.h dosyasını açıp

#define   XTAL_FREQ  ifadesine kullandığın kristal frekansını girmen gerekiyor. normalde burada yazan ifade senin kristal frekansından daha büyük olduğu için geçikme normalden daha uzun sürüyor.

kolay gelsin.

Isis,hex,C  dosyaları : http://hotfile.com/dl/60941472/f539f3f/Dnm1.rar.html

delay.h daki kod:
/*
* Delay functions for HI-TECH C on the PIC18
*
* Functions available:
* DelayUs(x) Delay specified number of microseconds
* DelayMs(x) Delay specified number of milliseconds
*
* Note that there are range limits:
* - on small values of x (i.e. x<10), the delay becomes less
* accurate. DelayUs is accurate with xtal frequencies in the
* range of 4-16MHZ, where x must not exceed 255.
* For xtal frequencies > 16MHz the valid range for DelayUs
* is even smaller - hence affecting DelayMs.
* To use DelayUs it is only necessary to include this file.
* To use DelayMs you must include delay.c in your project.
*
* Set the crystal frequency in the CPP predefined symbols list
* on the PICC-18 commmand line, e.g.
* picc18 -DXTAL_FREQ=4MHZ
*
* or
* picc18 -DXTAL_FREQ=100KHZ
*
* Note that this is the crystal frequency, the CPU clock is
* divided by 4.
*
* MAKE SURE this code is compiled with full optimization!!!
*/

#define MHZ *1

#ifndef XTAL_FREQ
#define XTAL_FREQ 4MHZ /* Crystal frequency in MHz */
#endif

#if XTAL_FREQ < 8MHZ
#define uS_CNT 238 /* 4x to make 1 mSec */
#endif

#if XTAL_FREQ == 8MHZ
#define uS_CNT  244
#endif

#if XTAL_FREQ > 8MHZ
#define uS_CNT  246
#endif

#define FREQ_MULT (XTAL_FREQ)/(4MHZ)

#define DelayUs(x) { unsigned char _dcnt; \
  if(x>=4) _dcnt=(x*(FREQ_MULT)/2); \
  else _dcnt=1; \
  while(--_dcnt > 0) \
{\
asm("nop");\
asm("nop");\
continue; }\
}

extern void DelayMs(unsigned char);




*   Delay functions for HI-TECH C on the PIC18 Su en üstteki yazı dikkatimi cekti 18 serisi icin olan delay.h dosyasımı bu aceba?

Birde bende 16f serisi icin su kısım var : C:\Program Files (x86)\HI-TECH Software\PICC\9.70\samples\delay
Burda ise main diye bi C source file var ne yapmam gerekiyor bu delay olayını duzeltmek icin?

Bir şey daha sormak istiyorum Protues Isis de denerken Debug özelligi calısmıyo ekran goruntusu ekliyorum kodları goremiyorum.
http://hotfile.com/dl/60940809/0757b0c/Adsz.jpg.html
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: JKramer - 09 Ağustos 2010, 15:55:12
.cof uzantılı dosyayı ekliyorsunuz değil mi? Bir de kaynak kod, .cof, isis dosyaları,vs. hepsi aynı klasörde mi?
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 09 Ağustos 2010, 16:00:13
Alıntı yapılan: JKramer - 09 Ağustos 2010, 15:55:12
.cof uzantılı dosyayı ekliyorsunuz değil mi? Bir de kaynak kod, .cof, isis dosyaları,vs. hepsi aynı klasörde mi?

Evet 2 tane dosya var : DNM1.cof ve DNM1.hex diye  cof olanı atıyorum Isis e ama debug calısmıyo CCS de bole sorunlar yasamıyodum... :)
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: JKramer - 09 Ağustos 2010, 16:05:15
Muhtemelen klasörle ilgili bir sorundur: https://www.picproje.org/index.php/topic,28759.msg196347.html#msg196347
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 09 Ağustos 2010, 16:26:47
Alıntı yapılan: JKramer - 09 Ağustos 2010, 16:05:15
Muhtemelen klasörle ilgili bir sorundur: https://www.picproje.org/index.php/topic,28759.msg196347.html#msg196347
50cal Kullanıcısının dedigini yaptım,derleme sonucudan olusan tum dosyaları bi dosyada birlestirip debug ı acmayı denedim bu seferde sanırım assmebly kod tarzında birseyler cıktı ... benim yazdıgım kodlarla alakası olmayan seyler.



Bu arada gecikme olayınıda halen düzeltemedim
:-\
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: JKramer - 09 Ağustos 2010, 16:41:39
[IMG]http://img833.imageshack.us/img833/4351/clipboard2.th.png[/img] (http://img833.imageshack.us/i/clipboard2.png/)
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 09 Ağustos 2010, 16:43:25
Alıntı yapılan: JKramer - 09 Ağustos 2010, 16:41:39
[IMG]http://img833.imageshack.us/img833/4351/clipboard2.th.png[/img] (http://img833.imageshack.us/i/clipboard2.png/)
Evet düzeldi :)
Teşekkür ettim.


-ilk sorum olan,gecikme olayını halen düzeltebilmiş değilim.
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 10 Ağustos 2010, 19:45:09
HI-TECH PICC STD Sanırım bana bu lazım,  Bunun icin söyle bi link buldum fakat download edemedim burdan : http://www.pickled-onion.com/download/93373/hi%20tech_picc_std_9%206.html


Bende sunlar var :         
HI-TECH PICC PRO 9.70  HI-TECH PIC18-pro-9.64.5502       
HI-TECH for dsPIC-PIC24 v9.60.3.4951                                           
HCPIC32-pro-9.60PL1.3453_release_candidate                             
HCPSOC-pro-9.61PL5.3451_release_candidate         
HI-TECH ARM-C v9.12 + HI-TIDE_2.12PL3       
HI-TECH C for 8051 9.01 + HI-TIDE_2.13         
HI-TECH MSP430-C         
HI-TECH for HOLTEK C         
HI-TECH Z80 7.80PL2 C Compiler         
HI-TECH for XA v7.73PL1   


Ayrıca bidaha belirteyim benim Hi-Tech Software klasörü altında olan dosyaları :
-DSPICC , HI-TIDE , PICC , PICC-18 , PICC32

Burdaki lerde sadece PICC-18 icersindeki : C:\Program Files (x86)\HI-TECH Software\PICC-18\PRO\9.64\samples\std\delay    delay klasöründe 2 tane dosya var delay.h ve delay.c

C:\Program Files (x86)\HI-TECH Software\PICC\9.70\samples\delay           Burda 1 tane main C Source file var.
C:\Program Files (x86)\HI-TECH Software\DSPICC\STD\9.60\samples\delay        Burda ise 1 tane delay C source file var.
C:\Program Files (x86)\HI-TECH Software\PICC32\PRO\9.60\samples\plibs         Burda ise plibs klasörü altında bir sürü C Source file var.

Ben suan PICC-18 altındaki delay h ve c dosyalarını kullanıyorum ancak 4 sn de bitmesi gereken bir iş 20 sn de bitiyor.(Isis de yapmış oldugum ölcüm.)
Sorunu düzeltmem için ne yapmalıyım denemediğim kombinasyon kalmadı :)

Ayrıca Pic C Pro 9.71a yı yuklememe rağmen Yeni proje oluşturduğumda şu seçenekler geliyor :

-HI-TECH C PRO for the PIC32(v9.60PL2)
-HI-TECH C for dsPIC/PIC24 (9_60PL3)
-HI-TECH C PRO for PIC10/12/16 MCU (9.70)
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: fatihinanc - 10 Ağustos 2010, 20:06:46
Eğer dahili osilatör kullanıyorsanız. PIC in dahili osilatörü default olarak 4MHz den daha düşük bir değere ayarlanmış olabilir(2MHz,1MHz,31KHz).

OSCCON kaydedicisi ile bu ayarlanabiliyor.

(http://dc248.4shared.com/img/357833190/9692a12/s7/0.939824958414352/OSCCON.JPG)
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 10 Ağustos 2010, 21:20:16
@fatihinanc
Harici kullanıyorum. OSC1CLKIN ve OSC2CLKOUT a baglıyorum osilatörümü 4MHz lik ve kondansatörlerde 22pF'lık.

Dediğiniz gibi dahili kullanıcaksamda şöyle bir komut yazmam gerekiyor değilmi ayarı yapmak icin
4Mhz icin OSCCON=0b01100000;
Birde dahili osilatör kullanıp 4Mhz olarak ayarlamakla Harici kullanıp 4Mhz kullanmak arasında fark varmı?
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: fatihinanc - 11 Ağustos 2010, 00:12:57
Dahili osilatörün hassas zamanlama uygulamalarda tercih edilmemesi gerektiğini duymuştum.
Harici 4Mhz daha sağlıklı oluyor yani.
Ama normal zamanlama gerektirmeyen uygulamalarda gözle görülür bir fark yok.

Evet OSCCON kaydedicisini öyle ayarlayacağınız gibi Hi-Tech de ilgili kaydedicinin bitlerine verilen isimleri kullanarak da bu işleri yapabilirsiniz. Mesela ;

IRCF2=1;
IRCF1=1;
IRCF0=0; //Zaten default olarak 0 dır.


Bu arada kullandığınız mikrodenetleyici nedir?
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 11 Ağustos 2010, 00:23:04
Alıntı yapılan: fatihinanc - 11 Ağustos 2010, 00:12:57
Dahili osilatörün hassas zamanlama uygulamalarda tercih edilmemesi gerektiğini duymuştum.
Harici 4Mhz daha sağlıklı oluyor yani.
Ama normal zamanlama gerektirmeyen uygulamalarda gözle görülür bir fark yok.

Evet OSCCON kaydedicisini öyle ayarlayacağınız gibi Hi-Tech de ilgili kaydedicinin bitlerine verilen isimleri kullanarak da bu işleri yapabilirsiniz. Mesela ;

IRCF2=1;
IRCF1=1;
IRCF0=0; //Zaten default olarak 0 dır.


Bu arada kullandığınız mikrodenetleyici nedir?

16f877 ile yapıyorum pratik aşamasındayım henüz,
Benim sorun ise ilk bastata belirttiğim gibi 4sn de olması gereken işlem 20 sn de oluyor.
DelayMs(1000); yazıyorum ama 4 sn oluyor bu gecikme.
Suanda C:\Program Files (x86)\HI-TECH Software\PICC-18\PRO\9.64\samples\std\delay  burdaki delay fonksiyonlarını kullanıyorum,cunki baska bi yerde delay C Source File ve Header dosyası hic bi yerde yok
sadece bazılarında C source file var
mesela benim 16f877 ile calıstıgım icin surdaki C:\Program Files (x86)\HI-TECH Software\PICC\9.70\samples\delay  delay header ve C dosyalarını almam gerekiyor ama burda sadece bir tane main dosyası var icinde ise su var

#include <htc.h>   // Required to interface with delay routines

#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4000000
#endif

/** demonstration of various built-in delay mechanisms */
void main(void){
   while(1){
      NOP();
      _delay(1000);      // delay for 1000 instruction cycles
      CLRWDT();
      __delay_us(400);   // delay for 400 microseconds
      CLRWDT();
      __delay_ms(2);      // delay for 2 milliseconds
      CLRWDT();
   }
}


Bunu ekleyipdede calıstırmayı denemistim ama derlemede hata veriyordu.
Bende eksik dosyalar var sanırım 16 serisi icin delay dosyalarım yok.
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: fatihinanc - 11 Ağustos 2010, 00:46:40
bir de şunu dene ;
main.h dosyanız bu olsun.


#include <htc.h>

#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4000000
#endif

void main()
{
TRISB=0X00;
PORTB=0X00;
ADCON1=0X07;
while(1)
{
__delay_ms(250);
RB0=~RB0;
__delay_ms(250);
}
}

Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 11 Ağustos 2010, 01:29:49
@fatihinanc yolladıgınız kodu delay.h diye kaydettim bendeki main.c yide delay.c diye kaydetip ekledim
2 tane hata aldım

(140) can't open intermediate file "main.p1": No such file or directory       Ders-1   line 0   1281479199169   160

(718) incompatible intermediate code version; should be 3.2       Ders-1   line 0   1281479199169   161

Sizde pic/10/12/16 icin gerekli delay.h ve delay.c dosyaları varsa onları denesem,eger Hi-tech kullanıyosanız,bu arada derleyici olarak hi-tide kullanıyorum
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: fatihinanc - 11 Ağustos 2010, 01:34:36
yok. hiçbir delay dosyası eklememeniz lazım. __delay için kütüphane gerekmiyor.

benim eklediğim kodu. main.c diye kaydedip öylece derleyin.

bu arada derleyici 9.70 mi 9.71a mı?
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 11 Ağustos 2010, 01:42:37
Alıntı yapılan: fatihinanc - 11 Ağustos 2010, 01:34:36
yok. hiçbir delay dosyası eklememeniz lazım. __delay için kütüphane gerekmiyor.

benim eklediğim kodu. main.c diye kaydedip öylece derleyin.

bu arada derleyici 9.70 mi 9.71a mı?

Birkac ekran goruntusu yolluyayım : http://hotfile.com/dl/61266920/da854bd/Desktop.rar.html

9.71a yuklu olmasına ragmen duzenleyicide proje olustururken gozukmuyor 9.70 var.
ve suanda FxDev in yazmış oldugu kitaba bakıyorum ondada aynen şöyle diyor :
Gecikme kütüphanemiz olan delay.h ve
delay.c dosyalarını Program Files\HI-TECH Software\PICC\STD\9.60\samples\delay
klasöründen alıp (siz derleyiciyi nereye kurduysanız oradan alınız) projemizi oluşturduğumuz
klasörün içine atıyoruz.

Bende zaten şu : STD\9.60\samples\delay  kısım yok
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: fatihinanc - 11 Ağustos 2010, 02:04:35
Hi-Tech firmasını Microchip satın aldıktan sonraki sürümleri Hi-Tide görmüyor.
Artık Hi-Tech firması da Hi-Tide yi geliştirmeyi bıraktı sanırım.
Şu anda tamamen MPLAB a dönmüş durumdalar. 9.71a MPLABda çalışıyor.
Az önce Hi-Tide de bir proje oluşturup deneme yaptım. Çalışıyor.(Derleyici = 9.70)

hi-tide de deneme adında yeni bir proje oluşturdum.
kodlar ve delay kütüphanesi.
http://www.4shared.com/file/NaeNkvun/Desktop.html
(http://www.4shared.com/file/NaeNkvun/Desktop.html)
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 11 Ağustos 2010, 02:19:09
#include <htc.h>
#include "delay.h"

void main()
{
TRISB=0;
PORTB=0;

while(1)
{
DelayMs(250);
DelayMs(250);
RB0=1;
DelayMs(250);
DelayMs(250);
RB0=0;
}
}

Evet calısıyor ama sürede sorun var hala kat sayı dusmus olsada
su ornekde tam led sonunce 1sn gecmis oluyor Isis de simdi denedim bu islemi 2.5 snde yapıyor.
Rica etsem bir deneyebilirmisiniz.

En azından birazda olsa gelişme var oncden 4kat fazlasını alıyodu delayın simdi ise 2.5 kata kadar indi:)
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: fatihinanc - 11 Ağustos 2010, 02:27:15
yok kodda bir sıkıntı yok 1snde yaniyor.
isisde picin üzerine çift tıklayıp proccesor clock frequency i 4mhz yaptınız mı?
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 11 Ağustos 2010, 02:31:23
Alıntı yapılan: fatihinanc - 11 Ağustos 2010, 02:27:15
yok kodda bir sıkıntı yok 1snde yaniyor.
isisde picin üzerine çift tıklayıp proccesor clock frequency i 4mhz yaptınız mı?

Evet crystal de 4MHz de 16f877 de 4MHz de sizle aynı delay dosyasını kullanıyoruz neden bole birsey oluyorki anlam veremedim.
bende 64 bit win7 var onunda etkisi varmı aceba belki proteus duzgun calısmıyodur.
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: fatihinanc - 11 Ağustos 2010, 02:39:14
bende de 64 win7 var ama bir sıkıntı yok.
proteus 7.6 sp4
hi-tech 9.71

aynı kodu bir de şöyle deneyin.


#include <htc.h>
#include "delay.h"

#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4000000
#endif

void main()
{
   TRISB=0;
   PORTB=0;
   
   while(1)
   {
      __delay_ms(250);
      __delay_ms(250);
      RB0=1;
      __delay_ms(250);
      __delay_ms(250);
      RB0=0;
   }
}
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 11 Ağustos 2010, 02:43:18
Bunu aynen kopyaladım şöyle bir hata verdi : (800) undefined symbol "__delay"    NMC/Release   NMC.as   line 712   1281483605364   177
Bendeki ise 7.7 SP2 var,ki zaten su en son gonderdiginiz deilde normal haliylede deneyince sizde duzgun calısıyosa bendede duzgun calısmalı,benim protuse 7.5 olsa dicemki proteus dan ama birde üst verison benimki.

Daha fazla yormiyim sizi birde yarın mplab indirerek deniyim olmadı CCS ye devam :)
Hi-Tech gecmemin tek sebebi Kesme olaylarının uygulamasının daha zevkli gelmesiydi zaten ama kısmet değilmis:)

Bu arada CCS ilede aynı örneği yaptım CCS ile yaptıgımda bir sorun olmadı.
1 Sn de ledi yakıp söndürdü
Bence dedigim gibi bende birseyler eksik Hi-tech dosyalarından,Birde daha sonra mplab indirip hi-tech i mplab e entegre edip birde oyle deniyeyim.
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: fatihinanc - 11 Ağustos 2010, 02:54:05
o zaman son çare :)
hex kodunu ve isis dosyasını gönderiyorum.
http://www.4shared.com/file/w2kIzfdr/deneme.html (http://www.4shared.com/file/w2kIzfdr/deneme.html)
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 11 Ağustos 2010, 02:59:09
Alıntı yapılan: fatihinanc - 11 Ağustos 2010, 02:54:05
o zaman son çare :)
hex kodunu ve isis dosyasını gönderiyorum.
http://www.4shared.com/file/w2kIzfdr/deneme.html (http://www.4shared.com/file/w2kIzfdr/deneme.html)

Evet bu sorunsuz calıstı ama sizinkinde harici osilatör yok? birde Crystal baglayıpda deneyebilirmisiniz vaktiniz varsa,baya meşgül ettim sizide
Teşekkür ederim zaman ayırdığınız için.

Buda benim Isis dosyam http://hotfile.com/dl/61277574/0d2a05f/d2.DSN.html
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: fatihinanc - 11 Ağustos 2010, 03:06:58
Rica ederim.

Evet yine çalıştı.Harici kristalim de 4Mhz.
Garanti olsun diye şunu da ekledim(mainden önce)

__CONFIG(XT);

MPLAB sız hi-tech biraz zor gibi. çünkü ne olursa olsun Microchip destek vermediği sürece
en yeni versiyonunuz 9.70.
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: NaMcHo - 11 Ağustos 2010, 03:09:49
Alıntı yapılan: fatihinanc - 11 Ağustos 2010, 03:06:58
Rica ederim.

Evet yine çalıştı.Harici kristalim de 4Mhz.
Garanti olsun diye şunu da ekledim(mainden önce)

__CONFIG(XT);

MPLAB sız hi-tech biraz zor gibi. çünkü ne olursa olsun Microchip destek vermediği sürece
en yeni versiyonunuz 9.70.

Tamam dır tekrar teşekkürler, mplabı kullanıcaz artık  ;)
İyi geceler.

Not:Mplab'ı kurup denedim ve delay sorunu düzeldi.
Başlık: Ynt: Hi-Tech gecikme sorunu
Gönderen: fatihinanc - 11 Ağustos 2010, 03:10:16
sizin isis dosyasında da çalıştı.

sağolun size de iyi geceler.