לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 10-07-2010, 21:38
  yoni25 yoni25 אינו מחובר  
 
חבר מתאריך: 04.08.08
הודעות: 6
כתיבת תוכנה להתקן USB

בס"ד.
שלום.
קודם כל אני מצטער אם זה לא הפורום הנכון לשאלה. אולי הייתי צריך לכתוב את זה בפורום חומרה.
קראתי את המדריך הבא שמסביר על ימימוש מפתח קלט/פלט מבוסס USB.


יש כמה דברים שלא הבנתי ואשמח אם תוכלו להסביר לי.
1. באיור 5 יש הרבה חיבורים בשם IN/OUT . איך עובדים איתם? (איך מחברים אליהם את החומרה, ואיך שולחים/מקבלים מהם זרם/נתונים)*.
2. האם אני צריך לשנות את התוכנה שצרובה על הבקר בהתאם לצרכיי או שאני צריך להשאיר את התוכנה המקורית כמו שהיא?*
3. איך לדוגמא אני יכול לחבר ארבע מנורות וארבעה מפסקים וכאשר המחשב יזהה את אחד המפסקים פועל, הוא ידליק את אחת המנורות בהתאמה?
4. אם מישהו יכול להסביר לי יותר בפשטות מה אני צריך להוסיף במעגל של הבקר (מה שמצוייר באיור 5) אני אשמח.

תודה מראש.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 10-07-2010, 22:13
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 1 שנכתבה על ידי yoni25 שמתחילה ב "כתיבת תוכנה להתקן USB"

עדיין לא מכיר את הנושא של USB לגמרי אבל אני חושב שאצליח לענות על השאלות:

1. ב- IN/OUT הכוונה לכך שאפשר לכתוב מידע אל הקו ולקרוא מידע ממנו.

2. לדעתי אתה יכול להשאיר את התכונה הצרובה בבקר איך שהיא, כיוון שאתה יכול לשלוט על הפורטים של הבקר (לקרוא\לכתוב מהם).

3. חבר את הנורות ל- P0.0 עד P0.3,
וחבר את המפסקים ל- P1.0 עד P1.3.
בעזרת הספרייה AtUsbHid.h, אתה יכול לקרוא את מצב הפורטים ולערוך את הערך שלהם. לכן תקרא את פורט מספר 1 (P1) ותבדוק איזה מפסקים דולקים. בהתאם תדליק את הנורות שבפורט מספר 0 (P0).
למעשה אתה יכולה להציב את הערך של פורט 1 בפורט 0, ללא הבדיקה, אלא אם מחוברים דברים אחרים בשאר הרגליים של הפורטים.

4. הסברתי ב-#3, אם לא מובן שאל שוב
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 10-07-2010, 22:16
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 1 שנכתבה על ידי yoni25 שמתחילה ב "כתיבת תוכנה להתקן USB"

1. רגל IN/OUT משמעו שאפשר גם לכתוב אליה, וגם לקרוא ממנה. תלוי בסוג ההוראה בתוכנה.
חיבור החומרה נעשה בצורת חיוט פשוטה [w.w] ניתן לחבר אותם כמבואות או כמוצאים, תלוי בצרכים שלך.

2. במדריך קיבלת קובץ HEX לתוכנה שעליך לצרוב לבקר (8051), עד כמה שאני יודע, זהו קובץ מקומפל שלא ניתן לפתוח (אולי יש קומפיילרים שמאפשרים זאת). משמע, אתה לא צריך לשנות את התוכנה של הבקר.

3.
חבר לדוגמא ברגלים P0.0 עד P0.3 את המספקים שלך.
חבר לדוגמא ברגלים P1.0 עד P1.3 את המנורות שלך.

התוכנית בשפת C שלך, אמורה להראות בערך כך:

קוד:
#include <stdio.h> #include <windows.h> #include "AtUsbHid.h" void main(void) { int i; HINSTANCE hLib = NULL; // Handle to AtUsbHid.dll if (initializationUSB(hLib)) // Initialization all the USB communication. printf("USB HID device is opened.\n"); else { printf("Error While opening device.\n"); Sleep(2000); return; } char buttons; // variable to save the status of the buttons char lamps; // variable to save the status of the lamps while(1){ buttons = inUSB(0) & 0x0F; // get only the lower 4 bits in P0 lamps = inUSB(1); // get all the bits in P1 outUSB(1,buttons | lamps); } closeUSB(hLib); //Close all the USB communication. }


השורה באדום:
יוצרים לולאה אין סופית (1 = true = תמיד מתקיים),
מכיוון שאני לא יודע מה ייעוד המעגל שלך, עשיתי שהוא יבדוק בלי סוף את מצב המתגים, וישנה אותם כל הזמן.
אפשר כמובן לשנות את המעגל כך שיעבוד רק 3 פעמים, 5 דקות או 75 ימים (לדוגמא).

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




הערה:
את כל מה שבwhile אפשר להחליף בקלות לקוד הקצר יותר:
קוד:
outUSB(1,inUSB(1) | (inUSB(0) & 0x0F));

וכמובן, להתעלם לחלוטין מהרגליים האחרות ולהשתמש ב:
קוד:
outUSB(1,inUSB(0));

כך שתמיד כל מה שיש בפורט 0, זה מה שיש בפורט 1.

אבל, עם משתנים לדעתי, ברור יותר להסביר קודים.


בהצלחה.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 05:16

הדף נוצר ב 0.04 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר