정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

ds1307 예제 동작 질문
김별 | 2017-05-29

현재 보드는 오렌지보드 wifi, rtc모듈은 ds1307을 이용하는 http://mechasolution.com/shop/goods/goods_view.php?goodsno=330005&category=132001 제품을 이용하고 있는데요.

 

모듈 테스트를 해보려고 ds1307 예제를 그대로 업로드했는데, 시리얼 모니터에 출력되는 내용이 정상이 아닌 것 같아서요. 사진 업로드가 자꾸 오류가 나는데, 시리얼 모니터에 계속

 

0 0 0 1 1 1 2000

 

만 계~~~속 반복됩니다.

 

예제 코드는 아두이노에서 불러올 수 있는 예제 그대로를 이용했구요. 아예 출력이 안되는건 아닌 걸 보면 모듈은 정상인 것 같은데..ㅠㅠ GND - GND, VCC - 5V, SDA - A4, SCL - A5에 연결했습니다. 제가 뭔가를 잘못한걸까요? 아니면 이게 맞는건가요?

 

#include
#include

int rtc[7];
byte rr[7];
int ledPin =  13;
void setup()
{
  DDRC|=_BV(2) |_BV(3);  // POWER:Vcc Gnd
  PORTC |=_BV(3);  // VCC PINC3
  pinMode(ledPin, OUTPUT); 
  Serial.begin(9600);
  RTC.get(rtc,true);
  if(rtc[6]<12){
    RTC.stop();
    RTC.set(DS1307_SEC,1);
    RTC.set(DS1307_MIN,27);
    RTC.set(DS1307_HR,01);
    RTC.set(DS1307_DOW,7);
    RTC.set(DS1307_DATE,12);
    RTC.set(DS1307_MTH,2);
    RTC.set(DS1307_YR,12);
    RTC.start();
  }
  //RTC.SetOutput(LOW);
  //RTC.SetOutput(HIGH);
  //RTC.SetOutput(DS1307_SQW1HZ);
  //RTC.SetOutput(DS1307_SQW4KHZ);
  //RTC.SetOutput(DS1307_SQW8KHZ);
  RTC.SetOutput(DS1307_SQW32KHZ);
}

void loop()
{
  int i;
  RTC.get(rtc,true);

  for(i=0; i<7; i++)
  {
    Serial.print(rtc[i]);
    Serial.print(" ");
  }
  Serial.println();
 digitalWrite(ledPin, HIGH);
 delay(500);
 digitalWrite(ledPin, LOW);
 delay(500);
 if (Serial.available() > 6) {
     for(i=0;i<7;i++){
       rr[i]=BCD2DEC(Serial.read());
     }
     Serial.println("SET TIME:");
       RTC.stop();
    RTC.set(DS1307_SEC,rr[6]);
    RTC.set(DS1307_MIN,rr[5]);
    RTC.set(DS1307_HR,rr[4]);
    RTC.set(DS1307_DOW,rr[3]);
    RTC.set(DS1307_DATE,rr[2]);
    RTC.set(DS1307_MTH,rr[1]);
    RTC.set(DS1307_YR,rr[0]);
    RTC.start();
 }
}
char BCD2DEC(char var){
  if (var>9){
     var=(var>>4)*10+(var&0x0f);
  }
  return var;
}

이전글   |    자이로센서를 이용한 RC카 만들기 질문입니다.... 2017-05-29
다음글   |    피에조부저 사용할 때 중간에 노래를 강제 종료 시킬 수도 있나요?... 2017-05-29