openmmoo 发表于 2013-3-29 21:59:41

记录arduino开机次数的程序,有问题,请教

程序作用:每次arduino开机,就读取eeprom中的变量并加1并存入eeprom中。从串口输入c就可以清除eeprom为0.
代码如下:
#include <avr/eeprom.h>
#define Ewrite(address, var) eeprom_write_block((const void *)&(var), (void *)(address), sizeof(var))
#define Eread(address, var) eeprom_read_block((void *)&(var), (const void *)(address), sizeof(var))

long b=0;
//
void setup()
{
Serial.begin(9600);
   Eread(0,b);
   b=b+1;
   Ewrite(0,b);
}

void loop()
{
   if ( Serial.available()) {
    char ch = Serial.read();//读取串口数据

    switch(ch) {
      case 'c'://如果数据后带a,则表示是servo1的数据,比如串口发送85a
      b=0;
      Ewrite(0,b);
      Serial.print("clear ok!");
      break;
      }
      }
Eread(0,b);
Serial.println(b,DEC);
delay(2000);
}

程序中的问题:
每次打开串口调试工具时,eeprom中的变量就可直接加3,比如:开始是变量b=6,关闭串口调试工具,再打开b=9,依此类推,难道每次打开串口调试工具中,arduino就重启三次吗?还有我将epprom清0,拨去arduino,再插入,每次b都从6开始,难道,之前已经自动重启了6次了吗,还是我的程序有问题,请高手看看!

laofuz1024 发表于 2013-3-30 19:50:25

这个不懂呢,可能官方有详细的启动过程
包括各个函数的调过程

不过可以在setup函数里面,加别的语句测试一下,比如说是在b=b+1前后加别的语句或者变量来看看
应该说不会是重启三次

有可能是启动到关闭的过程中 setup 这个函数被调用过三次,

openmmoo 发表于 2013-3-31 09:02:09

官方是e文不懂呀!
页: [1]
查看完整版本: 记录arduino开机次数的程序,有问题,请教