الصبان على تعليمات البرمجة (ج) لPIC16F877!

R

reddster

Guest
مرحبا للجميع!

أنا طالب يمر المشروع الذي ينطوي على تفاعل
من PIC16F877 إلى مرحلة تأمين الجهاز حلقة (ADF4360 -

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="هادئ" border="0" />

باستخدام الصبان.

أساسا ، ولست بحاجة لارسال ، عن طريق تشريع التمييز الجنسي ، 3 دفعات من 24 بت ل
الجهاز التهيئة لها.انا قلقة من ان كنت قد تفوت على بضعة اسطر
من رمز لأنني لا يمكن الكشف عن إشارة مركز
/ سيك
/ من مركز
/ سيك
/ دبوس (RC3).
أيضا ، وأنا أفعل ذلك بشكل صحيح لinitialisation من SSPSTAT ، SSPCON
والجزء ارسال؟

وأنا أقدر تماما مساعدتكم!

هذا هو قانون بلدي جيم في اللغة :# تشمل <pic1687x.h>
# تشمل "delay.c"باطلة الرئيسي () (بورتا = 0x00 ؛
PORTB = 0x00 ؛
PORTC = 0x00 ؛
PORTD = 0x00 ؛
بورت = 0x00 ؛

TRISC = 0b00010000 ؛ / / RC4 = الصبان في البيانات
TRISD = 0x00 ؛
TRISB = 0b00000001 ؛ / / RB0 = مدخلات
TRISA = 0x00 ؛
TRISE = 0x00 ؛/ / ةظحلام التهيئة
/ / مكافحة س = 0011 0000 0000 0000 0111 1001
/ / التحكم مزلاج = 0000 1111 1111 0001 0000 0100
/ / ن مكافحة = 0000 0000 1011 0100 0000 0010SSPSTAT = 0b01000000 ؛
SSPCON = 0b00100010 ؛

SSPBUF = 0b00110000 ؛ / / آر العداد
SSPBUF = 0b00000000 ؛
SSPBUF = 0b01111001 ؛
RA5 = 1 ؛ / / لو عالية لنقل البيانات من تسجيل التحول إلى مزلاج
RA5 = 0 ؛

SSPBUF = 0b00001111 ؛ / / مراقبة
SSPBUF = 0b11110001 ؛
SSPBUF = 0b00000100 ؛
RA5 = 1 ؛ / / لو عالية لنقل البيانات من تسجيل التحول إلى مزلاج
RA5 = 0 ؛

DelayMs (20) ؛ / / تأخير بين التحكم ومكافحة ن

SSPBUF = 0b00000000 ؛ / / ن عداد
SSPBUF = 0b10110100 ؛
SSPBUF = 0b00000010 ؛
RA5 = 1 ؛ / / لو عالية لنقل البيانات من تسجيل التحول إلى مزلاج
RA5 = 0 ؛في حين (1) (

إذا كان (RB0 == 1) / / عندما RB0 عالية ، سحب م دبوس العالية لتشغيل ةظحلام
RC1 = 1 ؛
إذا كان (RB0 == 0) / / عندما RB0 منخفضة ، وسحب منخفضة م دبوس لإيقاف ةظحلام
RC1 = 0 ؛

)
) / / نهاية الرئيسيةشكرا مرة أخرى!

 
أنا لم تستخدم MMSP 877s ولكن اعتقد انكم بحاجة الى فحص لجعل SSPBUF متأكد أفرغ قبل كتابة البايت التالي.وapnote يقول شيئا عن فحص WCOL.
[تحرير] فقط وجدت هذا البرنامج التعليمي لائق على موقع رقاقة http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf وتقول تحتاج إلى التحقق من العلم الاحتياطي الكامل وقراءة العازلة حتى لو كان فقط كتابة البيانات .[/ تحرير]

كيف يصوم ةظحلام الجهاز الخاص بك؟كنت قد حددت الساعة الصبان في Fosc/64 وفي 20MHz مدار الساعة ، وتقوم بتشغيل فإنه في 20/65 ميغاهيرتز.أو 3.2 في اأمريكي بت.قد تحتاج إلى فرقعة بت الصبان إذا كان هذا هو سريع جدا.Bitbanged الصبان جدا من السهل جدا.إلا إذا كنت بحاجة لسرعة الجهاز MSSP ، فما استقاموا لكم فاستقيموا بت دويا الصبان على أي حال منذ أ) من بروتوكول بسيط جدا وب) انا افضل لانقاذ MSSP يستخدم لرفع مستوى الأداء (مثل إدخال / إخراج تسلسلية أو I2C).

فيل

 
أوه.. شكرا جزيلا لردكم والارتباط.. لذلك ، أساسا ، ولست بحاجة للقيام دمية قراءة لمسح SSPBUFF قبل أن أتمكن من القيام المقبل يحيل؟أيضا ، فيما يتعلق بضرورة التحقق من حالة العازلة قبل trnsmitting البايت التالي ، وأنا التي كنت في حيرة من بت بحاجة إلى التحقق.هل هو WCOL أو SSPOV.

-------------------------------------------------- -------------------------------------
هنا مقتطفات من ورقة البيانات PIC16F877 فيما يتعلق بت 2 :

WCOL : (ماجستير في وضع) 1 = والكتابة إلى SSPBUF كان حاول في حين أن الظروف لم تكن صالحة I2C
0 = لا يوجد تصادم

SSPOV : (وضع الصبان) 1 = بايت الجديدة الواردة في حين SSPUF حائزا على بيانات سابقة.البيانات في SSPSR يضيع على تجاوز.في وضع الرقيق ، يجب على المستخدم قراءة SSPBUF ، حتى وإن اقتصرت على نقل البيانات ، لتفادي الفيضانات.ماجستير في واسطة ، وتجاوز بعض الشيء لم يتم تعيين ، لأن كل العملية التي بدأتها في الكتابة إلى سجل SSPBUF.(يجب أن يتم مسح في مجال البرمجيات).
0 = لا تجاوز
-------------------------------------------------- -------------------------------------

من الوصلة التي قدمتها فيل ، وأنا أفهم الحاجة إلى القيام دمية أحيل بعد كل قراءة.ولكن كيف أعرف عندما أحيل يتم فعليا قبل أن أتمكن من أداء دمية تقرأ؟

أشكركم على مساعدتكم النوع!

 
لا ، لديك لحلقة انتظار العازلة العلم الكامل ، ثم القيام للقراءة.

 
الشكر للمعلومات!

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="سعيد للغاية" border="0" />

لذلك ، وأنا أفعل ذلك الحق في البرمجية التالية؟# تشمل <pic1687x.h>
# تشمل "delay.c"

dummy_read_byte شار ؛

spi_send باطلة (تشار) ؛

باطلة الرئيسي () (بورتا = 0x00 ؛
PORTB = 0x00 ؛
PORTC = 0x00 ؛
PORTD = 0x00 ؛
بورت = 0x00 ؛

TRISC = 0b00010000 ؛ / / RC4 = الصبان في البيانات
TRISD = 0x00 ؛
TRISB = 0b00000001 ؛ / / RB0 = مدخلات
TRISA = 0x00 ؛
TRISE = 0x00 ؛SSPSTAT = 0b01000000 ؛
SSPCON = 0b00100010 ؛

dummy_read_byte = SSPBUF ؛ / / لا دمية قراءة

spi_send (0b00110000) ؛
spi_send (0b00111110) ؛
spi_send (0b10100011) ؛

)
) / / نهاية الرئيسيةspi_send باطلة (البيانات تشار) (

كثافة العمليات ط = 0 ؛
dummy_read شار ؛
bf_status شار ؛

SSPBUF = البيانات ؛ / / ارسال بايتبينما (ط! = 1) (/ / لا مخرج إلا حلقة فرنك بلجيكي بت = 0
bf_status = SSPSTAT & 0x01 ؛ / / معرفة ما اذا كان فرنك بلجيكي البت 0
إذا كان (bf_status == 0x00)
ط = 1 ؛
)

dummy_read = SSPBUF ؛ / / قراءة وهمية

)Thanx مقدما!

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="سعيد للغاية" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top