سلام به دوستان
برای اینکه ds1307 با lpc1768 راه اندازی کنم چه کاری باید انجام بدم ؟؟
سخت افزار و نرم افزار
تشکر.
سلام به دوستان
برای اینکه ds1307 با lpc1768 راه اندازی کنم چه کاری باید انجام بدم ؟؟
سخت افزار و نرم افزار
تشکر.
به نام آن کسی که به من بال پرواز داد تا اوج بگیرم
از rtc میکروکنترلر هم میتوانید استفاده کنید نیازی به استفاده از این ای سی نیست .
سلام همین طور که آقای Ma3ood فرمودند RTC میکرو خیلی بهتره و فرقی با ds1307 هم نداره ولی اگه باز هم مایل به کار کردن با 1307 هستید تو همین فروم فایل I2C و ds1307 رو گذاشتم.
دوستان عزیز تشکر بابت جوابتون
ما با داخلی راه میندازم !
ولی هر 2 هفته 3 هفته عقب میفته
میخوام کار دقیقتری ارائه بدم و چی دیوایسی یهتر از ds1307
ما الان یک نمونه سورس برای lpc1768 میخوام به همراه شماتیک چون منطق های ولتاژ باهم فرق دارن ! 3.3V , 5 V
به نام آن کسی که به من بال پرواز داد تا اوج بگیرم
سلام دوست عزیز
حواست به این باشه که1307 در اصل برای کار با 5 ولت ساخته شده، اما اگه شما بهش 3.3 ولت بدی هم کار میکنه ولی همین که باتری بکاپ رو بهش وصل کنی میره تو کما، قانون ولتاژ باتری بکاپ به تفصیل تو دیتاشیت نوشته شده، دلیل این تو کما رفتن اینه که ولتاژ بکاپ رو باید بیاری پایین وقتی داره با 3.3 تغذیه کار میکنه، فقط هم با تقسیم مقاومتی میتونی این کارو بکنی چون تو دیتاشیت اکیدا گفته که دیود تو راه باتری بکاپ نذارین و من هم امتحان کردم و جواب نمیده.
در مورد سورس lpc من ندارم، با st کار میکنم، اگه میتونی تغییر بدی سورس خودمو برات بذارم (تو سورس من از خود i2c استفاده نکرده و رو gpio معمولی شبیه سازی شده) خوب و کامله.
شماتیکشم که تو دیتا شیت هست دیگه همونو ببند فقط با تقسیم مقاومتی باتری بکاپو به 2.8 ولت برسون.
موفق باشی
مهندس جعفری تشکر بابت جواب خوب و مفیدتون
من خلاصه کارو میگم اگه مشکل داره بهم بگین
الان چیزی که فرمودین اینه که 3.3 نمیتونم بدم اگه بدم به دلیل ولتاژ اضافی باتری میره تو کما و ولتاژ باتری هم نمیشه با دیود کاهش داد
در کل من بگم
من به DS ولتاژ 5 ولت میدم ولی منطق ولتاژ 1768 3.3 هست
پس گفتم تقسیم بزنم چون ارتباط I2C نمیشه اینکار انجام داد ولی برای خط کلاک مشکل نداره و دیتا رفت و برگشته مشکل داره
پس برای سخت افزار اومدم برای رفت از 1307 به 1768 3 تا دیود گذاشتم و برای برگشت از 1768 به 1307 یک دیود ژرمانیموم گذاشتم که کاهش کمتری داشته باشیم ! چون قبلا تست کردم که 3 ولت هم قبول میکنه
الان اولین بحثی که هست سخت افزار که شما میگین تو دیتاشیت هست ، کدوم صفحه میشه ؟
و نرم افزار ، منم همین کار انجام دادم از sT به LPC تغییر دادم که دیتا نمی فرسته !
نمیدونم مشکل از سخت افزاره یا نرم افزار چون به هیچ کدوم اعتماد ندارم
اگه برای شما امکان داره سورس قرار بدین ببینم مثل همینه یا نه
مهندس بازم ممنونم.
به نام آن کسی که به من بال پرواز داد تا اوج بگیرم
خواهش میکنم.
نه دیگه اون تقسیم مقاومتی که گفتم بذار سر راه باتری بکاپ واسه اینه که بتونی تغذیه رو 3.3 ولت بدی و نره تو کما. اینجوری راحت مستقیم پایه هارو وصل کن به میکرو.
صفحه اول دیتاشیت که پیوست کردم.
اون عکس هم مداریه که من با 3.3= vcc ازش استفاده میکنم (به تقسیم مقاومتی تو راه باتری بکاپ دقت کن)
البته اینم بگم که ds1307 مدل 3.3 ولت با نام ds1339 اگه اشتباه نکنم داره که هم گرون تره هم کمیابه هم وقت نشد برم سراغش.
کتابخونه هم پیوست شد.
مهندس جان تشکر واقعا اطلاعاتتون مفید بود
اجراء میکنم و نتیجه بهتون میگم.
موفق و پیروز باشید
به نام آن کسی که به من بال پرواز داد تا اوج بگیرم
سلام مهندس جعفری
آقا ما اینو تست گرفتیم ولی نتیجه کار به این صورت شد :
یک مقدار ثابت مفرسته
تو تابع read گیر میکنه و بیرون نمیاد !
اگه میشه میتونین یک سورس اصلی بهم بدین ببینم چطور نوشتین ؟
به نام آن کسی که به من بال پرواز داد تا اوج بگیرم
سلام
شما از کدوم برنامه i2c مگه استفاده می کنید؟
ارسال و دریافت با i2c - ایـــــــــران میـــــــکرو ™
سلا آقا مهدی ارادتمند
هدری که آقای جعفری قرار دادن که برای ds1307 هستش البته برای st
تو تابع read میمونه نمیدونم چرا
و یک مقدار ثابت میده
به نام آن کسی که به من بال پرواز داد تا اوج بگیرم
سلام من این کد رو به 1768 تبدیل کردم ولی تو تابع read_td می مونه
http://dc527.4shared.com/download/aj...64858-b2a52731
آها فکر کردم با سمپل i2c برد لندتایگر تست کردید. چرا از اون استفاده نمی کنید؟
از تابع read رد میشه یا توش گیر میکنه؟ چون i2c تو هدری که برات فرستادم شبیه سازیه اصلا نباید گیر کنه.
(شما اون define های اول فایل هدر رو برای lpc تغییر دادید؟)
میشه بگی چه مقدار ثابتی پس میده؟
نه define ها رو تغییر ندادم
بعد از تابع Read_TD(DATE_TypeDef*); خط بعد برنامه هیچ وقت اجرا نمیشه
مهندس جعفری main بالا یک نگاه بنداز
اقا مهدی شما هم یک بررسی بکن
تشکر
به نام آن کسی که به من بال پرواز داد تا اوج بگیرم
کدوم بالا داش پیمان؟
این؟
شما اون define ها و توابع inline اول برنامرو تغییر دادی برا lpc؟سلام من این کد رو به 1768 تبدیل کردم ولی تو تابع read_td می مونه
http://dc527.4shared.com/download/aj...64858-b2a52731
این:
وکد:#define SCKREAD ((GPIOB->IDR>>6)&0x01) #define SDAREAD ((GPIOB->IDR>>7)&0x01)
کد:/* Private function prototypes -----------------------------------------------*/ __inline static void SDA_out(void) { vu32 temp = GPIOB->CRL; temp &= ~((vu32)0xF<<28); temp |= ((vu32)0x01<<28); GPIOB->CRL = temp; } // Drive DATA pin (output) __inline static void SDA_in(void) { vu32 temp = GPIOB->CRL; temp &= ~((vu32)0xF<<28); temp |= ((vu32)0x04<<28); GPIOB->CRL = temp; GPIO_SetBits(GPIOB,GPIO_Pin_7); } // Release DATA pin (input) __inline static void SCK_out(void) { vu32 temp = GPIOB->CRL; temp &= ~((vu32)0xF<<24); temp |= ((vu32)0x01<<24); GPIOB->CRL = temp; } // Drive CLK pin (output) //__inline static void SCK_in(void) { vu32 temp = GPIOB->CRL; temp &= ~((vu32)0xF<<24); // temp |= ((vu32)0x04<<24); GPIOB->CRL = temp; } // Release CLK pin (input) __inline void SCKHIGH(void) {SCK_out();GPIOB->BSRR = (1<<6);} __inline void SCKLOW(void) {SCK_out();GPIOB->BRR = (1<<6);} __inline void SDAHIGH(void) {SDA_out();GPIOB->BSRR = (1<<7);} // DATA pin high __inline void SDALOW(void) {SDA_out();GPIOB->BRR = (1<<7);} // DATA pin low}
سلام
اره همین کد میگم
اره همه بخش ها تغییر دادم
اگه میشه کد بررسی کنید
تشکر
به نام آن کسی که به من بال پرواز داد تا اوج بگیرم