עוד ג'וק לאוסף: ATmega8A

כשמוכר אלמוני מהמזרח הרחוק מציע מיקרו-בקרים ברבע ממחיר השוק, תחושת הבטן היא שזה לא ייגמר טוב – אבל עד אז, בואו להכיר את הרכש החדש!

מיקרו-בקרים מדגם ATmega8A-AU
מיקרו-בקרים מדגם ATmega8A-AU

כן, מדובר בקניה אימפולסיבית למדי, אבל במחיר של חצי דולר ליחידה – כאשר מקור לגיטימי ידוע מוכר אותם כמעט ב-2 דולר (אם קונים אלף ומעלה!) – נראה שאפשר לקחת קצת סיכון. ה-ATmega8A הוא מיקרו-בקר 8 ביט ממשפחת AVR, כמובן, עם 8K זיכרון Flash, זיכרון SRAM בנפח 1K ו-EEPROM בגודל 512B. הוא כולל גם USART – תקשורת סריאלית כמו בארדואינו.

כדי להתנסות איתו ועם ג'וקים דומים במארז TQFP, בדומה למה שעשיתי עם ה-PIC16F616, קניתי לוח מתאם ל-DIP. השטח שלו די גדול, כמעט חצי מלוח ארדואינו אונו, והחורים מסודרים על כל ההיקף שלו, כך שהוא לא ממש מתאים למטריצות או לפרויקטים שהגודל הוא שיקול מהותי בהם. הדבקתי את הג'וק ללוח ולשולחן העבודה בסלוטייפ כדי לייצב את הכל בזמן ההלחמה של הפינים הראשונים:

הג'וק והלוח מוכנים לתחילת ההלחמה
הג'וק והלוח מוכנים לתחילת ההלחמה

ההלחמה עברה בסדר, והוספתי גם Headers כדי לחבר חוטים לעסק:

הג'וק מולחם ללוח, בתוספת Headers
הג'וק מולחם ללוח, בתוספת Headers

מכיוון שהלוח מותאם למספר גדלים של ג'וקים, נותרו הרבה חורים פנויים, ונעזרתי בהם כדי להוסיף נגד ונורית LED למטרות בלינק. אז התגלתה הסכנה שבצד השני של הלוח, שמיועד למארזי TQFP קטנים עוד יותר (רווח 0.5 מ"מ בין הפינים, לעומת 0.8 מ"מ). כל רסיס בדיל זעיר ביותר מספיק כדי לקצר שתי רגליים, וזה חתיכת סיפור למצוא ולסלק את המנוולים הקטנים האלה.

הצד האפל של הלוח
הצד האפל של הלוח

בסופו של דבר זה הסתדר, וחיברתי את הצורב AVRISP MKII ללוח כדי להעלות קוד. מספור החורים על הלוח לא תואם את מספרי הפינים של הג'וק, ומבלבל מאד גם בלי קשר, אבל בסופו של דבר הצלחתי. החוט הלבן הוא Reset, הכחול Clock, הירוק MOSI והחום MISO. כזכור, קווי הפלוס וה-GND של צורב זה הם "לקריאה בלבד", ואספקת המתח בפועל למיקרו-בקר צריכה לבוא ממקום אחר.

חיבורי הצורב
חיבורי הצורב

הפיוזים של הג'וק היו מכוונים, מהמפעל, למתנד פנימי במהירות 1MHz. העברתי את זה למקסימום (פנימי) של 8MHz, ואף על פי ששכחתי להלחים למעגל נגד Pull-up בשביל פין ה-Reset, לא נרשמו תלונות מצד החומרה. הנה קוד ה-Blink הפשוט שכתבתי (הלד מחובר לפין PD5):

#define F_CPU 8000000UL

#include <avr/io.h>
#include <util/delay.h>

int main(void) {
  
  // Port D, Pin 5 Direction = output
  DDRD = 32; 
    
  while(1) {
    // Toggle pin 5 state
    PORTD ^= 32;
    _delay_ms(500);
  }
}

ויש לנו LED מהבהב. לא מרגש במיוחד, אבל התחלה מבטיחה לניסויים עתידיים עם שבבים ב-TQFP בכלל, ועם ה-ATmega8A הזול בפרט.

וזה גם מהבהב בקצב הנכון
וזה גם מהבהב בקצב הנכון

להרשמה
הודע לי על
4 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

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

אפשר לינקים מאיפה הזמנת את הרכיבים?
הלוח והבקר… 🙂