C8051F310 יואל כהן ואבי חיון:מנחים http://site.2all.co.il/hayun/ מבנה הרכיב ♦ High speed 8051 µc core ¾ 70%מההוראות מתבצעות במחזור אחד או שניים מחזורי מכונה ¾ עד (Mega Instruction Per Second) 25 MIPSבתדר 25MHz ♦ Analog- Peripherals ♦ Digital I/O ¾ 29 PORT I/Oהמתואמים ל- 5v תקשורת טורית – ¾ ק uart,spi,smb ¾ 4טימרים ¾ PCA 5 ¾ תכנות חיבור הפורטים- crossbar Analog-to-Digital ¾ 10 ADCסיביות ¾ עד 200KSPS )(Kilo Sample Per Second ¾ עד 21כניסות אנלוגיות בודדות או דיפרנציאליות חיצוני או VDD ¾ Vrefח צונ ¾ חיישן טמפ' build in משווים משווים ם ¾ 2משוו ¾ עם תכנות היסטרזיס וזמן תגובה ¾ יכולים להיות מתוכנתים כגורמי פסיקה ♦ On-Chip Debug ¾ Break points ¾ Single stepping אבי חיון ויואל כהן ♦ Clock source 24.5MHzדיוק ¾ פנימי של 24 5MHz 2% ¾ חיצוני –גביש C,RC ,או מחולל ♦ זכרון ¾ -16KB Flashתוכנית ¾ 256 +1024 –Ram ♦ מתח הפעלה ¾ 2 7 3 6v 2.7-3.6v http://site.2all.co.il/hayun/ 2 מאפיינים Smallest ♦ 3.6v עד2.7v ¾ מתח עבודה (P0-8,P1-8,P2-8,P3-5 P0 8 P1 8 P2 8 P3 5)I/O פיני פורט29 – פינים32 ¾ Hi h speed High d 8051 µc core ♦ מההוראות מתבצעות במחזור אחד או שניים מחזורי70% ¾ מכונה (בת רMega Instr בתדר Instruction ction Per Second) 25 MIPS ¾ עד 25MHz http://site.2all.co.il/hayun/ 3 אבי חיון ויואל כהן Configuration http://site.2all.co.il/hayun/ 4 אבי חיון ויואל כהן Crossbar ♦ חלק מהפורטים עוברים דרך מטריצת חיבורים הניתנים לתכנות ע"י מילות בקרה אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 5 תכנות PORT I/O A ♦ כל I/O PORTיכול להיות מתוכנת ל: ¾ ¾ ¾ ¾ Open collector Push- pull Push עם נגד pull-upפנימי ) הערה :לכל הפורטים( כניסה אנלוגית אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 6 נתונים טכניים של PORT I/O ♦ ניתן להגיע לזרם מוצא במצב 1לוגי ל10mA- IOH=10mA OH 10 A ♦ במצב 0ללוגי זרם מוצא עד 25 A 25mA IOL=25mA אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 7 חיבור לרכיבים הפועלים במתח 5v ♦ פורט של המעבד מסוגל לעמוד במתח של , 5vלכן פורט המשמש ככניסה מקבל את הרמות הלוגיות הנדרשות כאשר הוא עובד עם רכיבי 5V ♦ פורט המשמש כמוצא מספק קרוב ל 0v-במצב 0לוגי ו 3v-במצב 1לוגי ,לכן צריך לבדוק אם הרכיבים של 5vעומדים בתנאים הלוגים ובחסינות לרעש. ♦ במקרה ולא ניתן לתאם בין המעבד של 3vלבין רכיבי 5vע"י חיבור במצב open ) collectorקיימת אפשרות זו ע"י תכנות( עם נגד חיצוני אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 8 Oscillators ♦ ניתן לתכנות ע"י אוגרי בקרה ¾ ¾ ¾ CKפנימי או חיצוני חיצוני ש ,נגד-קבל ,קבל או מחולל ח צונ גביש חיצוני – גב חבור ח צונ CKפנימי ניתן לחלוקה ע"י מילת בקרה אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 9 On – Chip Debug תקשורת עם הרכיב ע"י 2חוטים ) (C2להורדה והרצת התוכנית ♦ ק ♦ אפשרות להרצה בודדת – Single Step ♦ נקודות עצירה – Break Points אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 10 כרטיס הפיתוח C8051F310-DK - LEDהמחובר לP3.3 - חיבור לפורטים לחצן המחובר לP0.7 - חיבור טורי משטח עבודה MAX232 חיבור לDEBUG- מייצב ל3V- מעבד אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 11 סכימה חשמלית של הכרטיס 12 בניית פרויקט בעזרת תוכנות Ride7וConfig - אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 13 הרצת תוכנית ראשונה ♦ ניסוי הדגמה ראשון עם הכרטיס ♦ קלט -לחצן ופלט – LED ♦ הלחצן וה LED -מחוברים בכרטיס ♦ נכתוב תוכנית ב C -להבהוב ה LED-כל עוד הלחצן לחוץ אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 14 שלבי בניית קובץ project .1פתיחת תוכנות הידור RIDE7ואתחול הרכיב config2 1 .2ע"י תוכנת config2נגדיר את מילות הבקרה לרכיב ,שייכתב לקובץ unit310.c .3נכתוב קובץ ב C -הכולל את הmain - 3 .4נצרף את שני הקבצים לproject - .5נבצע הידור ת ע"י ה DEBUGER -ע"י RIDE7 התוכנית נריץץ את התוכנ .6נר אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 15 תוכנית בשפת C אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 16 כתיבת פרויקט הכולל מספר קבצים ♦ הרעיון הוא לצרף קבצים קיימים המכילים פונקציות Project מכיל פונקציות Fun1_file.c Main a _file.c ec Fun1_file.h מכיל פונקציית )(Init_Device init310.c Fun2_file.c Fun2 file h Fun2_file.h מכיל הכרזה על הפונקציות והגדרת פורטים אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 17 פונקציות שונות : מכילlcd_p.h lcd p h ♦ קובץ lcd_config(); // LCD אתחול lcd_line(1,10); // 10 במיקום1 הצבת סמן בשורה lcd_string("abcd1234"); // הצגת מחרוזת במסך cursor(0); //cursor off cursor(1); //cursor on lcd_clr(); // נקה מסך lcd_display(‘x’); // הצג תו msec מכיל השהיה ללפי ל wait_msec.c it ♦ קובץ void T0_Wait_ms (unsigned int ms) cm - מכיל מדידת מרחק בultrasonic.c ultrasonic c ♦ קובץ int read_distance() (255 עד-255) PWM לפי ערךDC מכיל ויסות מהירות מנועmotor_pwm.c ♦ קובץ motor_left(int pwm) motor_right(int pwm) http://site.2all.co.il/hayun/ 18 אבי חיון ויואל כהן LCD תוכנית להפעלת #include <c8051f310.h> #include <stdio.h> // for sprintf #include "lcd_p.h" // for lcd function extern Init_Device(); // init 310 [ ]; // use for LCD & sprintf p char str[30]; main() { float x=17.5; x=17 5; Init_Device(); lcd_config(); // init LCD lcd_line(1,0); // line 1 place 0 lcd_string(" ava nagila "); lcd_line(2,0); sprintf(str,"x=%2.2f x/2=%2.2f ",x,x/2); lcd string(str); lcd_string(str); while(1); } http://site.2all.co.il/hayun/ 19 אבי חיון ויואל כהן סיביות10 ADC - ממיר אנלוגי לדיגיטלי V+ VREF Reference Voltage AIN Digital Output ADC GroundReferenced Input Signal Output = (VIN / VREF) x 2N Input Voltage Output Code (10-bit) >= VREF 1023 (0x03FF)* VREF – 1 LSB 1023 (0x03FF) ½ VREF 512 (0x0200) ¼ VREF 256 (0x0100) 0V 0 (0x0000) http://site.2all.co.il/hayun/ 20 חיבור מתח כניסה אחד המיוחס לאדמה אבי חיון ויואל כהן כניסה דיפרנציאלית V+ VREF AIN+ + -1V - 1V AIN- Digital Output ADC 2V Input Voltage Output Code (10 bit sign (10-bit, i extended) t d d) >= VREF 511 (0x01FF)* VREF – 1 LSB 511 (0x01FF) ½ VREF 256 (0x0100) 0V 0 (0x0000) - ½ VREF -256 (0xFF00) -VREF -512 (0xFE00) < -VREF -512 (0xFE00)* http://site.2all.co.il/hayun/ 21 ערך המידע הדיגיטלי מקבל ערכים חיובים ושלילים לפי הפרש המתחים אבי חיון ויואל כהן דיאגראמת הממיר ♦ המידע האנלוגי עובר דרך MUX 2אנלוגיים הניתנים לתכנות ע"י מילות בקרה ♦ הכניסות של ה MUX-מתחברות לפורטים שונים ,חישן טמפ' פנימי ,אדמה,VREF , VDD אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 22 דוגמא לתכנות הADC - אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 23 זמנים בADC - ♦ התחלת המרה ע"י דגל או אחד הטיימרים ♦ זמן המרה שווה ל 10-פולסי שעון +זמן עקיבה אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 24 הרצת תוכנית עם ה ADC0 -לחיישן טמפ' LM35 נקבע: Configק ♦ בעזרת תוכנת g .1אפשור הממיר – Enable ADC0 .2התחלת המרה ע"י דגל AD0BUSY .3קביעת כניסות ה , ADC-כניסה חיובית ל P1.7-וכניסה שלילית לאדמה (3 של 3MHz תדר ש לעבור ת אסור ע ) ADCס של הC- שעוןן ש תדר שע קובעים ת .4ק ע .5קובעים את Vrefל(3.3v) VDD - תA אנלוגית סה P1.7אנלוג הכניסה קובעים את הכנ .6קובע ם אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 25 פונקצית הADC0- ♦ פונקציה להפעלת הממיר אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 26 משווים אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 27 היטרזיס )חשל( 4דגלים של רגיסטרים CPT0CN,CPT1CN קובעים את ההיסטרזיס ק החיובי והשלילי בערכים: 0 5mv 10mv 20mv אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 28 זמני תגובה של המשווים זמני תגובה נעים בין 100nsecועד 5200nsecתלוי במוד העבודה אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 29 טיימרים ♦ 4טימרים במצבי עבודה שונים אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 30 Timer0 and Timer1 mode0 אבל עם 16סיביות modeהמונה עובד באותה צורה ,ל ♦ בd 1 - אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 31 Timer0 and Timer1 mode2 - autoreload http://site.2all.co.il/hayun/ 32 אבי חיון ויואל כהן Only Timer0 mode3 ♦ קיים בטיימר 0בלבד 2 ,מונים של 8סיביות המופעלים ע"י TR0,TR1 אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 33 תוכנית – שימוש בטיימר להשהיה לפי msec ♦ נעבוד עם טיימר 0במוד עבודה של TMODE=0X01 16bit ♦ תדר השעון של המונה = תדר השעון מחולק ב12 - אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 34 שימוש בטיימר להשהיה של msec ♦ פונקצית השהייה בmsec - טיימר 0נטען בערך T0=-2041 כלומר 2041מחזורי שעון של 0.49usecשנותן כמעט 1msec אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 35 L293D דוחף מנוע 4.5v-36v vcc2 ♦ מתח 600mA ♦ זרם מוצא עד Vcc2 Q1 Q3 D1 D3 MOTOR Q4 Q2 D2 http://site.2all.co.il/hayun/ 36 אבי חיון ויואל כהן D4 PWM 8 Bit עבור מצב של חלוקה פי 12של תדר השעון נקבל תדירות PWM Fpwm=24.5M/(12*256)=7975Hz p ( ) אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 37 PWM קביעת http://site.2all.co.il/hayun/ 38 אבי חיון ויואל כהן PWM פונקציה ערך חיוביpwm=100 דוגמא עבור PCA0CPH0=100 sbit PHASE PHASE_MOTOR=P0^3; MOTOR=P0^3; motor(int pwm) { if(pwm>=0) { PCA0CPH0=pwm; PHASE_MOTOR=1; } else { PCA0CPH0=pwm; PHASE_MOTOR=0;; } } http://site.2all.co.il/hayun/ 39 אבי חיון ויואל כהן PWM פונקציה ערך שליליpwm= - 100 דוגמא עבור PCA0CPH0=-100=256-100=156 PCA0CPH0 100 256 100 156 sbit PHASE_MOTOR=P0^3; motor(int pwm) { if(pwm>=0) { PCA0CPH0=pwm; PHASE MOTOR=1; PHASE_MOTOR=1; } else { PCA0CPH0=pwm; PHASE_MOTOR=0; } } http://site.2all.co.il/hayun/ 40 אבי חיון ויואל כהן PWM 16 Bit נקבל תדירות PWM ל חלוקה ללא ל עבור מצב שלל תדר השעון לל Fpwm=24.5M/(65536)=373Hz אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 41 חישן אולטרסוניק SRF05 מהירות הקול באוויר היא 344m/sec :לכן הזמן שלוקח לגל הלוך וחזור 2 / 0 02/344 58 2x/v=0.02/344=58usec 1cmהוא: 1 עבור אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 42 פונקצית חישן אולטרסוניק אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 43 I2C BUS I2C=Inter Integrated Circuit Bus SDA - Serial Data line SCK - Serial Clock line : ♦ קוים :♦ קצבים Standard Mode -100Kbit/sec ¾ עד Fast Mode - 400Kbit/sec ¾ עד High-Speed Mode -3.4Mbit/sec 3 4Mbit/sec ¾ עד http://site.2all.co.il/hayun/ 44 אבי חיון ויואל כהן פרוטוקול I2C ולאחר מכן SCL התחלת התקשורת – ) SDA START(Sיורד ל ל ♦ ♦ MASTERשולח כתובת הרכיב בגודל 7סיביות +ביט ’R/W ♦ ה MASTER-מקבל אישור ACK=0מהSLAVE- ♦ ה MASTER -קורא או כותב ל SLAVE-לפי ביט שנשלח ’R/W ♦ סיום התקשורת – )SCL STOP (Pעולה ולאחר מכן SDA ♦ במידה ויש המשך תקשורת ה– MASTERשולח )Repeated START (Sr 45 דוגמאות לרכיבי I2C ♦ PCF8591 סות D/A + כניסות 4 A/Dכנ ♦ DS1621 רכיב טמפ' וטרמוסטט אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 46 RTC רכיב שעוןDS1307 47 http://site.2all.co.il/hayun/ אבי חיון ויואל כהן מבנה הרכיב אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 48 DS1307 קריאה וכתיבה מהרכיב ♦ Data Write—Slave Receiver Mode ♦ Data Read—Slave Transmitter Mode 49 http://site.2all.co.il/hayun/ אבי חיון ויואל כהן קולט ומשדרSLAVE -קריאה ♦ Data Read (Write Pointer, Then Read)—Slave Receive and Transmit 50 http://site.2all.co.il/hayun/ אבי חיון ויואל כהן שיטת התקשורת של המעבד C8051F310 ♦ ♦ ♦ ♦ טיימר 2משמש כמבוא שעון של התקשורת )אפשרי גם טיימר 0ו( 1- טיימר 3משמש לזיהוי מצב שבו SCLנמצא זמן רב במצב 0לוגי)תקוע( מלת ולפי ל שלב ל המתקבלת אחרי כלל ל ל (i t (interrupt התקשורת משתמשת בפסיקה )t 7 סטאטוס ) (SMBOCNמתקדמים לשלב הבא )מכונת מצבים( קובע פעולת הSMB - רגיסטר SMBOCFק אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 51 פרוטוקול שליחה וקבלה של המעבד (MASTER) C8051F310 ♦ MASTERשולח נתונים לSLAVE- ♦ MASTERמקבל נתונים מהSLAVE - אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 52 פונקציות לקריאה וכתיבה מהרכיב DS1307 פונקצית שליחת מידע לשעון DS1307 )void SMB_ByteWrite(unsigned char addr, unsigned char dat ♦ -addrכתובת ה RAM-הפנימי ♦ -datמידע הנשלח ל) RAM-תאריך ,שעה ,בקרה ,נתונים כללים( פונקצית קריאת מידע מהשעון DS1307 )unsigned char SMB_ByteRead(unsigned char addr ♦ -addrכתובת ה RAM-הפנימי ♦ הפונקציה מחזירה נתון מה RAM-כמו שעה ותאריך אבי חיון ויואל כהן http://site.2all.co.il/hayun/ 53
© Copyright 2024