C8051F310 יואל כהן ואבי חיון : מנחים

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‬‬