قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

hamzazayyad
:: مهندس متميز ::
تاريخ التسجيل: Aug 2005
الدولة: موزنبيق
المشاركات: 696
نشاط [ hamzazayyad ]
قوة السمعة:
قديم 02-12-2011, 12:38 PM المشاركة 17   
افتراضي



شكرا لمرورك اخي سعيد وبارك اله فيكم

اعلانات

hamzazayyad
:: مهندس متميز ::
تاريخ التسجيل: Aug 2005
الدولة: موزنبيق
المشاركات: 696
نشاط [ hamzazayyad ]
قوة السمعة:
قديم 02-12-2011, 01:07 PM المشاركة 18   
افتراضي


بـاركـ,,,ـالله لـكــ .. وزرادك مــن فضلــة أخــى الكريــــم
على اى اساس يتم اختيار عنوان الميكرو ؟ ام لكل ميكرو عنوان خاص بــة .؟

تقبل مرورى ..




السلام عليكم
شكرا لمرورك اخي ويارك الله فيكم
لا يمتلك pic micro اطراف hardware لتعين عنوان معين مثل EEPROM و I/O EXPANSION
ولكن يتم تحديد عنوان للميكروكنترولر بارسال بايت بعد ارسال امر START للميكرو بحيت انه يتكون من 7BIT والبت الثامن LSB يكون لارسال امر قراءه او كتابه
فادا كان LSB لا يستخدم في تحديد عنوان فانك تستطيع كتابه عنوانين بعدد 128 لدلك يجب ان يكون العنوان المختار بعدد زوجي
متلا 00 02 04 ..........


ولا تنسونا من صالح دعائكم

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

Eng.Thamer
:: مهندس ::
تاريخ التسجيل: May 2012
المشاركات: 9
نشاط [ Eng.Thamer ]
قوة السمعة:
قديم 21-05-2012, 11:21 AM المشاركة 19   
افتراضي ربط pic microcontroller باخر باستخدام I2C PROTOCOL


شكرا جزيلاً hamza zayyad وسدد الله خطاك

موضوع شيق جداً ومفيد ولكني قمت بتجربة برنامجي الماستر والسليف على برنامج البروتس ولكن يبدو أن هناك خطأ ما ارجو من سيادتكم اعادة تحميل البرنامج لأن المرفق على الربيد شير لا يعمل (معطل) لبرنامج المحاكاة

وكل التقدير والاحترام


Eng.Thamer
:: مهندس ::
تاريخ التسجيل: May 2012
المشاركات: 9
نشاط [ Eng.Thamer ]
قوة السمعة:
قديم 22-05-2012, 06:21 PM المشاركة 20   
افتراضي


سيد hamzazayyad الرجاء الرد هل يمكن الحصول على الرابط السابق المرفق على الربيد شير لملف البروتس (لأن الملف الرمفق معطل ) ام لا وذلك للضرورة

ودمتم


Eng.Thamer
:: مهندس ::
تاريخ التسجيل: May 2012
المشاركات: 9
نشاط [ Eng.Thamer ]
قوة السمعة:
قديم 22-05-2012, 06:23 PM المشاركة 21   
افتراضي


اليوم اضافه البرنامج مع البروتوس على الوصله التاليه

https://rapidshare.com/files/4378284...ster_slave.rar






ولا تنسونا من صالح دعائكم
هذا الرابط لا يعمل


asrock
:: مهندس ::
تاريخ التسجيل: Jul 2010
الدولة: jordan
المشاركات: 28
نشاط [ asrock ]
قوة السمعة:
قديم 01-05-2013, 11:32 PM المشاركة 22   
افتراضي


الله يعطيكن العافية

بس التجربة لم تنجح معي , نفس المثال و نفس الكود ع البروتس!!!

