תוכן עניינים:

בנה מחשב עם הבנה בסיסית באלקטרוניקה: 9 שלבים (עם תמונות)
בנה מחשב עם הבנה בסיסית באלקטרוניקה: 9 שלבים (עם תמונות)

וִידֵאוֹ: בנה מחשב עם הבנה בסיסית באלקטרוניקה: 9 שלבים (עם תמונות)

וִידֵאוֹ: בנה מחשב עם הבנה בסיסית באלקטרוניקה: 9 שלבים (עם תמונות)
וִידֵאוֹ: עשר הנשים הכי גבוהות בעולם┃טופטן 2024, יולי
Anonim
בנה מחשב עם הבנה בסיסית באלקטרוניקה
בנה מחשב עם הבנה בסיסית באלקטרוניקה

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

שלב 1: חלקים וחפצים

חלקים וחפצים
חלקים וחפצים
חלקים וחפצים
חלקים וחפצים

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

לצורך הספק, תזדקק למקור 5 וולט (שכותרתו כאן כ- 5 וולט). מומלץ שזה יהיה מקור מוסדר, כך שלא תטגן חלקים במעגל שלך בטעות. הקלט שלנו יהיה כפתורים. העיבוד מובן מאליו; אנו משתמשים במעבד. הזיכרון יכלול רק ROM. רישומי המטרה הכללית הפנימית של המעבד יספיקו לשימוש כ- RAM. הפלט יהיה נוריות LED.

1 LM7805C - רגולטור 5V

1 ZYLOG Z80 - מעבד

1 AT28C64B - EEPROM

1 74LS273 - כפכף אוקטל D

1 74HC374E - כפכף אוקטל D

3 CD4001BE - שער Quad NOR

1 NE555 - מחולל שעונים

הנגד של 1K אוהם

הנגד של 10K אוהם

1 רשת הנגד של 10K אוהם; 8 נגדים או 8 נגדים נוספים של 10K

קבלים 1uF

קבל 100uF

1 כפתור לחיצה

מטריצת כפתור 3x4 או 8 לחצני לחיצה נוספים

8 LED - בחירת הצבעים לא משנה

8 330 נגדים אוהם או רשת נגדים

1 קרש ממש גדול או כמה קטנים

הרבה הרבה חוטים

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

אני מזין 12V מוסדר לתוך הרגולטור 5V כדי להאכיל את כל הלחם. הוא מתחמם למדי, אז חיברתי גוף קירור כדי לקרר אותו. אם אתה משתמש בפחות מ- 12V להאכיל את הרגולטור (השתמש לפחות ב- 7V), הוא אמור לפעול קריר יותר.

ה- Z80 הוא המקום בו הקסם קורה. הוא לוקח הוראות המאוחסנות ב- ROM ומבצע אותן. ה- EEPROM מאחסן את התוכנית שלנו לביצוע המעבד.

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

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

שלב 2: חיווט חשמל, שעון ואיפוס מעגלים

חיווט חשמל, שעון ואיפוס מעגלים
חיווט חשמל, שעון ואיפוס מעגלים
חיווט חשמל, שעון ואיפוס מעגלים
חיווט חשמל, שעון ואיפוס מעגלים
חיווט חשמל, שעון ואיפוס מעגלים
חיווט חשמל, שעון ואיפוס מעגלים

הערה: עבור כל החלקים, חברו תחילה את מסילות החשמל. מכל הדברים שכדאי לשכוח לחבר, הצ'יפס יהיה הרבה פחות סביר לשרוד חיבורי חשמל שנשכחו.

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

המעבד דורש מעגל שעון כדי לפעול. בלי זה, זה פשוט ישב שם במצב המתחיל ולא יעשה כלום. השעון מפעיל את רגיסי המשמרות הפנימיים של המעבדים כך שהוא יכול לייצר את האותות לעשות דברים. כל קלט שעון יעשה, אפילו נגד פשוט ולחצן לחיצה. אך נדרשים מחזורי שעון רבים לביצוע הוראות. ההוראה לכתוב לפלט לוקחת 12 מחזורים בפני עצמם. אתה כנראה לא רוצה לשבת שם וללחוץ על כפתור 100+ פעמים כדי לקבל רק לולאה אחת של הקוד (המספרים האמיתיים נמצאים בסוף ההוראה). בשביל זה נועד ה- NE555. הוא מבצע עבורך את המעבר והוא עושה זאת בקצב מהיר (יחסית).

לפני שתתחיל לחבר משהו, ייתכן שתרצה להמשיך ולברר כיצד אתה רוצה שהרכיבים שלך יהיו מונחים על הלוח. מעגל השעון שלי פשוט ממוקם בתחתית הלוח כך שזה לא יפריע לרכיבים אחרים. נניח שאתה יודע להכין שעון בסיסי עם הטיימר. אם לא, תרצה לחפש את "555 Astable" ולעקוב אחר הדרכה. השתמש בנגד 1K כדי לעבור בין מסילת 5V לסיכה 7 של הטיימר (R1) לבין 10K בין סיכה 7 לסיכה 2 (R2). הקפד לקשור את סיכת האיפוס, סיכה 4, למעקה 5V כך שהטיימר יוכל לפעול. שמתי נורית על הפלט שלי כדי שאוכל לוודא שהשעון אכן עובד, אך אין בו צורך.

אפשרות נוספת עם NE555 היא להגדיר אותו כשער NOT ולהשתמש בנגד 1K כדי לקשור את הפלט בחזרה לקלט. בדרך כלל מומלץ להשתמש בשלושה טיימרים לשם כך, אך גיליתי שרק 1 אמור לעבוד מצוין. רק דע שאם תעשה זאת, הוא יתנדנד במהירות גבוהה מאוד ויהיה קשה מאוד, אפילו בלתי אפשרי, לומר כי נוריות הפלט מהבהבות. התקנה זו נקראת "מתנד טבעות".

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

עכשיו נחבר את מעגל האיפוס. ראשית עליך למצוא מקום על הלוח שלך עבור זה. בחרתי ממש ליד השעון. הוסף את הכפתור שלך ללוח. השתמש בנגד 1K כדי לקשור צד אחד של הכפתור למעקה 5V. סיכות RESET שלנו פעילות נמוכות, כלומר עלינו להחזיק אותן גבוהות. בשביל זה נועד הנגד. צומת זה הוא גם המקום בו מתחברים סיכות האיפוס. הצד השני של הכפתור עובר ישר לקרקע. אם אתה רוצה איפוס הפעלה, הוסף את הקבל 10uF גם לצומת הזה. הוא ישמור על המתח על סיכות האיפוס נמוך מספיק זמן כדי להפעיל את מעגל האיפוס בתוך המעבד והכפכף.

שלב 3: חיווט ה- Z80

עכשיו אנחנו מגיעים לגרוע. נתחבר את החיה שהיא ה- Z80. על הלוח שלי, הנחתי את ה- Z80 בחלקו העליון באותו חלק לוח שבו מעגל האיפוס. כפי שצוין קודם לכן, חבר את מסילות החשמל תחילה. 5V עובר לסיכה 11 מצד שמאל והאדמה היא סיכה אחת למטה אך מימין. אולי גם שמת לב לרוחב המוזר של השבב. זה יגרום לך להיות בעל 3 מחברים פתוחים בצד אחד בלוח הלחם ו -2 בצד השני. זה רק הופך את זה פחות נוח לחבר דברים נוספים אם תבחר לעשות זאת.

מספרי הסיכות הבאים-אני מניח שאתה יודע איך לספור סיכות ב- IC-הם כניסות שאינן בשימוש וחייבות להיות קשורות למעקה 5V: 16, 17, 24, 25.

זוכרים את השעון שלנו? הפלט שלה עובר לסיכה 6 ב- z80. מעגל האיפוס מתחבר לסיכה 26. בלי שהרכיבים האחרים יהיו על הלוח, זה רחוק ככל שאני יכול להביא לך את החיווט של ה- z80 עצמו. חיווט נוסף שיעשה לו ייעשה בשלבים מאוחרים יותר.

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

שלב 4: חיווט ה- ROM

חיווט ה- ROM
חיווט ה- ROM

הערה: ייתכן שתרצה להתעכב על הצבת הלוח בפועל אם עדיין יש צורך לתכנת אותו (עוד על כך בהמשך).

