attiny и ds3231

Тема в разделе "Arduino & Shields", создана пользователем Unikolai, 7 ноя 2016.

  1. Unikolai

    Unikolai Гик

    при подключении библиотек этик часов выдает ошибку компиляции, что делать?
     
  2. rkit

    rkit Гуру

    Читать ошибку и думать
     
  3. koteika

    koteika Гик

    Скрин ошибки бы для начала.
     
  4. Unikolai

    Unikolai Гик

    если бы все было так просто
    "exit status 1
    Ошибка компиляции для платы ATtiny x5 series."
    вот что выдает, это просто если вставить штуку такую
    #include <iarduino_RTC.h>
    полагаю тинька не поддердивает напрямую ic2? но делать то что?
     
  5. rkit

    rkit Гуру

    Не надо полагать, надо взять да выяснить. Для этого придумали поисковики.
     
  6. Unikolai

    Unikolai Гик

    ну попробуйте найти что-нибудь по этой ошибке, эта ошибка может значить все что угодно и даже великий гугл по такойму запросу совпадений не находит
     
  7. rkit

    rkit Гуру

    Это не ошибка. Это код возврата. А я говорил о том, что вы полагали, с вовсе не об ошибке.
     
  8. Unikolai

    Unikolai Гик

    хорошо, разобрались, с этим можно что-то делать?
     
  9. rkit

    rkit Гуру

    Я написал уже.
     
  10. Unikolai

    Unikolai Гик

    а, искать в поисковике, который по этому поводу ничего не находит)ясно)
     
  11. fogary

    fogary Гик

    На запрос: "attiny i2c", одна из первых ссылок - http://playground.arduino.cc/Code/USIi2c
    Если это Ваш случай, то про библиотеку придется забыть и запросы к RTC писать самому.
     
  12. Securbond

    Securbond Гуру

    Может я плохо смотрю, но я так и не увидел какой у вас всётаки камень? attiny много всяких...

    Код (C++):
    #include <TinyWireM.h>
    #include "TM1637.h"
     
    #define CLK 1
    #define DIO 4

    TM1637 tm1637(CLK,DIO);

    ///// часы ..
    byte decToBcd(byte val){
      return ( (val/10*16) + (val%10) );
    }

    byte bcdToDec(byte val){
      return ( (val/16*10) + (val%16) );
    }

    void setDateDs1307(byte second,        // 0-59
                       byte minute,        // 0-59
                       byte hour,          // 1-23
                       byte dayOfWeek,     // 1-7
                       byte dayOfMonth,    // 1-28/29/30/31
                       byte month,         // 1-12
                       byte year)          // 0-99
    {
       TinyWireM.beginTransmission(0x68);
       TinyWireM.send(0);
       TinyWireM.send(decToBcd(second));  
       TinyWireM.send(decToBcd(minute));
       TinyWireM.send(decToBcd(hour));    
       TinyWireM.send(decToBcd(dayOfWeek));
       TinyWireM.send(decToBcd(dayOfMonth));
       TinyWireM.send(decToBcd(month));
       TinyWireM.send(decToBcd(year));
       TinyWireM.endTransmission();
    }

    void getDateDs1307(byte *second,
              byte *minute,
              byte *hour,
              byte *dayOfWeek,
              byte *dayOfMonth,
              byte *month,
              byte *year)
    {

      TinyWireM.beginTransmission(0x68);
      TinyWireM.send(0);
      TinyWireM.endTransmission();

      TinyWireM.requestFrom(0x68, 7);

      *second     = bcdToDec(TinyWireM.receive() & 0x7f);
      *minute     = bcdToDec(TinyWireM.receive());
      *hour       = bcdToDec(TinyWireM.receive() & 0x3f);
      *dayOfWeek  = bcdToDec(TinyWireM.receive());
      *dayOfMonth = bcdToDec(TinyWireM.receive());
      *month      = bcdToDec(TinyWireM.receive());
      *year       = bcdToDec(TinyWireM.receive());
    }

    float get3231Temp(){
      byte tMSB, tLSB;
      float temp3231;

      TinyWireM.beginTransmission(0x68);
      TinyWireM.send(0x11);
      TinyWireM.endTransmission();
      TinyWireM.requestFrom(0x68, 2);

      if(TinyWireM.available()) {
        tMSB = TinyWireM.receive(); //2's complement int portion
        tLSB = TinyWireM.receive(); //fraction portion

        temp3231 = (tMSB & B01111111); //do 2's math on Tmsb
        temp3231 += ( (tLSB >> 6) * 0.25 ); //only care about bits 7 & 8
      }
      else {
        //oh noes, no data!
      }

      return temp3231;
    }
    /////////////////

    void setup() {
     
      TinyWireM.begin();
      tm1637.init();
      tm1637.set(1); // яркость, от 0 до 7

    }

    void loop(){
     
      byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
      getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
     
      byte temp = get3231Temp();
     
      int8_t TimeDisp[4];
      if ((second % 2) == 0)
         
      {
        tm1637.point(POINT_OFF); // выключаем точки
        TimeDisp[0] = hour / 10;
        TimeDisp[1] = hour % 10;
        TimeDisp[2] = minute / 10;
        TimeDisp[3] = minute % 10;
          }
      else
      {
        tm1637.point(POINT_ON); // включаем точки
        TimeDisp[0] = hour / 10;
        TimeDisp[1] = hour % 10;
        TimeDisp[2] = minute / 10;
        TimeDisp[3] = minute % 10;      
    }
     
      tm1637.display(TimeDisp); // отправляем массив на экран
     
    }
    Вот простой код, который у меня на часиках Attiny 85 (digispark) 100% работает.
     
  13. Unikolai

    Unikolai Гик

    да, у меня те же 85, но если вставляю ваш код, потсто чтобы проверить, опять таки выдает ошибку компиляции..
     
  14. Securbond

    Securbond Гуру

    Проверяйте библиотеки и правильность выставленного камня у меня стоит Digispark (Default-16,5mhz)
    скетч компилится без проблем.
    proof.JPG
     
  15. Unikolai

    Unikolai Гик

    значит таки несовместимые коды от дигиспарка и attiny85 чистого...
     
  16. Securbond

    Securbond Гуру

    А при чем тут вообще железо, если у вас код не компилится ?
     
  17. Unikolai

    Unikolai Гик

    вопрос очень интересный) я сам понять не могу ничегошеньки)но суть в том, что стоит мне только вставить строчу #include <iarduino_RTC.h>, то всё
    в библиотеке видимо есть что-то, что тинька не переваривает, но все же точно я не знаю, я недавно 'bnv стал заниматься
     
  18. Securbond

    Securbond Гуру

    Может просто библиотека не установлена ?

    Вот еще статейка, в ней есть несколько слов о различии digispark и голой Attiny
    http://mysku.ru/blog/china-stores/36691.html
     
  19. Unikolai

    Unikolai Гик

    не, на нанке все равботает...
     
  20. Unikolai

    Unikolai Гик

    Подскажите пожалуйста, а прерывания от будильника работают при питании от батарейки? И сколько в таком случае они будут потреблять?