מדור חדש - קטעי קוד

הפורום הראשי, אתר הרובוטיקה הישראלי

המנהלים: אסף פוניס, גיא יונה

מדור חדש - קטעי קוד

הודעהעל ידי גיא יונה » ש' ינואר 11, 2003 4:14 pm

שלום רב,

לצורך הקמת מדור חדש בחלק התוכנה - "קטעי קוד", אנו קוראים לחברי הפורום ולכל האורחים לשלוח לנו תתי-תוכניות (עובדות) מתועדות בקפידה, שיוכלו לשמש כספרייה לקטעי קוד עבור בוני רובוטים חדשים וותיקים. תתי-תוכניות לדוגמא: פונקציה המחשבת Sin בשפת אסמבלי, פונקציה המבצעת מיצוע בזמן לחיישנים, וכו'.

תתי-התוכניות שימצאו טובות, ומתועדות כראוי, יופיעו במדור החדש בחלק התוכנה.

אנו מבקשים שלא לשלוח תוכנות שלמות. כותב המעוניין לכתוב, בנוסף לתיעוד, הסבר כיצד האלגוריתם עובד, ומהם שימושיו - מוזמן לשלוח גם אותו, ואנו נשמח לפרסם.

כתובת למשלוח תוכניות - webmaster@robotica.co.il

בברכה,

גיא יונה
עורך האתר
נערך לאחרונה על ידי גיא יונה בתאריך ו' נובמבר 23, 2007 10:18 am, נערך פעם אחת בסך הכל.
גיא יונה
מנהל אתר
מנהל אתר
 
הודעות: 254
הצטרף: ה' אוקטובר 03, 2002 11:18 pm
מיקום: אוניברסיטת ת"א

כמות קוד

הודעהעל ידי השחר העולה » ש' ינואר 11, 2003 4:37 pm

כמובן שגם אפרסם קטעי קוד, בעיקר HC12 אסמבלי כמובן. זה תופס ברובו גם עבור HC11.
הקוד שאפרסם הינו לכל הרמות, ממתחילים לגמרי ועד הרמה הגבוהה ביותר, מה שכולל אלגוריתמי בקרה (סוגי PID למיניהם , רגיל, הפוך, עם חיישנים, עם אנקודרים, עם מצפן וכדומה), אלגוריתם EVENTS (גיל אתה יודע מה זה...) מתוחכם המשתמש במטריצת מסלול, עבודה עם אינטרפטים ועוד.

למתחילים קוד המסביר כיצד לעבוד ולאתחל את המכשיר, אלגורתמים לנסיעה לאורך מסלול, פשוט או יותר מסובך, מבנה תוכנה וכדומה. :P
ולמי שעובד עם ה- HC12, גם אראה עבודה עם פקודות שלא תמצאו תיעוד עליהם.. רק אני ואלי יודעים על הפקודות ה"סודיות" האלה. (ואני לא צוחק! זה ממש מוזר!)
להתראות! שחר
www.robotica.co.il/movies/movies.php
האמת המפתיעה היא שלו היינו מאפשרים לחתולים להתקדם לעמדות כוח בפוליטיקה העולמית הרי שתופעות כמו מלחמות וטרור גלובלי היו מצטמצמות לאלתר. לעומת זאת, העצרת הראשית של האו"ם היתה מסריחה.
סמל אישי של המשתמש
השחר העולה
כותב הטור
 
הודעות: 1739
הצטרף: ג' אוקטובר 08, 2002 11:27 pm
מיקום: אוניברסיטת ת

...

הודעהעל ידי Daniel-Orion » ו' מרץ 21, 2003 4:02 pm

תיהיה בטוח שגם ארז יודע אותם, או את רובם לפחות.
פקודות כגון SEX או NOP
Don't let school interfere with your education
סמל אישי של המשתמש
Daniel-Orion
משתמש ותיק
משתמש ותיק
 
הודעות: 380
הצטרף: א' אוקטובר 20, 2002 12:58 pm
מיקום: רמת גן

הודעהעל ידי השחר העולה » ו' מרץ 21, 2003 4:06 pm

יש לי שם פקודות, ואני לא צוחק - פפקודות שלא כתובת בשום מקום.
SEX - SIGNED EXGANGE
NOP - NULL OPERATION
לא פקודות קשות במיוחד...
-במפי
www.robotica.co.il/movies/movies.php
האמת המפתיעה היא שלו היינו מאפשרים לחתולים להתקדם לעמדות כוח בפוליטיקה העולמית הרי שתופעות כמו מלחמות וטרור גלובלי היו מצטמצמות לאלתר. לעומת זאת, העצרת הראשית של האו"ם היתה מסריחה.
סמל אישי של המשתמש
השחר העולה
כותב הטור
 
הודעות: 1739
הצטרף: ג' אוקטובר 08, 2002 11:27 pm
מיקום: אוניברסיטת ת

...

הודעהעל ידי stac » ש' מרץ 22, 2003 11:34 am

זה קטע קוד שרובוט מפעיל בזמן שהוא בחדר, מחפש נר, מכבה אותו, וחוזר לדלת.

קוד: בחר הכל
/*
   search candle in room.
   function need to be called when robot already in the room.
*/
int extinguish_fire(void)
{
   
   /* go to fire */
   while(!GetPort(white_line) && !GetPort(big_fire) && (GetPort(ir_front) < 33))
   {   
      follow_wall_left_furniture();

      if (GetPort(ir_front) < 28 )
         turn90();
   }/*end while*/

   stop_motor();
   fan_on();         /* built-in delay */
   
   /* go to door */
   turn180();
   while(!GetPort(white_line) && (GetPort(ir_front)<47))
   {
      follow_wall_right_furniture();
      if (GetPort(ir_front) < 28 )
         turn090();
      
   }/*end while*/
   
   stop_motor();
}
-- שחר.
סמל אישי של המשתמש
stac
חבר פורום
חבר פורום
 
הודעות: 73
הצטרף: ו' אוקטובר 18, 2002 9:26 pm
מיקום: שרון

אולי לא הבנתם נכון...

הודעהעל ידי גיא יונה » ש' מרץ 22, 2003 12:36 pm

שלום רב,

כוונת המשורר בהודעה זו הייתה לשלוח לי קטעי קוד כדי שאוכל להקים ספריית תת-תוכניות בה ניתן להשתמש באופן בלתי תלוי למה שכתוב בה. לדוגמא:

Sin:
/* Sub-Program in Assembly for HC12 family.
Function: Calculating the sine value of an angle (in radians).
Input: Floating point number in predefined DWORD "angle"
Output: Floating point number in predefined DWORD "svalue"
Uses Taylor Series up to 3rd order */

....
....
....
RTS

(אני מצטער אם הדוגמא נראית הפוכה מאחר והיא באנגלית, אבל אני חושב שהכוונה הועברה)

בכל מקרה, דמיינו לעצמכם ספריות של שפות עיליות, בה נמצאת הפונציה Sin(). לא אכפת לכם מה בדיוק היא עושה, אבל ניתן להשתמש בה בלי לשבור את הראש. אנו מעוניינים להקים ספרייה דומה, המכילה תתי תוכניות שניתן להשתמש בהם. כמובן שבאסמבלי הקריאה לתתי-תוכניות מורכבת יותר כיוון שצריך לדעת מה בדיוק הן מקבלות ומה הן מוציאות - ולכן התיעוד מאוד חשוב. בנוסף, איננו מעוניינים שאנשים ישתמשו בתוכניות ללא יכולת לדעת כיצד הן פועלות, ולכן תיעוד האלגוריתם בגוף התוכנית חשוב גם הוא.

למעוניינים להשתתף בפרוייקט, אנא שלחו קטעי קוד מתועדים ל-yona@robotica.co.il.

בברכה,

גיא יונה
עורך האתר
גיא יונה
מנהל אתר
מנהל אתר
 
הודעות: 254
הצטרף: ה' אוקטובר 03, 2002 11:18 pm
מיקום: אוניברסיטת ת"א

הודעהעל ידי אינגר » ש' מרץ 22, 2003 3:13 pm

גיא צודק - חשוב מאוד לתעד את הקטעים ששולחים ולדאוג על Encapsulation למשתמש - כימוס הקוד כך שמבחינתו הפונקציה היא קופסא שחורה שמקבלת ומוציאה מידע בהתאם.

גיא - כשיהיה לי קצת יותר זמן אני אעבור על התוכנה שלנו ואראה מה אפשר לשלוח.

ירון.
!Hiroshima - 45, Chernobyl - 86, Windows - 95

העבודה על קרעפלך:
http://www.iarc.org/~4x4pf/Kreplach_Work.pdf
סמל אישי של המשתמש
אינגר
משתמש ותיק
משתמש ותיק
 
הודעות: 199
הצטרף: ו' אוקטובר 11, 2002 8:32 pm
מיקום: רמת גן

יופי של רעיון

הודעהעל ידי ארז » ש' אפריל 19, 2003 2:44 am

אני אתחיל מיד לעבוד על זה.


אגב - שחר -
SEX = Sign Extend :!:
בקשר ל NOP - אני לא בטוח אם זה
Null או No. באינטל זה No Operation. אבל זה לא ממש משנה.
ארז
 

הודעהעל ידי Dr. Evil » ש' אפריל 19, 2003 4:03 am

זה ארז שוב, הפעם עם משתמש וכו'.
:idea: נתחיל בדברים פשוטים במיוחד:
קוד: בחר הכל
; Squares A  (A*A). Returns result in D.
; Size:4     Cycles: 10
SQR_A_D:
  TAB
  MUL
  RTS


קוד: בחר הכל
; Calculates the power of A and B (A^B). Returns result in D.
; Assumes: A and B unsigned, B>1.
; Result is trimmed to first 16-bits (upto 65,535).
; Size: 18     Cycles: 33.
; Written by Erez Shinan.
POWER_AB_D:
  PSHX
  PSHY
  DECB
  TFR B,X
  TAB
  CLRA
  PSHD       ; Push 16-bit base into stack
POWER_AB_D_1:
  LDY 0,SP  ; Load 16-bit base from stack, instead of pull.
  EMUL ;Y*D->Y:D
  DBNE X,POWER_AB_D_1
  PULY
  PULX
  RTS


הקוד כתוב ל עבור HC12 B32 אך יעבוד על כל ה HC12 וייתכן שגם על HC אחרים.
Dr. Evil
 

הודעהעל ידי השחר העולה » ש' אפריל 19, 2003 2:41 pm

יופי ארז, אתה יודע להשתמש בפקודות האלה. אתה. אם לא היית יודע אותן הייתי מודאג!
אבל אתה יודע מה LOC עושה!? (אלא אם אמרתי לך...). יש גם PAG - POOR AGING GOPHERS. תנסה. זה עובד.... (בקשר לשאלה שעולה לך במוח - כלום)
בדיוק...
שחר
www.robotica.co.il/movies/movies.php
האמת המפתיעה היא שלו היינו מאפשרים לחתולים להתקדם לעמדות כוח בפוליטיקה העולמית הרי שתופעות כמו מלחמות וטרור גלובלי היו מצטמצמות לאלתר. לעומת זאת, העצרת הראשית של האו"ם היתה מסריחה.
סמל אישי של המשתמש
השחר העולה
כותב הטור
 
הודעות: 1739
הצטרף: ג' אוקטובר 08, 2002 11:27 pm
מיקום: אוניברסיטת ת

הודעהעל ידי shtroodel » ש' אפריל 19, 2003 3:55 pm

אמממ ארז...

זה לא יעבוד... :wink:
Ein Volk, Ein Reich, Ein Frrrrr!
סמל אישי של המשתמש
shtroodel
משתמש בכיר
משתמש בכיר
 
הודעות: 787
הצטרף: ו' אוקטובר 18, 2002 6:22 pm
מיקום: הרצליה

הודעהעל ידי Dr. Evil » ש' אפריל 19, 2003 5:23 pm

כן, סיפרת לי. אבל למה אתה חושב שאני זוכר?

אני אפילו לא יודע מה הפקודות של ה Fuzzy Logic עושות... אני מתכנת עלוב. עלוב!

אה, כן, ויכול להיות שזה לא יעבוד - לא בדקתי את זה.
Dr. Evil
 

נו טוב

הודעהעל ידי השחר העולה » א' אפריל 20, 2003 12:14 am

אז הנה פונקציה שמוסיפה ל - X משהו , כמו שיש ADDA ADDB ADDD
אז זה ADDX אבל צריך לשים את מה שרוצים בצובר D קודם. הבעיה שאין את שתי הפקודות להוסיף ישר ל X או Y אז זו השיטה המהירה ביותר.... וזה פשוט , מאד מאד פשוט..... זה שורה אחת! אי אפשר יותר פשוט!

ADDX:
LEAX d,x
RTS

ADDY:
LEAY d,y
RTS
www.robotica.co.il/movies/movies.php
האמת המפתיעה היא שלו היינו מאפשרים לחתולים להתקדם לעמדות כוח בפוליטיקה העולמית הרי שתופעות כמו מלחמות וטרור גלובלי היו מצטמצמות לאלתר. לעומת זאת, העצרת הראשית של האו"ם היתה מסריחה.
סמל אישי של המשתמש
השחר העולה
כותב הטור
 
הודעות: 1739
הצטרף: ג' אוקטובר 08, 2002 11:27 pm
מיקום: אוניברסיטת ת

הודעהעל ידי Dr. Evil » א' אפריל 20, 2003 7:39 pm

שחר, זה לא שאני מזלזל או משהו, אבל למה לעזאזל לעשות כזאת פונקציה?!
לא עדיף פשוט לכתוב leax ?,x בקוד? זה די בסיסי...
מה גם שבדר"כ לא תרצה להשתמש בהכרח ב-D, אלא גם ב-A,B או סתם מספר קבוע.
Dr. Evil
 

הודעהעל ידי השחר העולה » ד' יולי 16, 2003 10:09 am

הנה עוד קטע קוד בהמשך לערך מוחלט.... זה קופסא שחורה, זה מחזיר לך את הערך הרצוי ואומר אם היה לך ERROR בדרך (יענו הכנסת X לא נכון...) יש הסבר בתוך הפונקציה איך להפעיל אותה:

קוד: בחר הכל
;* ---------------------------------------------------------------------------
;Recieves A,B, or D
;according to If X = 0 {A}, 1 {B}, 2 {C}
;Meaning - if in x there's a zero, ABS will absolute accumlator A. etc.
;
;Returns - Absolute value of A,B or D
;      0 or FFFF in X where : 0 - no errors
;              FFFF- error
;
;

ABS:
      PSHD
      XGDX
      LSLB
      CLRA
      JMP    [d,pc]
      DC.W   ABS_A
      DC.W   ABS_B
      DC.W   ABS_D
      DC.W   ABS_OUT_ERR
      DC.W   ABS_OUT_ERR
      DC.W   ABS_OUT_ERR
      DC.W   ABS_OUT_ERR
      DC.W   ABS_OUT_ERR
      DC.W   ABS_OUT_ERR
      DC.W   ABS_OUT_ERR
;--------------------------------------------
ABS_A:   
      LDX    #0
      PULD
      TSTA
      BPL    ABS_OUT
      NEGA
      BRA    ABS_OUT
;--------------------------------------------
ABS_B:
      LDX    #0
      PULD
      TSTB
      BPL    ABS_OUT
      NEGB
      BRA    ABS_OUT
;--------------------------------------------
ABS_D:
      LDX    #0
      PULD
      TSTA
       BPL    ABS_OUT
      EORA   #$FF
      EORB   #$FF
;--------------------------------------------
ABS_OUT_ERR:
      LDX    #$FFFF   ;Idication of some Error in input
;--------------------------------------------
ABS_OUT:
      RTS
   
www.robotica.co.il/movies/movies.php
האמת המפתיעה היא שלו היינו מאפשרים לחתולים להתקדם לעמדות כוח בפוליטיקה העולמית הרי שתופעות כמו מלחמות וטרור גלובלי היו מצטמצמות לאלתר. לעומת זאת, העצרת הראשית של האו"ם היתה מסריחה.
סמל אישי של המשתמש
השחר העולה
כותב הטור
 
הודעות: 1739
הצטרף: ג' אוקטובר 08, 2002 11:27 pm
מיקום: אוניברסיטת ת

הבא

חזור אל פורום הרובוטיקה

מי מחובר

משתמשים הגולשים בפורום זה: xalmek ו 13 אורחים