极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11890|回复: 2

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

[复制链接]
发表于 2013-3-29 21:59:41 | 显示全部楼层 |阅读模式
程序作用:每次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次了吗,还是我的程序有问题,请高手看看!
回复

使用道具 举报

发表于 2013-3-30 19:50:25 | 显示全部楼层
这个不懂呢,可能官方有详细的启动过程
包括各个函数的调过程

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

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

使用道具 举报

 楼主| 发表于 2013-3-31 09:02:09 | 显示全部楼层
官方是e文不懂呀!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 18:44 , Processed in 0.034706 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表