על ידי The arctic wolf » ב' ספטמבר 14, 2009 6:25 am
פבל,ראשית כל שלום גם לך.
שנית לשאלתך,
יש כמה אפשרויות ליצור השהייה בתוכנית של מיקרובקר,
האפשרות המדוייקת יותר(ובדרך כלל העדיפה) היא להשתמש בטיימר המובנה אם יש כזה.
אבל אתה שאלת על לולאות ספירה ופונקציות.
בקשר לפונקציות המוכנות אשר קיימות בחלק מהקומפיילרים,
הכל תלויי על מה מבוססת הפונקצייה,האם היא בנוייה להשתמש באיזשהו טיימר מובנה או בלולאת ספירה,
איך בנוי קוד הפונקצייה ועד כמה הוא אפקטיבי במקרה הספציפי של התוכנה הספציפית שלך.
בהתבסס על הנתונים האלה לפעמים זה אפקטיבי להשתמש בפונקצייה מוכנה מראש ולפעמים זה פחות אפקטיבי
ובמקרה זה בונים פונקצייה מותאמת אישית.
בקשר לאיך פועלת לולאת ספירה וכמה השהייה היא נותנת,
זה תלויי בקצב העבודה של הבקר ובמבנה הפונקצייה.
אם לדוגמא ידוע לך שהבקר שלך עובד עם גביש של 12 מגה הרץ מלך התחילה
ושהבקר מחלק את תדר השעון הזה ב-12 , אזי הבקר יעשה מיליון פעולות בשנייה
(זאת אומרת שכל פעולה תימשך מיליונית השנייה).
אם בנית לולאת ספירה שכל פעולת הוספה\הורדה בה לוקחת בדיוק פעולה אחת מהבקר
אז ידוע לך שכל מיליון ספירות יתנו לך השהייה של שנייה אחת.
יהיה הוגן לציין שלולאות הספירה יוצאות מדוייקות יותר באסמבלי
מכיוון שב-C לא תמיד ידוע לך כמה פעולות מכונה תיקח כל פקודה.
ולשאלה האחרונה,
כפי שכבר הבנת מהתשובה הקודמת,לא תמיד מספר הפעולות בשנייה של הבקר שווה
לתדר המתנד שלו,בדרך כלל הבקר מחלק את תדר המתנד כך שבפועל הוא מבצע פעולה אחת כל כמה פולסים.
לכן עליך לבדוק בדפי הנתונים של הבקר שלך בכמה הוא מחלק את תדר המתנד.
אנדריי.
זה שהרעיון משוגע עוד לא אומר שהוא לא יצליח!