ياريت اي حدا من الخبراء يقدر يفيدنا بهالخصوص
او الاستاذ hamzazayyad يرجع يرفعلنا المثال لان الرابط معطل (


hamzazayyad
:: مهندس متميز ::
تاريخ التسجيل: Aug 2005
الدولة: موزنبيق
المشاركات: 696
نشاط [ hamzazayyad ]
قوة السمعة:
قديم 12-07-2015, 01:43 PM المشاركة 23   
افتراضي


رابط التحميل
http://www.4shared.com/rar/cFDAGt4Ic...ter_slave.html


rashad shubita
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2014
الدولة: Palestine
المشاركات: 80
نشاط [ rashad shubita ]
قوة السمعة:
قديم 03-09-2015, 06:29 PM المشاركة 24   
افتراضي


السلام عليكم :
شكرا على مجهودك الرائع وان شاء الله في ميزان حسناتك
عندي سؤال انا عملت هاد البرنامج ب MPLAB X IDE بس مش عم ينفع اذا ممكن مساعده اذا فيه بعض الاخطاء ,نوع المتحكم pic16lf1783 وبتردد 4mhz وشكرااا .
_____
هاد الجزء الخاص ب I2C protocol :

////////////////////////////////////////////////////////////////////////////////
void I2C_init(void);
void I2C_Start(void);
void I2C_Stop(void);
void I2C_Repeted_Star();
unsigned char I2C_Write(unsigned char DAT);
unsigned char I2C_Read(unsigned char ack);
unsigned char I2C1_Bus_IsFree();
////////////////////////////////////////////////////////////////////////////////

void I2C_Init()
{
TRISCbits.TRISC3 = 1; //make C3 input
TRISCbits.TRISC4 = 1; //make C4 input
APFCONbits.SCKSEL = 0; //SCL is on pin RC3
APFCONbits.SDISEL = 0; //SDA is on pin RC4
INTCON = 0xC0; //Enables all active interrupts & all active peripheral interrupts
PIE1bits.SSP1IE = 1; //Enables the MSSP interrupt
PIE2bits.BCL1IE = 0; //Disables the MSSP Bus Collision Interrupt it flag BCL1IF ,
SSPADD = 0x09; //For 100k clock rate
SSPSTATbits.SMP = 1; //Slew rate control disabled
SSPCON1 = 0x38; //Enables the serial port(SSPEN) and configures the SDA and SCL pins & Enable clock
//I2C Master mode, clock = FOSC / (4 * (SSPADD+1))=> 4000000/((9+1)*4) = 100khz
SSPSTATbits.CKE = 0; //Disable SMBus specific inputs
SSPCON3bits.PCIE = 1; //Enable interrupt on detection of Stop condition
SSPCON3bits.SCIE = 1; //Enable interrupt on detection of Start or Restart conditions
SSPCON3bits.SDAHT = 0; //Minimum of 100 ns hold time on SDA after the falling edge of SCL
PIR1bits.SSP1IF = 0;

}
////////////////////////////////////////////////////////////////////////////////
void I2C_Start()
{
SSPCON2bits.SEN = 1;
while(PIR1bits.SSP1IF == 0);
PIR1bits.SSP1IF = 0;
}
////////////////////////////////////////////////////////////////////////////////
unsigned char I2C_Write(unsigned char DAT)
{//0
SSPBUF=DAT;
while(PIR1bits.SSP1IF == 0);
PIR1bits.SSP1IF = 0;

return ACKSTAT; // 0 there is ACK , 1 NACK,
}
////////////////////////////////////////////////////////////////////////////////
unsigned char I2C_Read(unsigned char ack)
{//1
unsigned char DA1;
if(SSPCON1bits.SSPOV==1) // if previous data had not been read from the SSPBUF so we must read it;
DA1=SSPBUF;

SSPCON2bits.RCEN=1;
while(SSPSTATbits.BF == 0);
//while(PIR1bits.SSP1IF == 0); //wait to complet receive data ,
PIR1bits.SSP1IF = 0;
DA1=SSPBUF; //raed data, to receive more byte send ACK (SDA=ACKDT=0)
if(ack == 1)SSPCON2bits.ACKDT=0; //to receive more byte send ACK (SDA=ACKDT=0)
else SSPCON2bits.ACKDT=1; //to stop receive byte send NACK (SDA=ACKDT=1)
SSPCON2bits.ACKEN=1;
while(PIR1bits.SSP1IF == 0); //wait to end ack,
PIR1bits.SSP1IF = 0;

return DA1;
}

////////////////////////////////////////////////////////////////////////////////
void I2C_Stop()
{
SSPCON2bits.PEN=1;
while(PIR1bits.SSP1IF == 0);
PIR1bits.SSP1IF = 0;
}
////////////////////////////////////////////////////////////////////////////////
unsigned char I2C_Bus_Is_Free()
{
if(SSPSTATbits.P == 0 && SSPSTATbits.S ==1 ) return 1; //the bus is busy now,
return 0;
}
////////////////////////////////////////////////////////////////////////////////
void I2C_Repeted_Star()
{
SSPCON2bits.RSEN=1;
while(PIR1bits.SSP1IF == 0);
PIR1bits.SSP1IF = 0;
}



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 01:41 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)