פורסם 2004 בדצמבר 1820 שנים אני רוצה לשלוט על כמה לדים דרך המחשב. יש לי ידע בתכנות (C/ASM), אין לי ידע באלקטרוניקה.קראתי את המאמר הבא: http://www.codeproject.com/csharp/csppleds.aspוהבנתי בערך מה צריך לעשות על מנת להדליק לד - לשלוח 1 ל-data port המתאים. אבל מה קורה אם אני רוצה שהלד ידלוק כל הזמן (אני משער שכשאני שולח 1 ל-port המתאים, הלד דולק לזמן קצר ונכבה) ?אפשר כמובן לכתוב קוד שמדליק את הלדים מחדש אחת לכמה זמן, אבל זה נראה לי קצת לא יעיל. האם יש דרך לעשות את זה בחומרה?
פורסם 2004 בדצמבר 1820 שנים למה לא יעיל? אתה עושה לולאה ושולח כל הזמן 1... בכל מקרה אתה יכול לברר אם ה-data port שאליו אתה מחבר את הלדים עם דלגלגים (כמו parallel port) ואז אם אתה מזין 1, הוא ישאר שם.. ואם לא... אפשר לחבר דלגלגים ידנית
פורסם 2004 בדצמבר 1920 שנים מחבר אני לא כ"כ מבין את המשפט האחרון - אני מתכוון לעבוד עם ה-parallel port, האם כאשר אני אזין 1 ישאר 1 ב-data port ?לגבי יעילות, אם אני עושה לולאה ושולח כל הזמן 1, המעבד שלי יצטרך לעבוד קשה. אפשר לשפר את זה ולהכניס sleep באמצע, לדוגמה:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/io.h>#define PORT 0x378#define INIT_VALUE 255#define SLEEP_TIME 500000int main(int argc, char *argv[]){ unsigned char value = INIT_VALUE; /* Set permissions for port */ if (ioperm(PORT, 1, 1) != 0) { fprintf(stderr, "cannot access port"); return EXIT_FAILURE; } /* Output the value to PORT infinitely */ while (1) { outb(value, PORT); usleep(SLEEP_TIME); } return EXIT_SUCCESS;}אבל איך מחשבים את ה-SLEEP_TIME? נראה לי שעדיף שזה יהיה ממומש בחומרה.
פורסם 2004 בדצמבר 1920 שנים אתה שולח ערך מסויים והוא נשאר שם עד שאתה משנה אותו..לדוגמא 110000002 הלדים הראשונים ישארו דלוקים עד שתשלח ערך חדש
פורסם 2004 בדצמבר 1920 שנים זה בדיוק מה שאמרתי אם אתה משתמש ב-parallel port ביציאות יש דלגלגים (flipflops) ואז אם אתה שולח 1 הוא ישמר שם עד שתשלח משהו חדש
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.