xinjie1023 发表于 2006-5-3 09:34:00

请教马潮老师的mega128的bootloader的API函数问题?

//等待一个Flash页的写完成

void wait_page_rw_ok(void)

{

      while(SPMCSR & 0x40)

   {

         while(SPMCSR & 0x01);

         SPMCSR = 0x11;

         asm("spm
");

   }

}



我觉得这个函数有点问题,while(SPMCSR & 0x40)这个判断有实际作用吗?根据datasheet的话只要写或者擦除的话RWWSB都置1,并且在其他默认的情况下他将一直保持,那么这句判断能不能看出读或者页完成呢?是不是应该通过判断SPMEN来看是不是读或者页完成呢?



void wait_page_rw_ok(void)

{

      while(!(SPMCSR & 0x01))

   {

      

         SPMCSR = 0x11;

         asm("spm
");

   }

}

是不是这样才能有效的判断读或者页完成呢?

xinjie1023 发表于 2006-5-3 21:53:31

不好意思,马老师,你写的程序没有问题,并且可靠性更好,我刚开始没有深刻理解你程序里的while(SPMCSR & 0x01);这句话的作用。麻烦你了,谢谢。
页: [1]
查看完整版本: 请教马潮老师的mega128的bootloader的API函数问题?