עבור ה- ROM, הנחתי אותו ליד ה- Z80 מימין וגם עקתי אותו סיכה אחת על לוח הלחם. זה איפשר לי להעביר את אוטובוס הכתובות ישירות, אך על כך בהמשך. ה- AT28C64B הוא EEPROM, כלומר ניתן לתכנת אותו מספר פעמים על ידי כיבוי והדלקה של כמה סיכות. אנחנו לא רוצים שה- EEPROM שלנו יתכנת את עצמה בטעות כשהיא במעגל. אז ברגע שיש לך את מסילות החשמל שלך מחוברות, סיכת חוט 27 (/WE) למעקה 5V כדי להשבית את תכונת הכתיבה לגמרי.

התוכנית שלי כל כך קטנה, שהייתי צריך רק 5 שורות כתובת תחתונות (A0-A4) מחוברות, אבל בכל זאת חיברתי A5, A6 ו- A7 כדי שאוכל לכתוב תוכניות גדולות יותר ללא עבודה נוספת. קווי הכתובת הנוספים (A8-A12) נקשרים ישירות לקרקע כדי למנוע גישה לא רצויה לכתובות הגבוהות יותר מכניסות צפות. כאשר תשומות הכתובת שאינן בשימוש קשורות לקרקע ובקרת הכתיבה קשורה ל- 5V, החיווט של השאר פשוט למדי. מצא את A0 במעבד וחבר אותו ל- A0 ב- ROM. לאחר מכן מצא את A1 במעבד והעבר אותו ל- A1 בתקן ה- ROM. בצע זאת עד שתחבר את כל הכתובות יחד. בתמונה, אוטובוס הכתובת שלי ל- ROM מתבצע בחיווט כחול. אוטובוס הכתובת העובר אל זיכרון ה- RAM מתבצע בחיווט אדום. כל החוטים האלה נחתכו מראש והופשטו מכיוון שהם הגיעו בערכת חיווט של קרש לחם והיו מושלמים לחיווט זה.

לאחר שתקבל את הכתובות מחוברות (זה נקרא אוטובוס הכתובות), בצע את אותו הדבר בדיוק עבור הסיכות המסומנות D0, ולאחר מכן D1, D2 וכו '. עשה זאת עבור כל סיכות הנתונים (D0 - D7) ויש לך את אוטובוס נתונים קווי. כמעט סיימנו לחבר את ה- ROM. מצא את סיכת ה- ROM /CE (שבב הפעלה) וחבר אותו למעבד סיכה 19, /MREQ (בקשת זיכרון) ולאחר מכן מצא את ה- ROM /OE (הפעל פלט) וחבר אותו לסיכת המעבד 21, /RD (קריאה). עכשיו סיימנו. כל אלה נעשים עם חוטי מגשר מכיוון שהם צריכים לעבור לצד השני של המעבד ולוח לחם אינו מציע מספיק מקום לשימוש בחיווט מסודר כזה.

שלב 5: חיווט הפלט

חיווט הפלט
חיווט הפלט
חיווט הפלט
חיווט הפלט

מכיוון שהוא אינו מאוכלס, בחרתי את החלק הלוח משמאל ל- Z80 עבור הפלט. הנח את הכפכף שם וחבר אותם למסילות חשמל. סיכה 1, /MR (איפוס) יכולה להתחבר ישירות לסיכת האיפוס של המעבד, אך ניתן להשאיר אותה קשורה למעקה 5V. פעולה זו תגרום לו רק להציג נתוני זבל עד הכתיבה הראשונה. שימו לב איך לשבב יש כניסת שעון על סיכה 11. קלט זה מוזר בכך שהוא מופעל כאשר הסיכה עולה גבוה. שים לב גם שסיכה זו אינה אותו השעון המניע את המעבד. שעון זה תופס את הנתונים שנאמרו על אוטובוס הנתונים.

