AVR - ارتباط avr با mmc
- يكشنبه، 18 مرداد ماه ، 1388 09:05:24
موضوع مطلب: ارتباط avr با mmc
با عرض سلام و خسته نباشید
و تشکر از بابت سایت جالب و مفیدتون
مشکل من مربوط به ارتباط mmc با AVR هست. می خوام یه سری اطلاعات(مثلا دما و زمان) رو روی mmc بریزم.
انواع و اقسام برنامه ها رو از اینترنت دانلود کردم و متناسب با سخت افزارم تغییر دادم. منظورم تنظیم پورت هاست.ورودی و خروجی های mmc رو هم طبق نقشه ها با مقاومت به AVR وصل کردم. ولتاژ mmc رو 3.3 ولت رگوله کردم. از mega128 و mega32 استفاده کردم فایده ای نداشت. از روش نوشتن سکتور و استفاده از avr-dos هم جوابی نگرفتم. mmc رو به روشهای مختلف فرمت کردم. از mmc های مختلف استفاده کردم...دیگه کلافه شدم. ماژول mmc رو هم که خداروشکر نایاب شده.
آیا قلق خاصی داره؟از mmc خاص باید استفاده کرد؟از AVR خاصی؟ورژن خاص بسکام؟من از 1.11.9 استفاده می کنم(با ورژن پائین تر هم نشد)
خلاصه اگه راهنمایی کنین ممنون میشم
- يكشنبه، 18 مرداد ماه ، 1388 14:09:50
موضوع مطلب: کار با MMC توسط AVR
من با MMC کار کردم و مسئله خاصی نداره فقط با SD کارتها همیشه خوب کار نمیکنه. اگر با بسکام کار میکنید من با 1.11.9.0 و میکرو ATmega128 کار کردم و ار کتابخانه AVR_DOS بحث ولتاژ 3.3 ولت هم که ضروریه. در رابطه با فرمت کردن MMC هم که باید FAT باشه.
احتمالا در سخت افزارتان مسئله ای وجود دارد و الا به راحتی در بسکام با MMC میشود کار کرد.
- پنجشنبه، 22 مرداد ماه ، 1388 16:49:35
موضوع مطلب:
من با MMC کار نکردم و لی یه کتابخونه براش پیدا کردم باید تو سیستمم پیداش کنم حتما خبرت میکنم
- يكشنبه، 25 مرداد ماه ، 1388 07:19:36
موضوع مطلب:
با تشکر از اینکه وقت گذاشتین و جواب دادین. خیلی لطف کردین
مشکل آخرش حل شد.اشکال کار از این بود که سیم هایی که به mmc وصل شده بود حدود 10-15 سانتیمتر بود که باعث می شد نویز توش وارد بشه. یه مشکل دیگه هم داشت. یه خازن الکترولیت به پایه های مثبت و منفی mmc وصل کردم (حدود 10 میکرو) که باعث شد بهتر کار کنه
برای اطلاع دیگر دوستان که ممکنه همچین مشکلی داشته باشن باید بگم که هم از mega128 و هم mega32 جواب گرفتم که هیچ مشکلی نداشت. از کتابخانه AVR_DOS استفاده کردم و حالت SPI نرم افزاری
خلاصه اگر کسی مشکلی داشت در خدمتم
- شنبه، 21 شهريور ماه ، 1388 01:49:00
موضوع مطلب:
سلام من تازه به این جم امدم
من اطلاعات جامعی در باره MMC میخوام .
اگه ممکنه یک کد نمونه هم برام بزاربد . من هم C مینویسم . هم بیسیک .
من داشجوی مهندسی برف هستم و روبات های ویدئو متریک برای لوله های آب و فاضلاب طراحی می کنم . لطفاً کمکم کنید .
- شنبه، 21 شهريور ماه ، 1388 09:28:06
موضوع مطلب: کار با MMC در بسکام
برای استفاده از MMC میتوانید از کتابخانه AVR-DOS بسکام استفاده کنید که توسط آقای Josef Franz Vögel نوشته شده. این کتابخانه اجازه میدهد که MMC را با فرمت FAT16 و FAT32 استفاده کنید. بهترین مرجع برای این کتابخانه راهنمای خود بسکام است. من لینکهای مرتبط با این کتابخانه و همچنین دستورات آنرا در اینجا قرار میدهم تا استفاده کنید :
AVR-DOS File System
INITFILESYSTEM
OPEN
CLOSE
FLUSH
PRINT
LINE INPUT
LOC
LOF
EOF
FREEFILE
FILEATTR
SEEK
BSAVE
BLOAD
KILL
DISKFREE
DISKSIZE
GET
PUT
FILEDATE
FILETIME
FILEDATETIME
DIR
WRITE
INPUT
FILELEN
- چهارشنبه، 8 مهر ماه ، 1388 06:23:04
موضوع مطلب:
با سلام
قدم های اول هست که با mmc کار می کنم ... چندتا سوال دارم ........برای شروع!
1-برای پیکر بندی mmc از چه دستوری باید استفاده کرد ؟ بسکام
2-برای نوشتن در mmc باید از همون دستورات spi ساده استفاده کرد ؟ spiout و spiin و غیره ..............
3-برای خواندن از mmc باید از چه دستوری استفاده کرد ؟
با تشکر..........
فعلا ....تا سوالات بعدی.......[code]
- چهارشنبه، 8 مهر ماه ، 1388 22:19:08
موضوع مطلب: راه اندازی MMC
برای کار با MMC دو راه متفاوت وجود دارد :
1- کار به عنوان فقط یک حافظه معمولی مثل سایر حافظه ها.
2- استفاده از این حافظه برای کار با فایلها و اطلاعاتی که با فرمت FAT برروی آن ذخیره شده و امکان استفاده مشترک را با کامپیوتر فراهم کند.
در روش اول دقیقا با همان دستوراتSPI کار میکنید و باید ابتدا توسط این دستورات حافظه را راه اندازی کنید. و خودتان باید دست بکار شوید و برنامه نویسی کنید که زحمت بیشتری دارد.
اما در روش دوم کتابخانه ای بصورت استاندارد در بسکام وجود دارد که در بالا برخی از دستورات آن معرفی شده و براحتی قابل استفاده هستند.
- پنجشنبه، 9 مهر ماه ، 1388 02:29:24
موضوع مطلب: برای پیکر بندی MMC
برای پیکر بندی چطور ؟ دستور خاصی وجود داره ؟MMC[code]
- جمعه، 10 مهر ماه ، 1388 10:24:43
موضوع مطلب: استفاده از MMC
از کدامیک از روشهای بالا میخواهید استفاده کنید؟
- جمعه، 10 مهر ماه ، 1388 16:44:08
موضوع مطلب:
ممنون که به سوالات توجه می کنید
1- کار به عنوان فقط یک حافظه معمولی مثل سایر حافظه ها.
تا اینجاشو متوجه شدم که میشه به وسیله spi اطلاعات را فرستاد
ایا مانند eeprom داخلی باید ادرس خاصی را باید به mmc بدیم؟
برای خواندن از mmc از کدام دستور باید استفاده کرد؟[code]
- جمعه، 10 مهر ماه ، 1388 16:57:18
موضوع مطلب: برای پیکر بندی MMC
برای ارتباط با MMC باید خودتان توابع مورد نیاز را بنویسید و کمی نیاز به صبر حوصله دارد و خوشبختانه سورس کدهای این کار در اینترنت موجود هست و من خودم برای MMC از همین برنامه ها استفاده کردم البته با زبان سی.
اگر میخواهید با بسکام کار کنید از برنامه زیر میتوانید استفاده کنید :
:كد |
' Program: MMC.BAS written using Bascom-AVR ver 1.11.6.2 ' Basic program to interface with a Sandisk ' MMC module using the SPI protocol. ' ' ALPHA CODE ' **** NOT FOR COMMERCIAL USE ***** ' Ver. 0.0.9 Aug, 2001 ' ' Project Reference: MMC-AT103L ' MCU: Atmel AT103L ' Software: Bascom-AVR ver 1.11.6.2 ' Atmel Programmer: STK300 development board set at 3.3v. ' ISP and terminal output ' ' Initial Date: July 23, 2001 ' Projected Completion Date: Unknown ' ' Author: Ranjit Diol ' rsdiol@compsys1.com ' http://www.compsys1.com/workbench ' '*************************************************************** ' (c) COMPSys, 2001 ' All Rights Reserved '*************************************************************** ' ' DISCLAIMER: This file is being released as non-commericial ' software. It is being provided "AS IS", neither the author, ' nor COMPSys shall be held liable for any damages caused ' by its use either directly or indirectly in any form or manner. ' '=============================================================== ' 'Brief: The MMC is a 3volt part therefore all data lines ' must be conditioned if interfacing with a 5v mcu. ' Or, a 3.3v MCU can be used such as the AT103L or the AT90LS8535 ' 'IMPORTANT NOTE: ' In SPI mode the MMC's minimum block size is 512 bytes ' therefore data has to be accumulated first either in an eeprom ' or in memory before sending it out as a chunk of 512 bytes. ' ' MMC pins in SPI mode: ' Pin1:ChipSelect(SS),Pin2:MMC input(MOSI),Pin3:GND,Pin4:3V+, ' Pin5:Clock(SCK), Pin6:GND, Pin7:MMC output(MISO) ' AT103L pins: ' Portb.0 SS,Portb.1 SCK,Portb.2 MOSI, Portb.3 MISO ' ' '============================================================== $regfile = "M103def.dat" 'AT103L mcu 'Constants Const Msbl = 0 Const Msbh = 1 Const Dly = 2 Const Bits8 = 8 Const Bits16 = 16 Const Bits32 = 32 'Variables Dim Res(16) As Byte Dim Indat(512) As Byte 'Memory buffer for temp storage. Dim Dat As Byte Dim Resp As Byte Dim Resp2 As Word Dim I As Word Dim J As Word Dim X As Byte Dim Y As Byte Dim K As Byte Dim Bout As Byte Dim Addr1 As Byte Dim Addr2 As Byte Dim Addr3 As Byte Dim Addr4 As Byte Dim Addr As Long Dim Saddr As Long Dim Eaddr As Long 'Aliases Cs Alias Portb.0 Clk Alias Portb.1 Miso Alias Pinb.3 'inp Mosi Alias Portb.2 'out 'Declarations Declare Sub Mprint Declare Sub Minit Declare Sub Mstatus Declare Sub Mwrite(byval Bout As Byte , Byval Addr As Long ) Declare Sub Mread(byval Addr As Long ) Declare Sub Merase(byval Saddr As Long , Byval Eaddr As Long) 'AT103 HW SPI Portb0=SS to MMC 1, Portb1=clock to MMC 5, MISO=Portb3 to MMC 7, MOSI=Portb2 to MMC 2 Config Pinb.0 = Output Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Input Waitms 300 Config Spi = Soft , Din = Pinb.3 , Dout = Portb.2 , Ss = Portb.0 , Clock = Portb.1 Spiinit '******** MAIN PROGRAM ************* Main: 'Initialize the MMCC Minit 'If you want to use the ERASE routine 'Uncomment and enter the start/end 32bit address values 'Call erase subroutine enter StartAddr , EndAddr 'Merase &H00000000 , &H00001000 'call write subroutine as: BYTE-TO-WRITE, 32BIT_ADDRESS Mwrite &HBE , &H00000000 'Call read sub from 512 from address are put in array INDAT Mread &H00000000 'Call print sub print 512 bytes stored in INDAT array Mprint Xloop: Set Cs Shiftout Mosi , Clk , Dat , Msbl Endloop: Goto Endloop End 'end program '************ END OF PROGRAM ************** '======= SUB ROUTINES AND FUNCTIONS ======= '*** INITIALIZATION OF MMC *** Sub Minit Set Cs Dat = &HFF For I = 1 To 10 Shiftout Mosi , Clk , Dat , Msbl Next I Resp = 255 Reset Cs Cmd0: Dat = &H40 Shiftout Mosi , Clk , Dat , Msbl Addr = &H00000000 Shiftout Mosi , Clk , Addr , Msbl Dat = &H95 Shiftout Mosi , Clk , Dat , Msbl While Resp <> &H01 Shiftin Miso , Clk , Resp , Msbl Wend Lcd "C0:" ; Hex(resp) 'Initialized Set Cs Waitms 50 Reset Cs Dat = &HFF Cmd1: While Resp <> &H00 Set Cs Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl Reset Cs Dat = &H41 Shiftout Mosi , Clk , Dat , Msbl Addr = 0 Shiftout Mosi , Clk , Addr , Msbl Dat = &HFF Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl Wend Dat = &HFF Set Cs Lcd "C1:" ; Hex(resp) End Sub '**** READ routine assumes ADDR uses Status subroutine ***** Sub Mread(byval Addr As Long) Set Cs Dat = &HFF Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl Reset Cs Dat = &H51 Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Addr , Msbl Dat = &HFF Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl While Resp <> 0 Shiftin Miso , Clk , Resp , Msbl Wend While Resp <> &HFE Shiftin Miso , Clk , Resp , Msbl Wend 'Lcd Hex(resp) For I = 1 To 512 Shiftin Miso , Clk , Resp , Msbl Indat(i) = Resp 'Print Hex(resp); Next I Shiftin Miso , Clk , Resp , Msbl Shiftin Miso , Clk , Resp , Msbl Set Cs Mstatus 'Return End Sub '****Block Start Tag / End Tag and ERASE **** Sub Merase(byval Saddr As Long , Byval Eaddr As Long) 'erase first 1024 bytes 'Block START TAG Cmd32: Set Cs Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl Reset Cs Dat = &H60 Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Saddr , Msbl Dat = &HFF Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl While Resp <> &H00 Shiftin Miso , Clk , Resp , Msbl Wend 'Block END TAG Cmd33: Set Cs Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl Reset Cs Dat = &H61 Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Eaddr , Msbl Dat = &HFF Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl While Resp <> &H00 Shiftin Miso , Clk , Resp , Msbl Wend 'ERASE SELECTED BLOCK Cmd38: Set Cs Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl Reset Cs Dat = &H66 Shiftout Mosi , Clk , Dat , Msbl Addr = 0 Shiftout Mosi , Clk , Addr , Msbl Dat = &HFF Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl While Resp = 0 Shiftin Miso , Clk , Resp , Msbl Wend Mstatus End Sub '** WRITE Routine assumes ADDR, BOUT uses Status subroutine ** Sub Mwrite(byval Bout As Byte , Byval Addr As Long) Cmd24: Set Cs Dat = &HFF Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl Reset Cs Dat = &H58 Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Addr , Msbl Dat = &HFF Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl While Resp <> 0 Shiftin Miso , Clk , Resp , Msbl Wend Lcd "C24:" ; Hex(resp) Dat = &HFE Shiftout Mosi , Clk , Dat , Msbl For I = 1 To 512 Shiftout Mosi , Clk , Bout , Msbl Next I Dat = &HFF Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl 'If Y = &H05 write is a success Y = Resp And &H0F 'If Resp = 0 the MMC is busy Shiftin Miso , Clk , Resp , Msbl While Resp = 0 Shiftin Miso , Clk , Resp , Msbl Wend Lowerline Lcd "Wr:" ; Hex(y) Set Cs Mstatus End Sub 'Get MMC Status Sub Mstatus Cmd13: Set Cs Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp , Msbl Reset Cs Dat = &H4D Shiftout Mosi , Clk , Dat , Msbl Addr = 0 Shiftout Mosi , Clk , Addr , Msbl Dat = &HFF Shiftout Mosi , Clk , Dat , Msbl Shiftout Mosi , Clk , Dat , Msbl Shiftin Miso , Clk , Resp2 , Msbl Print "Status:" ; Hex(resp2) Set Cs 'Return End Sub Sub Mprint For I = 1 To 512 Print Hex(indat(i)); Next Mstatus End Sub |
- شنبه، 11 مهر ماه ، 1388 13:54:26
موضوع مطلب:
نه می دونم چه طور ازتون تشکر کنم ............ فقط می تونم بگم سپاس گذارم
- شنبه، 14 آذر ماه ، 1388 04:37:46
موضوع مطلب:
من هر چی به این برنامه نگاه میکنم چیزی نمی فهمم
خواهشا یه مثال چند خطی(سه یا چهار خطی بزنید) که فقط یه بار در خانه صفر حافظه مقدار عدد پنجاه رو بذاره(یا یه عدد دیگه) و خط بعداز همون خونه ( خانه صفر حافظه)
مقدار داده شده رو واکشی کنه و روی ال سی دی نشون بده ؟
هدف اینه که من بفهمم چه طوری میشه در یه خونه از حافظه مقداری رو وارد کرد و هر وقت خواستیم دوباره واکشی کنیم......
با تشکر..................خییییییییییییییلی ممنون میشم
- شنبه، 22 خرداد ماه ، 1389 11:58:14
موضوع مطلب:
با سلام و خسته نباشید
چند وقتی نمی تونستم چیزی توی سایت بنویسم که ظاهرا درست شده
یه مختصر توضیحات و یه نمونه برنامه با BASCOM آماده کردم که فکر کنم می تونه در زمینه ارتباط MMC با AVR کمک کنه
توضیحات بیشتری خواستین در خدمت هستم، به این آدرس می تونین ایمیل بزنین:
a.azizy@yahoo.com
آدرس دانلود فایل:
http://www.4shared.com/file/UYliCiNc/mmc-boscom.html
- جمعه، 16 مهر ماه ، 1389 23:25:13
موضوع مطلب:
سلام .
ميشه بگيد چطوري فايل avr_dos رو ميشه تهيه كرد ودر بسكام نصب كنيم. آخه وقتي ميخوام برنامه رو كامپايل كنم خطاي file no found رو ميده؟؟؟؟؟؟
- جمعه، 16 مهر ماه ، 1389 23:29:08
موضوع مطلب:
چطور ميشه فايل avr_dos رو تهيه و در كتابخانه بسكام نصب كرد؟؟؟؟؟؟
- سه شنبه، 20 مهر ماه ، 1389 09:12:18
موضوع مطلب:
معمولا فایل AVR-DOS.LBX در فولدری به اسم LIB وجود داره. اگه نبود می تونی بر حسب نسخه BASCOM که روی کامپیوترت نصبه اونو تهیه کنی و توی همون فولدر کپی کنی
همینطور باید فایل CONFIG_AVR-DOS.bas و Config_MMC.bas توی همون فولدری که برنامه ات رو نوشتی وجود داشته باشه.
اگه فایل AVR-DOS.LBX رو پیدا نکردی ورژن BASCOM رو بگو تا واست بفرستم
- سه شنبه، 20 مهر ماه ، 1389 18:49:23
موضوع مطلب:
سلام. مرسي از جوابت.
فايل avr_dos رو تو فولدر lib پيدا كردم ، فقط نفهميدم منظورت از config_avr-dos و config_mmc.bas چي هست؟ چطوري ميشه اين فايلها رو تهيه كرد؟؟؟؟
- چهارشنبه، 21 مهر ماه ، 1389 07:26:44
موضوع مطلب:
این فایل رو دانلود کن، توش توضیحاتی در مورد نحوه کار با MMC هست.فایل CONFIG_AVR-DOS.bas و Config_MMC.bas دو تا فایل هستن که تنظیمات mmc و avr dos رو انجام میدن و باید توی همون فولدری که برنامه ات رو نوشتی باشن.این دوتا فایل رو هم می تونی توی همین فایل پیدا کنی. موفق باشی
http://www.4shared.com/file/UYliCiNc/mmc-boscom.html
- چهارشنبه، 28 مهر ماه ، 1389 19:57:34
موضوع مطلب:
سلام.
من مدار avr و mmc رو روي برد برد بستم. دستورات چك كردن كارت و نوع fat جواب ميدن ولي فايل txt روي كارت ساخته نميشه ، نوع كارت sd و ميكرو ، به نظر شما علت چيست؟ممكنه پايه هاي كارت رو اشتباه وصل كرده باشم؟
- چهارشنبه، 28 مهر ماه ، 1389 20:10:36
موضوع مطلب:
سوال قبلي رو جواب ندادين؟؟؟؟؟؟؟؟؟؟
راستي مموري n70 از نوع mmc هست ولي شماره پايه هh و اسمشون رو نميدونم آخه پايه هاش زيادن، ميشه شماتيك اون رو برام بزاريد؟؟؟؟؟؟
- پنجشنبه، 29 مهر ماه ، 1389 13:00:05
موضوع مطلب:
بعضی وقتها قاط میزنه و فایل رو تشکیل نمیده. شما یه فایل TXT به همون اسمی که توی برنامه هست درست کن احتمالا راه میوفته
و همینطور حتما وقتی کار نوشتن تموم شد باید دستور CLOSE رو اجرا کنی تا تموم اطلاعات نوشته بشه
من با MMC هم تست کردم مشکلی نبوده. واسه پایه ها نگران نباش. وقتی بره توی جا کارتی مشکل حله. اگه توی جاکارتی با SD جواب گرفتی با MMC هم جواب میگیری
- سه شنبه، 10 آبان ماه ، 1390 00:01:30
موضوع مطلب:
سلام
آقا من یه چیزیو نفهمیدم ، که اگه بخام مثلا 1000 تا عدد تو mmc سیو کنم و بعدش دونه دونه لود کنم برنامه به چه صورتی میشه؟؟؟؟؟؟
بخدا خیلی واجبه کمکم کنید.
- سه شنبه، 10 آبان ماه ، 1390 22:49:38
موضوع مطلب:
سلام
کسی نیس کمک کنه آآآآآآهههههههههااااااااااایییییییییی
کککککممممممککککککککک
یه برنامه راهنما واسه من بزارید.
- پنجشنبه، 26 آبان ماه ، 1390 21:54:50
موضوع مطلب:
mamadelectro مي نويسد: |
سلام
کسی نیس کمک کنه آآآآآآهههههههههااااااااااایییییییییی کککککممممممککککککککک یه برنامه راهنما واسه من بزارید. |
:كد |
Open "Report.bin" For Binary As #2 Put #2 , B Flush #2 Close #2 |
:كد |
Open "Report.bin" For Binary As #3 get #2 , B Close #3 |
- دوشنبه، 24 بهمن ماه ، 1390 23:06:22
موضوع مطلب: ارتباط MMC با میکرو به زبان C
سلام
دوستان
تو رو خدا یکی
این برنامه ارتباط AT MEGA32 را با MMC با زبان C توضیح بده
کامپیوتراطلاعات رو تو کدوم سکتور MMC ذخیره میکنه ؟؟؟
چطوری میتونیم این اطلاعات رو از طریق میکرو بخونیم؟؟
منتظر پاسخ برادرانه شما هستم.
- جمعه، 28 بهمن ماه ، 1390 11:50:09
موضوع مطلب:
با سلام
لطفا در مورد پخش فايلهاي صوتي با mmc هم توضيح بديد و اگه برنامه اي در اين رابطه داريد براي دانلود بزاريد
Farsi Project : MashhadTeam.Com