نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
مهدی دمیرچیلو

آموزش پروژه محور آرم lpc1768 مبحث تایمر کانتر

به نام خدا : تو این مطلب از سری مطالب آموزش پروژه محور آرم lpc1768 مبحث تایمر کانتر میخوام یه 7 تا پروژه قرار بدم و با توضیح دادن پروژه ها یه جورایی مبحث تایمر کانتر lpc1768 رو توضیح بدم، تو هر پروژه یه ویژگی تایمر کانتر رو آموزش میدم، تقریبا میشه گفت از تمام امکانات تایمر کانتر تو این 7 تا پروژه من استفاده کردم ( تا جایی که ذهنم میرسید مثال و پروژه نوشتم و تست عملی کردم )، در ضمن فیلم پروژه ها رو هم قرار میدم، مواردی که عملکرد و شماتیک مدار چند پروژه یکسان باشد، فقط یه فیلم قرار میدم، برای این مطلب آموزش و پروژه های تایمر آرم، 1هفته وقت گزاشته شده و رفتم خودم یاد گرفتم و در عمل تست کردم و دارم به اشتراک میزارم، لطفا کپی نکنید.
آموزش پروژه محور آرم lpc1768 مبحث تایمر کانتر

آموزش پروژه محور آرم lpc1768 مبحث تایمر کانتر

 
لیست پروژه های این مطلب :

  1. پروژه LED چشمک زن با lpc1768 و پایه خروجی MAT
  2. پروژه LED چشمک زن با lpc1768 و وقفه ( بدون استفاده از پایه خروجی MAT )
  3. پروژه LED چشمک زن با lpc1768 و تغییر زمان هر کلاک TC ( از خروجی MAT استفاده شده )
  4. پروژه تولید فرکانس های مختلف با lpc1768 ( تو این پروژه، فرکانس 10کیلو، شما هر قدر دوست داشتی تولید کن ^_^، حداکثر تا 25 میگ میتونید تولید کنید، حواستون باشه به این مورد )
  5. پروژه استفاده از مد شمارنده تایمر/کانتر lpc1768 ( مقدار TC همین طوری برا خودش زیاد نمیشه دیگه، افزایشش دست ماست!!! )
  6. پروژه استفاده از پایه ورودی CAP در lpc1768 ( محاسبه زمان بین دو لبه بالا رونده یه دکمه/باتن/کلید/هر چی اسمشو میزارید)
  7. پروژه نوشتن تابع Delay به کمک تایمر lpc1768

 
پیشنیاز های این 7 تا پروژه :

  1. تغییر و یا خوندن یه بیت از یک متغیر
  2. مطلب جلسه 1و2 آموزش LPC176x/5x ( لینکشو نمیزارم، خودتون برید پیداش کنید ^_^ )
  3. مطالب ارتباط سریال lpc1768 ( حسش نی لینکاشو بزارم )

 

پروژه LED چشمک زن با lpc1768 و پایه خروجی MAT – پروژه 1

تو این پروژه همون طور که میدونید رجیستر شمارنده تایمر (TnTC) میتونه تا 0xFFFF FFFF بشموره، و یه رجیستر دیگه داریم به نام رجیستر برابری (MRn) که میتونیم مقدار بهش بدیم(مقدارش ثابته و تغییر نمیکنه)، به کمک رجیستر (Match Control Register (TnMCR میتونیم تعیین کنیم که در صورت برار شدن این دو رجیستر با هم چه اتفاقی بیوفته ( وقفه رخ بده، مقدار TC ریست بشه، TC و PC متوقف بشن و مقدار [TCR[0 صفر بشه )؛ و یه ریجستر دیگه با نام (External Match Register (TnEMR که کنترل میکنه یه سری پایه میکرو کنترلر رو، حالا چطوری؟ برا هر تایمر حداقل 4 تا پایه رو میکرو داریم(برا تایمر2، 6پایه داریم)، که یکیش برا “برابری0” هستش و یکی برا “برابری1” و اسم این پایه به فرم MATn.m هستش (که n شماره تایمر هستش(0تا3) و m شماره “برابری” هستش)؛ میتونیم تعیین کنیم که در صورت برابر شدن این دو با هم، چه بلایی سر این پایه به صورت خودکار بیاد.
شماتیک پروژه : یه LED به پایه P3.25 وصل کنید ( مقاومت 1کیلو فراموش نشه ^_^ )
عکس پروژه در عمل : تو عکس زیر، اون LED متصل به P3.26 رو همین طوری گزاشتم، نقش هویج داره، اون سیم های اضافه هم برا بحث ارتباط سریال هستش، تو این پروژه کاربردی نداره ولی خب چون تو پروژه های بعدی ممکنه مورد نیاز بشه، گفتم بزار باشه، بل کسی کاری ندارن که ^_^
آموزش پروژه محور آرم lpc1768 مبحث تایمر - پروژه 1
کد پروژه : 

خط 6 : نقش پایه P3.25 رو به MAT0.0 تغییر دادم ( این پایه مربوطه به رجیستر TnEMR، که در صورت برابر شدن دو رجیستر فوق، این پایه وضعیتش تغییر میکنه با توجه به …. )
خط 8 : از اونجایی که فرکانس میکرو 100میگ هستش و تقسیم فرکانسی تایمر0 برابر 4 هستش و لذا فرکانس تایمر 0 برابر 25 میگ هستش( قبلا نحوه تعیین تقسیم فرکانسی امکانات جانبی میکرو-پریفرال- رو توضیح دادم )، لذا  هر 25،000،000 تا کلاک تایمر میشه 1 ثانیه؛ من مقدار رجیستر “برابری0” رو گزاشتم 25،000،000 تا وقتی شمارنده تایمر(TnTC) به این مقدار رسید اتفاق مد نظرم رخ بده.(میخوام یه LED رو هر 1 ثانیه یه بار خاموش روشن کنم) – این طوری 1 ثانیه LED روشن میشه و 1 ثانیه خاموش.
خط 10 : اومدم گفتم در صورت برابر شدن رجیستر “برابری0” با T0TC بیا مقدار T0TC رو 0 کن.( میخوایم LED رو 1ثانیه یبار روشن خاموش کنم دیگه، پس ریجستر شمارنده وقتی به 1 ثانیه یا همون 25000000 تا کلاک رسید یا همون مقدار رجیستر “برابری0” باید مقدار T0TC ریست بشه تا این عمل روشن خاموش شدن LED یه ثانیه یه بار انجام بشه. )
خط 11 : این تابع، تعریفش به صورت زیر هستش، کار این تابع ریست کردن شمارنده و توقف ریست شدن هستش ( چون متوقفش نکنی تا قیامت همین طوری هی شمارنده رو ریست میکنه )

خط 12 : فعال کردن شمارنده برای شمارش.

خط 14 : گفتم در صورت برابر شدن MR0 با T0TC بیا پایه ( P3.25 ( MAT0.0 رو مقدارش رو برعکس کن، اگه 0 هستش، 1 کن و اگه 1 هستش، 0 کن.
فیلم پروژه : 
http://www.aparat.com/v/5Alua

 

پروژه LED چشمک زن با lpc1768 و وقفه – پروژه 2

خب تو پروژه قبلی دیدید که اومدیم و از رجیستر T0EMR برا روشن خاموش کردن خودکار یه LED استفاده کردیم، حالا تو این مطلب میخوایم یکم لقمه رو دور دهنمون بپیچونیم(فقط برای یادگیری ^_^)، تو این پروژه دیگه از این رجیستر EMR استفاده نمیکنم و به جاش میام از وقفه استفاده میکنیم ( وقفه برابر شدن T0TC با MR0 ) و داخل تابع وقفه میایم یه LED رو روشن خاموش میکنیم.
شماتیک و فیلم و عکس پروژه در عمل : مثل پروژه 1
کد پروژه : این از کد پروژه ( که LED متصل به پایه P0.25 رو روشن خاموش میکنیم هر 1ثانیه یکبار )

تو این کد کار خاصی نکردم، فقط در خط 25ام اومدم وقفه “برابری0” رو فعال کردم؛ داخل وقفه هم LED رو تاگل میکنم.
توجه : عملگرد این پروژه و شماتیکش دقیقا مثل پروژه قبلی هستش، فقط نحوه نوشتن کدش یکم فرق داشت.
 

پروژه LED چشمک زن با lpc1768 و تغییر زمان هر کلاک TC – پروژه 3

خب تو این پروژه اومدم، مدت زمان هر شمارش TC رو تغییر دادم، همون طور که گفتم در حالت عادی در هر بار کلاک تایمر، مقدار TC یه واحد زیاد میشه، حالا میتونیم زمان هر کلاک TC رو دستکاری کنیم به کمک رجیستر PR ^_^
شماتیک، عکس در عمل و فیلم پروژه : مثل پروژه 1و2
کد پروژه : خب این پروژه هم مثل دو پروژه قبلی هستش ولی روش نوشتن کد پروژه فرق داره.

خب همون طور که میبینید یه تابع جدید با نام getPrescalar_1us اومدم به کتابخونه تایمر ام اضافه کردم، کد این تابع به صورت زیر هستش :

کار این تابع اینه : فرکانس تایمر رو به دست میاره و تقسیم بر 1M میکنه و میشه تعداد کلاک برای 1 میکرو ثانیه و بعد اینو ارسال میکنه – حالا اگه این مقدار رو به رجیستر PR بدیم، زمان هر 1واحد افزایش TC برابر 1میکرو ثانیه میشه.
حالا در پروژه من مقدار MR0 رو 100000 دادم، و یعنی هر موقع TC یه MR0 برسه، TC ریست میشه(0 میشه) و وقفه رخ میده، و این یعنی 1000000 تا 1میکرو ثانیه و میشه 1000 میلی ثانیه یا همون 1 ثانیه – لذا LED ما هر 1 ثانیه یه بار خاموش روشن میشه.
بقیه موارد مثل پروژه های قبلی هستش، تنها کاری که تو این پروژه کردیم اینه که زمان هر واحد افزایش TC رو تغییر دادیم – فقط همین.
 

پروژه تولید فرکانس های مختلف با lpc1768  – پروژه 4

تو این پروژه به کمک پایه خروجی MAT و یکم دستکاری MR0 و دادن مقادیر کم بهش، فرکانس های مختلف تولید میکنیم، من تو این پروژه فرکانس 10 کیلو تولید کردم، مقدار رجیستر MR0 برا فرکانس 1 کیلو هم در داخل کد پروژه، مقدارش رو قرار دادم، من با این روش فرکانس 25 میگ خیلی دقیق هم درست کردم، فرکانس تایمر رو برابر فرکانس مرکزی قرار دادم ( تقسیم کننده فرکانس تایمر رو مقدارش رو 1 قرار دادم ) و مقدار MR0 هم فک کنم 1 قرار دادم و مقدار PR هم 0 قرار دادم اگه اشتباه نکنم تا هر واحد افزایش شمارنده TC برابر 1 دونه کلاک مرکزی بشه.
شماتیک پروژه : مثل پروژه های قبلی هستش فقط به جای این که پایه P3.25 رو به led بدیم، میایم به یه لاجیک آنالیزر یا اسکپ یا مولتیمتر(که قابلیت محاسبه فرکانس داشته باشه) میدیم، تا مطمئن بشیم که فرکانسی که درست کردیم، درست، درست کردم!!!
عکس پروژه در عمل :
پروژه تولید فرکانس های مختلف با lpc1768
کد پروژه : 

خب این پروژه هم هیچی نداره و مثل پروژه 1 هستش، فقط تو پروژه 1 مقدار فرکانس 1 بود و اینجا 10 کیلو، کلا خواستم یکم ذهنتون رو باز کنم که تولید فرکانس با تایمر چیز شاقی نیستش.
فیلم پروژه :
http://www.aparat.com/v/ZLzy5

 

پروژه استفاده از مد شمارنده تایمر/کانتر lpc1768  – پروژه 5

شماتیک پروژه : به پایه P1.26 یه دکمه با مقاومت پول دان وصل کنید و هر بار که دکمه رو فشار بدید، مقدار TC یه واحد زیاد میشه؛ مبدل USB TO TTL رو به میکرو وصل کنید، چون اطلاعات به پورت سریال ارسال میشه.
کد پروژه : 

 

پروژه استفاده از پایه ورودی CAP در lpc1768  – پروژه 6

تو این پروژه، به کمک پایه CAP، که به دکمه (با مقاومت پول دان) بهش وصل کردم، زمان بین هر دو بار کلیک شدن دکه رو به من مده، در دفه اول فشرده شدن دکمه، زمان از زمان روشن شدن میکرو محاسبه میشه.
شماتیک : مثل پروژه 5 هستش.
کد پروژه : 

 

پروژه نوشتن تابع Delay به کمک تایمر lpc1768  – پروژه 7

خب یه متغیر هستش به نام Number که هر 1 ثانیه یکبار مقدارش یه واحد زیاد میشه و مقدارش به پورت سریال ارسال میشه، حالا این تاخیر زمانی رو اومدیم تابعش رو با تایمر نوشتیم؛ برای این اطلاعات رو به پنجره سریال ارسال کردم تا بتونید با شمارنده زمان ( که تو اکثر موبایل ها هستش )، میزان دقت این تابع delayMs رو متوجه بشید.
شماتیک پروژه : مبدل USB TO TTL رو به میکروکنترلر وصل کنید.
کد پروژه : تو کد زیر، اگه اون خط 8 رو یه تابع براش بنویسید که فرکانس تایمر رو بده خیلی خوب میشه، این طوری در تمام پروژه ها میتونیم از تابع delayMs استفاده کنیم، در غیر این صورت هر دفه مجبوریم این خط رو تغییر بدیم.

 



 
افتخار جمهوری اسلامی - مقاومت
فیلم زیر رو هم پیشنهاد میکنم حتما ببیند ( “اظهارات فوق جنجالی دکتر حسن عباسی در روز دانشجو 16 آذر 95” و گفتن نام کسی که با صهیونیست ها مذاکره کرده و بعد عملیات کربلای 4 لو رفت و… )
http://www.aparat.com/v/JgXZ2

امیدوارم این مطلب برای شما مفید بوده باشه، تا مطلب بعد اگه زنده بودیم، یا علی.

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو گوگل میفرماید : إِنَّ اللّه مَعَ الساچِرین ( خداوند با سرچ کنندگان است )
ارسال دیدگاه
25

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    عرفان

    سلام خدمت شما. میخواستم بدونم که چرا توی پروژه اول، از عبارات هایی مثل MR0R_ ارور میگیره. ممنون.

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      کتابخونه های مورد نیاز تو سیستمت نی و این یعنی نسخه های صحیح کیل رو نصب نکردی – 3 تا نسخه داشت تا جایی که یادمه

  2. Avatar

    مهمان

    milad

    سلام ممکنه در مورد نوشتن توابع وقته بیشتر توضیح بدین که اصولش چطوری هست تو AVR ی جدول داشت که شماره هر وقفه مشخص هست اگر اینم جدولی چیزی داره لطفا لینکشو بزار خیلی ممنونم از آموزشای قشنگت

  3. Avatar

    مهمان

    محمد

    سلام برادر
    اگه خواسته باشیم مثلا تایمر صفر رو بدون استفاده از اینتراپت بنویسیم باید چیکار کنیم؟
    آیا باید تو یه حلقه بی نهایت مدام TC چک کنیم؟
    میشه کمک کنید؟

  4. Avatar

    مهمان

    ارش

    سلام اقا مهدی…سپاس که جواب دادید… من جایی در برنامه ندیدم که pllرو تنظیم کرده باشید..!یعنی حالت defaultقرار داده شده …؟سوالی هم در مورد تنظیم pllداشتم که در تابعsysteminit() مقادیر mرو۶۳وnرو۵قرار داده…آخه چرا…طبق فرمول خروجی pllوابسته به ورودی هستش…پس mوnنباید ثابت باشند…اصلا این اعداد هم تو فرمول رند در نمیان…اگه ما خروجی ثابت ۱۰۰MHzرو می خواهیم…سال نو هم مبارک smile

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام-فعلا شما همون پروژه هایی که من قرار میدم – همونو تست کنید و ویرایش کنید – تا مطالب رو من کم کم بهشون برسم و بپردازم – فعلا دارم مطلب EEPROM رو مینویسم – چند روزه…
      عید شما هم مبارک good

  5. Avatar

    مهمان

    ارش

    با سلام
    اینکه شما در بالا گفتید که فرکانس ما۱۰۰mhzهست بر چه اساسیه؟من در این زمینه سوال دارم….البته قبلا هم یه درخواست داشتم جواب ندادید…
    help آقا اگه به سوال یارانه می دن بگید ما هم بریم سایت بزنیم
    تشکر

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      بر مبنای این که واقعا فرکانس بردم ۱۰۰ میگ هستش smile
      اگه مشکلی هستش بگید دیگه جواب ندم.

  6. Avatar

    مهمان

    زهرا

    سلام
    ممنون از زحماتتون بابت مطالب سایت
    یه سوال داشتم اقای دمرچیلو من یه برد اموزشی armlpc1768خریدم دنبال یه کتاب هستم که هم خیلی خوب توضیح داده باشه و هم پروژه محور باشه میخاستم بدونم شما کتاب خاصی رو میشناسین معرفی کنین
    ممنون

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      والا من کتاب محمد خوش باطن رو خریدم – این قدر کتاب … هستش که نگاه هم نمیکنم خیلی وقتا – حیف اون پول – کتاب غیر از این دیدی – بخرش – چون کتاب من در این زمینه کم دیدم – همین مطالبی که من میزارم تو سایت هم میتونی استفاده کنی – سوالی هم بود من در خدمتم.

  7. Avatar

    مهمان

    حسین عهدی

    تو پروژه هفتم نهایت یک ثانیه میتونیم درست کنیم دیگه ؟؟مگه این که کد زو تغییر بدیم

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      این تابع حداقل ۱ میلی ثانیه تولید میکنه – برا تغییر این زمان بله باید کدها رو تغییر بدی.

  8. Avatar

    مهمان

    حسین عهدی

    تو پروژه ۶ چرا اینو نوشتی ؟
    printNumberln(LPC_TIM0->TC, 10);
    وقتی نشون میدی TC با CR کمی فرق داره؟؟

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      TC : تایمر/کانتر؛ این رجیستر ۳۲ بیتی افزایش پیدا میکنه هر PR+1 تا کلاک PCLK؛ TC به وسیله TCR کنترل میشه.
      —————-
      CR0 : رجیستر کپچر ۰؛ مقدار TC درون CR0 لود میشه وقتی که لبه انتخاب شده روی پایه انتخاب شده کپچر ( CAP0.0 – CAP1.0 ) رخ بده.
      ———————–
      خواستم نشون بدم که اون لحظه ای که TC رو میخونیم – مقدارش با CR0 برابر نیست – به هیمن خاطره که رجیستر CR0 وجود داره –
      اینم کدی که من نوشتن – برا نشون دادن تفاومت در زمان :

      printNumber(LPC_TIM0->CR0, 10);
      write('-');
      printNumberln(LPC_TIM0->TC, 10);

  9. Avatar

    مهمان

    حسین عهدی

    سلام
    حاجی تو پروژه دوم به نظرت این کار عبثی نیست که توی if چک میکنیم وقفه رخ داده یانه
    if((LPC_TIM0->IR & 0x01) == 0x01)
    ؟؟؟

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      مطلب رو بخون دقیق – حال خوندن و جواب دادن ندارم الان – سر مطلب I2C دهنم داره سرویس میشه – حوصلم رو گرفته!!!
      احتملا باید این روتین وقفه برا چند تا منبع مشترک باشه – لذا اومدم بررسی کردم – تا منبع اصلی که باعث رخ دادن وقفه شده رو پیدا کنم – مطلب آموزش تایمر ۱۷۶۸ رو بخون – به جواب نرسیدی بگو خودم بخونم.

  10. Avatar

    مهمان

    حسین عهدی

    الان بخوام این پروژه اولی رو ببندم باید چه تغییری رو کلاکم بدم؟
    هدربوردم eca هستش
    مقدار Xtal رو هم به صورت پیش فرض ۱۲ مگ گذاشته
    اینو بی زحمت توضیح میدی؟
    تشکر

  11. Avatar

    مهمان

    حسین عهدی

    LPC_TIM0->MCR |= (1<<_MR0R); // Reset timer on Match 0
    ResetCounter();
    EnableCounter();
    تو این قسمت کد تو پروژه اول دیگه وقتی MR0R رو یک کردی رجیستر های TC , PC ریست میشن چرا اینجا دوباره از ResetCounter استفاده می کنی؟

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام آقا حسین – عرضم به حضورت که :
      LPC_TIM0->MCR |= (1< <_MR0R); // Reset timer on Match 0
      تو این کد من گفتم هر موقع مقدار شمارنده Tc با mr0 برابر شد - شمارنده رو ریست کن -
      ResetCounter();
      این تابع دو کد زیر رو اجرا میکنه :
      LPC_TIM0->TCR |= (1 < < _CounterReset); // Reset Timer0 LPC_TIM0->TCR &= ~(1 < < _CounterReset); // stop resetting the timer
      که برا ۰ کردن مقدار اولیه شمارنده استفاده میشه.
      این دو دو مقوله جدا از هم هستن - مطلب آموزش تایمر رو بخونی این دو رجیستر TCR و MCR رو توضیح دادم.

      • Avatar

        مهمان

        milad

        ResetCounter();
        EnableCounter();
        علتش چیه که اول ریست میکنید بعد فعالش میکنید ؟؟؟؟

    • Avatar

      مهمان

      حسین عهدی

      خب من میگم دوباره کاری کردی دیگه.
      وقتی Pc , Tc صفر میشن دوباره داری صفرش میکنی
      یه اشتباه تایپی هم تو پروژه دوم هست که P0.25 رو روشن نکردی بلکه p3.24 رو طبق کد روشن کردی
      بعد اینکه کلاک میکرو رو کجا تنظیم کردی که ۱۰۰ مگه؟؟درحالیکه کریستالت ۱۲ مگه

      • مهدی دمرچیلو

        نویسنده این مطلب

        مهدی دمرچیلو

        نه دیگه
        الان من مقدار MR0 رو بر روی ۲۵۰۰۰۰۰۰ تنظیم کردم – وقتی TC به این مقدار برسه ریست میشه طبق دستور زیر ( و این ریست شدن همشگی هستش ) :
        LPC_TIM0->MCR |= (1<<_MR0R); // Reset timer on Match 0 ولی تو تابع ResetCounter مقدار TC که ممکنه مثلا در شروع کار ۰ نباشه - میام و ۰اش میکنم - البته در این پروژه همیشه ۰ هستش و نیازی به این تابع نسیت ولی بهتره که عادت کنیم این ریست رو قرار بدیم. در مورد کلاک هم یه چیز هستش به اسم PLL - اگه شما مثل من هدر برد ECA رو خریده باشین - به صورت پیشفرض کلاک ۱۰۰ میگه - در این مورد هم باید در جلسات اولیه مطلبشو میزاشتم و قبول دارم اشتب از منه - به زودی سعی میکنم مطلبشو بزارم - البته بعد از مطلب PWM

    • Avatar

      مهمان

      حسین عهدی

      توی منوی target کیل ۱۲ مگ زده Xtal رو .۱۰۰ مگ رو کجا زده؟؟؟

      • مهدی دمرچیلو

        نویسنده این مطلب

        مهدی دمرچیلو

        یه بحثی به نام pll هستش – بعدا میگم آموزشش رو – فعلا به کالا کاری نداشته باشید

  12. Avatar

    مهمان

    علی

    داداش دمت گرم
    یه دونه ای