
מאמר זה סוקר את ההבדלם העיקריים בין שתי סדרות של בקרים מתוכנתים של שתים מהחברות המובילות בשוק בקרי ה 8 ביט - ATMEL ו-MicroChip. הסקירה תתמקד בקבוצה זו של במיקרו-בקרים המתאפינים במחיר זול יחסית (1-7$), צריכת הספק נמוכה ושטח קטן, והינם בעלי יכולות מגוונות, המספיקות למערכות רבות שאינן דורשות יכולות עיבוד אותות גבוהות. תחילה אסקור את ההבדלים העיקריים בין הטכנולוגיות של החברות ולאחר מכן אשווה קריטריונים שונים בין שני רכיבים דומים משתי החברות. ארכיטקטורת מעבדזיכרון זיכרון הנתונים במעבדי PIC מחולק לבנקים שונים (כתלות בגודל הזיכרון) מה שמצריך שינוי של מצביע הבוחר את הבנק זיכרון הנוכחי איתו עובדים בכל גישה לזיכרון. דבר זה מקשה מאוד כשעובדים עם מבנה נתונים שגולש מגודל הבנק. (כאשר עובדים עם קומפיילר C מנגנון זה "מטופל" ע"י הקומפיילר). ב AVR כל זיכרון ה DATA ניתן לגישה באופן ישיר. מנגנון פסיקות לרכיבים ממשפחת AVR יש מנגנון פסיקות משוכלל התומך במספר רב יחסית של פסיקות הממומשות בחומרה,כלומר ארכיטקטורה נפרדת המפעילה רוטינת פסיקה מווקטור יחודי בזיכרון לסוגי פסיקות שונים כגון פסיקות שעונים/ADC/פסיקות ממקור חיצוני ועוד, בעוד שבמעבדים ממשפחת PIC יש רק שתי רמות של פסיקות: נמוכות וגבוהות, כך שנאלצים שכמה רכיבי מערכת המוציאים פסיקות יפעילו את אותה רוטינת פסיקה, ורק בה יבדק בקוד מקור הפסיקה ובהתאם הטיפול בה. מבנה הרגיסטרים ואוצר פקודות ל PIC יש רק גריסטר לשימוש כללי אחד, בעוד של AVR יש 32 רגיסטרים. יתרון זה יכול לקצר חישוב של פעולות מורכבות, שכן ניתן לשמור נתונים זמניים על יותר רגיסטרים ובכך להקטין את מחזורי השעון הנדרשים לפעולה. לרכיבי AVR אוצר פקודות גדול יותר הממומש בחומרה, המתבצעות ב1-2 מחזורי שעון, מה שיכול להאיץ את ביצועי המעבד. צריכת הספקבאופן כללי, בקרים ממשפחת PIC נחשבים בעלי צריכת אנרגיה נמוכה יותר במצב שינה, כלומר עדיפים לשימוש במוצרים בהם נדרש אורך חיי סוללה ארוך (כגון שלטי טלוויזה, שעונים.) מחירבקרי ממשפחת PIC נחשבים לזולים יותר בכמויות קטנות, לכן נוחים יותר מבחינת עלויות פיתוח ויצור ל מוצרים בכמות קטנה. צורבים, כלי איתור שגיאות (debug) ופיתוח MicroChip משתמשת בפרוטוקול עצמאי שלה עבור כלי איתור השגיאות שלה (debugger) הנקרא ICD- In Circuit Debugger, בעוד ש ATMEL עושה שימוש בפרוטוקול JTAG הסטנדרטי.
בנוסף, לרכיבי PIC יש אפשרות לתכנות של עד שלוש נקודות עצירה (BreakPoints) - מה שאומר שניתן לראות את מצב הרגיסטרים במערכת רק ב 3 נקודות שונות בכל הרצה. זוהי מגבלה מהותית שמנסיוני האישי מקשה את פעולת איתור השגיאות. בבקרים של חברת ATMEL אין הגבלה כזו הדוקה, כך שתהליך האיתור השגיאות קל משמעותית. סביבת פיתוח וקומפיילרים  חברת MicroChip מציעה את סביבת הפיתוח (IDE) שלה הנקראת MPLAB. בסביבה זו ניתן לעבוד עם קומפיילר אסמבלר חינמי ועם סידרה של קומפילרים לשפת C עבור ארכיטקטורות מעבד השונות - C18,C30 הכוללות ספריות נוחות מאוד לשימוש עבור התקנים הפריפריאליים של הבקרים.
ישנם עוד חברות רבות המציעות קומפיילי C עבור מעבדי PIC כגון HighTech ועוד. מנסיוני האישי, סביבת פיתוח זו אינה נוחה (ונחותה בהרבה מסביבות פיתוח קוד ל PC כגון סביבת הפיתוח VisualStudio של מייקרוסופט) ATMEL מציעה את סביבת הפיתוח שלה AVR STUDIO שהיא נוחה למדי, אך קצת כבדה ומסורבלת. יש גם את IAR שהיא סביבה מצויינת. יש לא מעט קומפילרים ל C עבור בקרי AVR ואף קומפיילר gcc. השוואה בין שני רכיבים ספציפיים משתי החברותכדי לבצע את ההשוואה, חיפשתי שני רכיבם ברמות מחירים זהות ובעלי יכולות עיקריות זהות, כך שיהיה ניתן לבצע השוואה נכונה והוגנת בין המשפחות. אומנם אני אשווה כאן בין שני רכיבים ספצפיים, אך מכיוון שמרבית הרכיבים במשפחה מבוססים על טכנולוגית ליבה זהה, ההשוואה הספציפית יכולה להעיד על כלל הרכיבים ממשפחות אלה. הקריטריונים המרכזיים שחיפשתי היו: 1. מחיר בסביבות ה 4$ 2. גודל הזיכרון הפנימי: כמות הקוד שניתן לכתוב לבקר. 3. ממשק תקשורת מהר - במידה והחומרה שבליבה הבקר תתממשק למחשב, רצוי שיהיה לה ממשק בעל קצב העברת נתונים גבוה ואמין, לכן בחרתי ברכיבים להם יכולת מובנת לממשק USB. הרכיבים שבחרתי הם: ATMega32U של Atmel ו PIC18F4550 של Microchip. להלן טבלה המפרטת את נפח הזיכרונות והרכיבים הפריפריאלים העיקריים הממומשים בכל אחד מהבקרים: | ATMega32U4 | PIC18F4550 | Microcontroller | | ATMEL | Microchip | Company | | AVR | PIC | Series | | 32K x 8bit | 16K x 16bit | Program Memory | | 2.5Kbyte | 2kbyte | Data Memory - RAM | | 26 | 35 | Number of I/O | | 44TQFP | 44TQFP | Package | | 16Mhz | 48Mhz | Speed | | 16 | 12 | MIPS - Million instructions/sec | | 1kByte | 2kbyte | EEPROM emory Size | | 12X 10bit | 13X 10bit | Analog To Digital Conversion | | 1 | 1 | timers: 8 bit | | 3 | 3 | timers: 1 bit | | 4 | 2 | PWM channels | | 1 | 1 | SPI | | 1 | 1 | I2C | | 1 | 1 | USB 2.0 Full Speed 12Mbps | | 2.7-5.5V | 4.2-5.5V | Voltage | | 1-3uA | 0.1-2uA | sleep mode current 5V 25Deg | | 3.5$ | 4.1$ | Price @ 100qu |
רואים כי אין הבדלים גדולים בין שני הרכיבים. יתרון קל ל PIC בצריכת הספק במצב שינה, ומספר פיני I/O. יתרון ל AVR בנפח זכרון, בתכנון יותר נכון של ארכיטקטורת ה ADC והטיימרים. סיכוםהיתרונות הבולטים של רכיבי AVR הם בסביבת פיתוח נוחה יותר, בעיקר בגלל ה debugger המוגבל של MicroChip ובגלל ארכיטקטורת מערכת נכונה יותר. היתרונות של מעבדי PIC הם סף כניסה נמוך יותר, צריכת זרם נמוכה, וכמות I/O גדולה יותר לאריזה. נראה שאין מנצחת ברורה, ושהשימוש צריך להיות על פי היישום. ובכל זאת, אם עליכם לבחור רק בטכנולוגיה אחת, הייתי ממליץ על בקרי AVR. |