זוכרים איך חיברנו את D0 - D7 ברומא לאותם סיכות במעבד? בצע את אותו הדבר עבור שבב זה. D0 שלו עובר ל- D0 באוטובוס הנתונים וכן הלאה. הסיכות המתחילות ב- "Q" הן יציאות. לפני שנחבר אותם, עלינו להוסיף שבבים נוספים. השתמשתי בשערים מרובעים של NOR כי יש לי צינור מהם וכבר הייתי צריך אחד, אבל בערך כל שבב יעבוד אם תחבר אותו כראוי. יכולתי לקשור קלט אחד על כל השערים לקרקע ולהשתמש בכניסות האחרות כמו גם תשומות, אבל בחרתי לחבר את שתי התשומות יחד לפשטות.

הנחתי את הצ'יפס מתחת לכפכף כדי להקל על החוטים ישירות ללא מגשרים אבל אזלתי בחוט בשלב זה אז זה לא ממש משנה בסופו של דבר. Q0, Q1….. Q7 על הכפכף עובר לכניסות בשערים הבודדים. עם 4 שערים בכל חבילה/שבב, הייתי צריך 2 חבילות והשתמשתי בכל השערים. אם אתה מוצא גרסה של הכפכף שיכול להניע את נוריות הלד ללא צורך שנאגר כך, אין צורך בשני שבבים אלה. אם אתה משתמש בשערים כמאגר שאין לו יציאות הפוכות (AND/OR/XOR), תוכל לחבר את הנורות כפי שהיית מצפה. אם אתה משתמש באותם חלקים כמוני ו/או שהיציאות הפוכות, יש לחבר את נוריות ה- LED כמתואר להלן. התמונה הראשונה מציגה את חלק ה- IC של הפלט.

השתמש בנגדי 330 אוהם כדי לקשור את נוריות החיובי (אנודה) למעקה 5V ולחבר את השלילי (קתודה) לפלט השערים. אתה יכול לראות בתמונה השנייה שהשתמשתי בשני אוטובוסים נגד, שלכל אחד מהם חמישה נגדים פנימיים בלבד. חיווט הלדים כך יגרום להם להאיר כאשר הפלט כבוי. אנו עושים זאת מכיוון שהפלט כבוי כאשר הקלט מופעל. וודא לחלוטין שאתה עוקב אחר אילו שערים הפלט שלך מבקרת הכפכפים. אלא אם נוריות ה- LED שלך יהיו מפוזרות או שהסדר שלהן חסר משמעות, אובדן מעקב אחריהן עלול לגרום לבלבול בהמשך כשאתה שואל את עצמך מדוע הפלט שגוי.

שלב 6: חיווט הקלט

חיווט הקלט
חיווט הקלט

קח את הכפכף 74HC374 הזה והנח אותו במקום כלשהו. שלי היה איפשהו מתחת ל- Z80 לקראת תחתית הלוח. זוכרים את הפעם האחרונה שבה חיברנו D0 ל- D0 ו- D1 ל- D1 וכן הלאה? הפעם אנו מחברים את Q0 ל- D0 ו- Q1 ל- D1 וכן הלאה. למרבה המזל, לא נצטרך להוסיף שבבי חיץ הפעם, חחח. במקום זאת אנו הולכים לחבר 10K אוהם לכל סיכת "D" (D0-D7) ולטחון ולאחר מכן כפתור לאותם הפינים ולמסילת 5V. או שאתה יכול להשתמש באוטובוס נגד ולהפחית הרבה את מספר החלקים שלך. מטריצת כפתורים 3x4 (ללא פלט מטריקס !!) תעזור גם היא. התמונה מציגה את מכלול מעגל הקלט יחד עם היגיון הדבק (החלק הבא הוא).

שלב 7: הדבקת לוגיקה

יש לנו דבר אחרון לחבר. זה נקרא "לוגיקת דבק" מכיוון שהוא משמש לפענוח אותות בקרה כדי שהכל יעבוד; זה מה שמחזיק את המעגל יחד. כאשר המעבד רוצה לכתוב נתונים לפלט, שניהם /IORQ ו /WR (20 ו -22 בהתאמה) יורדים והנתונים הנשלחים מתבססים על אוטובוס הנתונים. סיכת השעון בשתי הכפכפים פעילה גבוהה, כלומר הנתונים ננעלים כאשר הסיכה מקבלת אות גבוה. אנו משתמשים בשער NOR וחוט /IORQ לכניסה אחת של השער ו /WR לכניסה השנייה. כאשר אחד מהם גבוה, כלומר לא נבחרים מעגלי ה- IO או לא מבוצעת פעולת כתיבה, הפלט המזין את השעון של הכפכף נשאר נמוך. כאשר שתי התשומות נמוכות, ורק כאשר, התפוקה עולה גבוה והכפכף נועל את הנתונים.

כעת עלינו לחבר את כפכף הכניסה. אנו יכולים לחבר את סיכת השעון בערך באותו אופן כמו הקודם, אך באמצעות /IORQ ו /RD. אך בניגוד לכפכף השני, יש לנו גם סיכת /OE שצריך להוריד אותו רק כאשר /IORQ ו /RD נמוכים. נוכל להשתמש בשער OR. או שנוכל פשוט לקחת את האות שכבר יש לנו לשעון ולהפוך אותו עם אחד משני השערים ההופכים שכבר יש לנו. בזמן הצהרת ההנחיה הזו, לא היה לי שער OR זמין, אז השתמשתי באחת מהאפשרויות האחרונות. השימוש באפשרות השנייה פירושו שבכל מקרה לא הייתי צריך להוסיף חלקים נוספים.

שלב 8: תכנות

אם החיווט שלך יהיה נכון וההסבר שלי ברור, כל שנותר הוא לתכנת את ה- ROM. ישנן מספר דרכים לעשות זאת. אתה יכול לקחת את הדרך הקלה ולהזמין שבב חדש מ- Digikey. כאשר אתה מזמין את החלק, תהיה לך אפשרות להעלות קובץ HEX והם יתכנתו אותו לפני שישלחו אותו. השתמש בקבצי HEX או OBJ המצורפים להוראה זו ורק המתן עד שיגיע בדואר. אפשרות 2 היא לבנות מתכנת עם ארדואינו או משהו. ניסיתי את הנתב הזה וזה לא הצליח להעתיק נתונים מסוימים כראוי ולקח לי שבועות להבין את זה. בסופו של דבר עשיתי את אפשרות 3, כלומר לתכנת אותה ביד ולהפוך מתגים לשליטה על כתובות וקווי הנתונים.

לאחר שהוסבה ישירות לקוד OP של המעבד, כל התוכנית הזו מונחת ב -17 בתים בלבד של שטח כתובת, כך שתכנות ביד לא היה נורא מדי. התוכנית נטענת לרשם B למטרה כללית של הערך 00. רישום B משמש לאחסון תוצאה של ההוספה הקודמת. מכיוון שרשם A הוא המקום שבו מתמטיקה מתרחשת, לא נשתמש בו לאחסון נתונים.

אם מדברים על רשם A, אנו מבצעים פקודת IN, הקוראת את הקלט, ומאחסנת את נתוני הקריאה ב- A. לאחר מכן אנו מוסיפים את התוכן של רשום B ומפיקים את התוצאה.

לאחר מכן, רשום A מועתק לרשום ב 'ואז אנו מבצעים סדרה של פקודות קפיצה. מכיוון שכל הקפיצות מצביעות על הבייט התחתון של שורות הכתובת, ומכיוון שהבייט העליון של הוראת הקפיצה ניתן בארגומנט השני והוא "00", אנו יכולים לכפות על כל קפיצה שאחריה יבוא NOP. אנו עושים זאת כדי לתת זמן בין הצגת פלט לקלט קריאה כדי למנוע קלט מקרי. כל קפיצה משתמשת בעשרה מחזורי שעון וכל NOP משתמש בארבעה. אם הלולאה אורכת זמן רב מדי לטעמך, תוכל להגדיל את מהירות השעון או לתכנת אותה מחדש כדי להשתמש בקפיצה אחת פחות.

שלב 9: בדיקה

אם חיברת הכל כראוי והתקן ה- ROM שלך מתוכנת כהלכה, יש לבצע צעד אחרון: חבר אותו ובדוק אם הוא פועל. לחץ על כפתור והמתן מספר שניות. נדרשת 81 מחזורי שעון עד שהתוכנית מגיעה לולאה הראשונה שלה וכל לולאה לוקחת 74 מחזורי שעון.

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

מוּמלָץ: