לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה --לשאלות בנושאי טלוויזיות, מערכות קולנוע ביתי, הגברה וסאונד - אנא פנו לפורום אודיו וקולנוע ביתי -- www.fresh.co.il/f=103 תגיות פורום: פורום אלקטרוניקה - פורום חשמל - שאלות בנושאי אלקטרוניקה - תכנון מעגלים - מעגלים מודפסים - פיתוח אלקטרוני - תכנון PCB - בקרים למנועים - תאורת לדים - תכנון דימר - מודינג - Arduino - מיקרו בקרים - שליטה על תאורה - שלט רחוק - משדר FM - תאורת LED - פתרון שאלות בחשמל - אלקטרוניקה תקבילית חץ ימינה  

לך אחורה   לובי הפורומים > תחביבים > חשמל ואלקטרוניקה
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 30-06-2012, 15:36
  derey22 derey22 אינו מחובר  
 
חבר מתאריך: 16.06.06
הודעות: 14

תודה רבה לכם, בניתי קוד (נעזרתי גם באינטרנט) שאמור לשלוח/לקבל מידע מהslave.
אין לי דרך לדעת אם מיממשתי את הפרוטוקול כמו שצריך מפני שאני לא יכול לבנות מחלקה שמטפלת בכרטיסי SD כשהיא נשענת על המחלקה SPI שלא בטוח עובדת.
אשמח לעזרה

קוד:
class SPI { private: unsigned char MOSI, MISO, SCK, CS; void CS_Enable() { digitalWrite(this->CS, HIGH); } void CS_Disable() { digitalWrite(this->CS, LOW); } public: SPI(unsigned char MOSI, unsigned char MISO, unsigned char SCK, unsigned char CS) { this->MOSI = MOSI; this->MISO = MISO; this->SCK = SCK; this->CS = CS; pinMode(MOSI, OUTPUT); pinMode(MISO, INPUT); pinMode(SCK, OUTPUT); pinMode(CS, OUTPUT); } void sendData(unsigned data) { unsigned char MSB = 0x80; /*Send data from MSB to LSB. 0x80 = 10000000b. */ unsigned char i = 0; /*Loops. */ CS_Disable(); /*Activates the slave. When CS is low, the slave work. */ for (i = 0; i < 8; ++i) { if ((data & 0x80) == 0x80) { digitalWrite(this->MOSI, HIGH); } else { digitalWrite(this->MOSI, LOW); } /*Send a clock pulse.*/ digitalWrite(this->SCK, HIGH); digitalWrite(this->SCK, LOW); data = data << 1; } CS_Enable(); /*Turns off the slave. */ } unsigned char receiveData() { unsigned char MSB = 0x80; /*Receive data from MSB to LSB. 0x80 = 10000000b. */ unsigned char data = 0; unsigned char i = 0; /*Loops. */ CS_Disable(); /*Activates the slave. When CS is low, the slave work. */ for (i = 0; i < 8; ++i) { /*Clock signal start. */ digitalWrite(this->SCK, HIGH); if (digitalRead(this->MISO) == HIGH) { data += MSB; } MSB = MSB >> 1; /*Clock signal end. */ digitalWrite(this->SCK, LOW); } CS_Enable(); /*Turns off the slave. */ return data; } }; SPI tmp(2, 5, 4, 3); void setup() { Serial.begin(9600); } void loop() { tmp.sendData(0x40); Serial.println(tmp.receiveData()); }
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 14:13

הדף נוצר ב 0.06 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר