همونطور که می دونید توی دیتا شیت میکروها یه عددی برای محدودیت نوشتن در eeprom تعیین شده که برای مثلا mega32 این مقدار برابر 100000 هست
من چون به این اعداد اعتماد نداشتم خودم دست بکار شدم و برنامه زیر رو نوشتم
یک میکروی جان برکف پیدا کردم :biggrin: و پروگرمش کردم
همونطور که میبینید برنامه زیر یک عدد تصادفی ایجاد میکنه و در متغیر A میریزه و بعد اونو تو eeprom مینویسه و دوباره می خونه وتو متغیر B میریزه و اگر ایندو با هم برابر نبودن اجرای برنامه متوقف میشه
اما اتفاقی که افتاد جالب بود ! متغیر c که نشانگر تعداد دفعات نوشتن و خوندن از eeprom هست به عدد 3500000
(سه میلیون و پانصد هزار !!) رسیده و مدار از دیشب روشنه ! و همچنان داره عددش زیاد میشه !
الان دوتا شاخ روی سر من سبز شده 1 می خوام بدونم که چطور همچین چیزی ممکنه ؟
من چون به این اعداد اعتماد نداشتم خودم دست بکار شدم و برنامه زیر رو نوشتم
یک میکروی جان برکف پیدا کردم :biggrin: و پروگرمش کردم
همونطور که میبینید برنامه زیر یک عدد تصادفی ایجاد میکنه و در متغیر A میریزه و بعد اونو تو eeprom مینویسه و دوباره می خونه وتو متغیر B میریزه و اگر ایندو با هم برابر نبودن اجرای برنامه متوقف میشه
اما اتفاقی که افتاد جالب بود ! متغیر c که نشانگر تعداد دفعات نوشتن و خوندن از eeprom هست به عدد 3500000
(سه میلیون و پانصد هزار !!) رسیده و مدار از دیشب روشنه ! و همچنان داره عددش زیاد میشه !
الان دوتا شاخ روی سر من سبز شده 1 می خوام بدونم که چطور همچین چیزی ممکنه ؟
کد:
$regfile = "m32def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Pb.0 , Db5 = Pb.1 , Db6 = Pb.2 , Db7 = _ Pb.3 , E = Pb.5 , Rs = Pb.4 Config Timer1 = Timer , Prescale = 1024 Enable Timer1 On Timer1 Timer1_isr Timer1 = 62000 enable Interrupts Start Timer1 Cls Dim A As Word Dim B As Word Dim C As Long Do A = Rnd(65535) Writeeeprom A , 1022 Waitms 5 Readeeprom B , 1022 Waitms 5 If A <> B Then Stop Timer1 Locate 1 , 1 : Lcd "Number =" ; C Do : Loop End If Incr C Loop End Timer1_isr: Timer1 = 62000 Locate 1 , 1 : Lcd "Number =" ; C Return
دیدگاه