Cortex
10-08-2011, 18:04
سلام
چجوری میشه بوسیله configuration wizard کیل و هدر delay.h یک ثانیه دقیق رو درست کرد؟
من از هدر delay.h مجله pmm3 استفاده کردم ولی هر یک ثانیش شده 4 ثانیه!!
کریستالم هم 18.432mhz هست که تو تنظیماتش هم همین مقدارو قرار دادم.
هرچی هم تو قسمت configuration wizard کیل pll divider یا pll multiplier رو کم و زیاد میکنم هیچ تغییری تو مقدار تاخیر ایجاد نمیشه!!
مشکل از کجاست؟؟
یه سوال دیگه:
چرا تو این برنامه کلاک رو تقسیم بر 5 کرده؟ چون کیل به صورت دیفالت کلاک رو پنج برابر میکنه؟
اینم هدرشه:
#ifndef _DELAY_INCLUDED_
#define _DELAY_INCLUDED_
//presentation variable
unsigned long crystal=18432000; // for other crystal change 18432000
unsigned long x;
unsigned long y;
//presentation subs ( we have three sub 1- delay_us 2- delay_ms 3- delay_s
void delay_us(unsigned long a);
void delay_ms(unsigned long b);
void delay_s(unsigned long c);
// sub delay_us
void delay_us(unsigned long a){
do{
unsigned long d=0;
x=crystal/50000000; //
for (d=0;d<x;d++); //start the VALUE off d is 0 , increase d ,
//if d > x goto next line ,else (d<x) increase d
y++; // increase y
} while(y<a); //if y > a goto next line ,else (y<a) goto "do{"
y=0;
}
//in mine program , you write "delay_s(4);" . in this Header "a" is 4 & do-while
//loop repeat 4 ---time = (x*5)/ crystal
// sub delay_ms
void delay_ms(unsigned long b){
do{
unsigned long e=0;
x=crystal/5000;
for (e=0;e<x;e++);
y++;
} while(y<b);
y=0;
}
// sub delay_s
void delay_s(unsigned long c){
do{
unsigned long f=0;
x=crystal/5;
for (f=0;f<x;f++);
y++;
} while(y<c);
y=0;
}
#endif
ممنون
چجوری میشه بوسیله configuration wizard کیل و هدر delay.h یک ثانیه دقیق رو درست کرد؟
من از هدر delay.h مجله pmm3 استفاده کردم ولی هر یک ثانیش شده 4 ثانیه!!
کریستالم هم 18.432mhz هست که تو تنظیماتش هم همین مقدارو قرار دادم.
هرچی هم تو قسمت configuration wizard کیل pll divider یا pll multiplier رو کم و زیاد میکنم هیچ تغییری تو مقدار تاخیر ایجاد نمیشه!!
مشکل از کجاست؟؟
یه سوال دیگه:
چرا تو این برنامه کلاک رو تقسیم بر 5 کرده؟ چون کیل به صورت دیفالت کلاک رو پنج برابر میکنه؟
اینم هدرشه:
#ifndef _DELAY_INCLUDED_
#define _DELAY_INCLUDED_
//presentation variable
unsigned long crystal=18432000; // for other crystal change 18432000
unsigned long x;
unsigned long y;
//presentation subs ( we have three sub 1- delay_us 2- delay_ms 3- delay_s
void delay_us(unsigned long a);
void delay_ms(unsigned long b);
void delay_s(unsigned long c);
// sub delay_us
void delay_us(unsigned long a){
do{
unsigned long d=0;
x=crystal/50000000; //
for (d=0;d<x;d++); //start the VALUE off d is 0 , increase d ,
//if d > x goto next line ,else (d<x) increase d
y++; // increase y
} while(y<a); //if y > a goto next line ,else (y<a) goto "do{"
y=0;
}
//in mine program , you write "delay_s(4);" . in this Header "a" is 4 & do-while
//loop repeat 4 ---time = (x*5)/ crystal
// sub delay_ms
void delay_ms(unsigned long b){
do{
unsigned long e=0;
x=crystal/5000;
for (e=0;e<x;e++);
y++;
} while(y<b);
y=0;
}
// sub delay_s
void delay_s(unsigned long c){
do{
unsigned long f=0;
x=crystal/5;
for (f=0;f<x;f++);
y++;
} while(y<c);
y=0;
}
#endif
ممنون