Arduino DUE - проблема с I2C ?

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Добрый вечер, приобрел по случаю DUE и пару датчиков (давление, часы и т.д.). На Мега и Дуемалинове все работает прекрасно, на DUE - глухо и печально. Порылся на офф сайте- ребята говорят что подтягиващие резаки по 1.5к вместо 10к. на SDA и SCL.  Монтаж у меня совсем мелкий , пока не нашел их и не выковыривал. Запаралелил свои на 10К - подтянув их к +. Что -то поменялось, но результат не радует. Шина вроде как жива. Программа для сканирования шины I2C - на меге и уно прекрасно все находит, на DUE молчит. Дескать ничего не найдено. Как бы мать их так те часы и тепературу, DS18b20 прикрутил и все работает, но хочется знать правду. С чего начать? 

maksim
Offline
Зарегистрирован: 12.02.2012

Вопрос сформулируйте. И опишите как подключаете датчики.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

начать нужно с правильных библиотек :)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

maksim пишет:

Вопрос сформулируйте. И опишите как подключаете датчики.

Максим часы не будут работать с той же библиотекой что и для AVR.

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Вот. Максим подтянулся, дело пойдет. 

Вот такой модуль:

http://arduino.ru/forum/apparatnye-voprosy/podklyuchenie-tiny-rtc-i2c - прекрасно работает на уно меге и т.д.

на DUE с теми же библиотеками не пашет. 

http://arduino.ru/forum/apparatnye-voprosy/tinyrtc-v11-na-ds1307z- этот модуль так же работает хорошо на мега-уно.

http://arduino.ru/forum/apparatnye-voprosy/podklyuchenie-barometra-bmp08... барометр практически такой же, как на фото, работает везде кроме DUE.

IDE 1.5.2 библиотеки вроде последние что нарыл. По крайней мере на RTC взял от создателя UTFT с его сайта. 

Где-то на форуме читал что-то вероятно не так с самой библиотекой Wire, что-то там внутри нужно заменить на что -то, но, пока не смог отыскать тот топик. 

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

https://github.com/oskarirauta/RTCdue

тоже самое касается и барометра.. найдите библиотеку заточеную под дуе...

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Благодарю. Попробовал, работает но криво. От чего -то 2019 год показывает и время не как на компе. Но вроде работает. 

Попробую в ручно режиме выставить верное время. 

По барометру не нашел пока ничего подходящего. Это теперь купи за 70 уе цацку и пиши под нее библиотеки, потому что криворукие инженеры просчитались, или так и было задумано? 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Hayabusa пишет:

По барометру не нашел пока ничего подходящего. Это теперь купи за 70 уе цацку и пиши под нее библиотеки, потому что криворукие инженеры просчитались, или так и было задумано? 

Инженеры никуда не просчитывались... не ровняйте ардуины с дуе..

Утрируя..

ардуины это по сути очень продвинутые микроконтролеры... к которым прилепили интерпретатор С...

а дуе это по сути микропроцесор к которому прибацали кучу выводов как у микроконтролера...

и их попытка прикрутить ДУе к старому IDE вообще можно сказать увенчалась успехом..

а библиотеки правьте и будет вам счастье...

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Правте... я могу турбину на мотоцикл установить и на стенде выдвить последнее из движка. А править библиотеки пока не силен. 

По делу,

 rtc.adjust(DateTime(__DATE__, __TIME__));

Что нужно вставить в эту строку, дабы в ручную забить время, дату. Пробовал и строкой и через запятую, глядя на сишный код самой либы.  Ругается, сволочь...

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

эта строчка вставляет время с вашего компа :) на момент обработки кода асемблером...

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Я понимаю, я хочу сам устновить время, в каком формате (какой командой) мне выполнить это? 

rtc.adjust(DateTime(29,07,2013, 23,52,00));

компилятор ругается. 

 

maksim
Offline
Зарегистрирован: 12.02.2012
    DateTime (uint16_t year, uint8_t month, uint8_t day,uint8_t hour =0, uint8_t min =0, uint8_t sec =0);
или
    DateTime (const char* date, const char* time);

Покажите что за ошибка вылетает с этой строчкой

rtc.adjust(DateTime(2013,07,29, 23,52,00));

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Виноват. Добавил вкладками сишные файлы ,что бы понять как менять дату, ругалось на редефинишен. В болкноте просто все слитно было. Убрал файлы из папки скетча ,все гуд. Но время один хер, 2010 го пишет. Вынимаю питание- сразу меняется на 2000.

Подключаю обратно +5 (+3.3)- пишет 2010, хотя уже ведь скотине явно указал 2013 и закомпилилось и залилось. Паскуда....

и вот еще, ознакомтесь:

http://forum.arduino.cc/index.php?topic=174862.0

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Hayabusa пишет:

и вот еще, ознакомтесь:

http://forum.arduino.cc/index.php?topic=174862.0

с этим бредом я уже знаком, выглядит как два школьника расказывают друг другу за какой конец нужно держать паяльник...

как бы вам обьяснить.. SCL и SDA это прямые выводы с процесора, там нет ни каких резисторов которые можно было бы отпаять и припаять побольше :)

библиотеки никто кроме вас не доработает, ибо плата не дешовая ( относительно той же мега2560), и не настолько пока массовая что бы кто то заморачивался

И кстати библиотека нормально работает. Сам ей пользуюсь..

rtc.begin(DateTime( 2012, 06, 10, 12, 45, 12));

тоже самое и с настройкой

rtc.adjust(DateTime( 2012, 06, 10, 12, 45, 12));

А про турбину на мотоцикл гыгы, вы таки делаете мне смешно... Я могу дом построить за пару месяцев ( начиная с ровной земли и заканчивая установкой мебели), могу двигатель в машине перебрать часов за 6-8, могу торт испеч со всякими фенечками и украшениями, я могу долго продолжать список, ибо жизнь по разному разворачивала...

 Все что было нужно мне, я уже поправил. В частности библиотека по этим часам... Увижу что вам нужно что то еще из того что уже есть у меня, поделюсь! А править библиотеки специально для вас, как бы это сказать повежливей, зачем это мне?

PS...Вспомнилась одна клиентка, она подошла более творчески.. Дамочка не бедствовала, но тем неменее..
-Я тут колбасу копчу, давай я тебе не деньгами а колбасы накопчу!

ну то что у меня было лицо примерно так О.о, у меня возник только один вопрос ( некасаясь того что колбасы той пары тон пришлось бы коптить)
-А вашу колбасу где принимают к оплате? Могу я ей за бензин заплатить? Или может ее в оплату за комунальные услуги принимают?

 

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Puhlyaviy пишет:

. SCL и SDA это прямые выводы с процесора, там нет ни каких резисторов которые можно было бы отпаять и припаять побольше :)

Не соглашусь с Вами, на схеме четко видно два резака по по 1к5 в подтяжке к питанию 3.3в. На меге к примеру, там стоят по 10к. Отсюда и вывод, мол замени и все будет, это подтверждает и некий юзер который отпаивает их 

Если есть возможность, выложить правленую либу, буду благодарен. Та, что Вы привели изначально- не компилит даже собственные примеры. 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Hayabusa пишет:

Puhlyaviy пишет:

. SCL и SDA это прямые выводы с процесора, там нет ни каких резисторов которые можно было бы отпаять и припаять побольше :)

Не соглашусь с Вами, на схеме четко видно два резака по по 1к5 в подтяжке к питанию 3.3в. На меге к примеру, там стоят по 10к. Отсюда и вывод, мол замени и все будет, это подтверждает и некий юзер который отпаивает их 

Если есть возможность, выложить правленую либу, буду благодарен. Та, что Вы привели изначально- не компилит даже собственные примеры. 

резисторы нашел. они их там хитро на принципиальной схеме отрисовали...

библиотека работает нормально без всяких перепаек... если у вас выдает ошибки.. то озвучте какие ошибки выдает.. там в принципе только в одном примере ошибка. имя библиотеки не поменяли...

https://github.com/Puhlyaviy/RTCdue

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Спасибо за либу, но, к сожалению ничего не изменилось. Может у меня с DUE (Freaduino) косяк? Проверил RTC на меге- рабоатет нормально.

У вас DUE или другой контроллер? 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Дуе у меня, оригинальная.

В примерах есть софтерные часы на базе это библиотеки..

попробуйте пример для начала..

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Вот в нем и ошибка компиллятора:

 

In file included from softrtc.pde:3:
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:10: error: expected ')' before 't'
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:11: error: expected ')' before 'year'
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:14: error: 'uint16_t' does not name a type
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:15: error: 'uint8_t' does not name a type
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:16: error: 'uint8_t' does not name a type
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:17: error: 'uint8_t' does not name a type
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:18: error: 'uint8_t' does not name a type
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:19: error: 'uint8_t' does not name a type
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:20: error: 'uint8_t' does not name a type
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:25: error: 'uint32_t' does not name a type
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:28: error: 'uint8_t' does not name a type
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:34: error: 'uint8_t' does not name a type
I:\Arduino\DUE\arduino-1.5.2\libraries\RTClib/RTClib.h:36: error: 'uint8_t' does not name a type
softrtc.pde: In function 'void loop()':
softrtc:16: error: 'class DateTime' has no member named 'day'
softrtc:18: error: 'class DateTime' has no member named 'month'
softrtc:20: error: 'class DateTime' has no member named 'year'
softrtc:22: error: 'class DateTime' has no member named 'hour'
softrtc:24: error: 'class DateTime' has no member named 'minute'
softrtc:26: error: 'class DateTime' has no member named 'second'
softrtc:30: error: 'class DateTime' has no member named 'unixtime'
softrtc:33: error: 'class DateTime' has no member named 'unixtime'
softrtc:36: error: 'class DateTime' has no member named 'day'
softrtc:38: error: 'class DateTime' has no member named 'month'
softrtc:40: error: 'class DateTime' has no member named 'year'
softrtc:42: error: 'class DateTime' has no member named 'hour'
softrtc:44: error: 'class DateTime' has no member named 'minute'
softrtc:46: error: 'class DateTime' has no member named 'second'

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

сравните ради интереса
https://github.com/Puhlyaviy/RTCdue/blob/master/examples/softrtc/softrtc.pde

я даже скажу где. стрчока номер 3. с тем что у вас.

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Скопировал- вставил- таже ошибка. ДА и хер на него тот RTC. Буду ждать офф библиотек. Почему народ так неохотно на DUE переходит?

maksim
Offline
Зарегистрирован: 12.02.2012

Именно поэтому.

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Мда... видимо не всем нужно 33 датчка в реалтайме на 7 дюймах LCD :))

Всем спасибо за участие. 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

странно это все... у меня все нормально работает.. причем софтерный пример вообще работает без микросхемы часов.. он опирается на милис процесора..

 

ожидание ОФФ библиотек клевое занятие.. особенно если учесть что сообщество пишет библиотеки.. а производителю вообще начхать....

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

да, как вариант могу запаковать 150% работающую библиотеку со своего жесткого диска и послать вам... если и она будет выдавать ошибки, то я уже не знаю... останется только порекомендовать вам дольше висеть на турнике, что бы руки выпрямлялись :)

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Если не сложно, конечно, буду премноо благодарен. 

К слову, одна из библиотек, работает и у меня без самого модуля, и я с легкостью могу корректировать время программно.  отсюда вопрос, в папке libraries куча версий библиотеки RTC. Что бы не путаться самому, я папки именую по типу- RTCDue, RTCDu, RTC, DS1370, RTClib и т.д. По факту, в скетче одна и таже строка:

#include <Wire.h>
#include "RTClib.h"

может ли компиллятор запутаться и тем самым вводить меня в заблуждение? То есть, надо ли мне грохать похожую библиотеку ,перед испытанием следующей ,якобы работающей у других пользователей? Может тут собака порылся?  

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

а ну тгда понятно откуда у вас куча проблем...

1.уберите лишние библиотеки из папки библиотек

2. RTCdue не нужна библиотека wire

она и без нее хорошо работает..

Hayabusa
Offline
Зарегистрирован: 29.03.2012

Хз. Короче забил я на часы. Мать их так. 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Hayabusa пишет:

Хз. Короче забил я на часы. Мать их так. 

дык там со всеми прибамбасами такая песня :) любую фиговину пытаетесь прилепить в к ДУЕ и имеете проблемы с библиотеками:)

dardik
Offline
Зарегистрирован: 09.03.2013

Вот и я приобрел Arduino Due (не оригинал). У кого есть ссылки на работающие библиотеки для bmp085, DHT22, DS3231 для DUE? Попробовал я и https://github.com/oskarirauta/RTCdue - не работает у меня. Софтерные часы на базе этой библиотеки работают. Кроме того пробовал библиотеки для bmp085  http://code.google.com/p/bmp085/downloads/list  и почитал и исправил для DUE вот тут http://code.google.com/p/bmp085/issues/detail?id=1 все равно не работает ничего (. Такое ощущение, что что-то с шиной I2C. Читал на форумах зарубежных - тоже у людей проблема с I2C на DUE. Какие мысли? Может кто-то решил проблему?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

dardik пишет:

 Такое ощущение, что что-то с шиной I2C. Читал на форумах зарубежных - тоже у людей проблема с I2C на DUE. Какие мысли? Может кто-то решил проблему?

мыться нужно что бы ощущения не мучили... нормально все с шиной. работает она как обычно на 20 и 21 пине.. часы железные прикручивать никакого смысла нет..

dht22 тут уже товарищ выкладывал рабочий скриптик. не библиотека. но работает.

dardik
Offline
Зарегистрирован: 09.03.2013

Спасибо. Буду смотреть.

dardik
Offline
Зарегистрирован: 09.03.2013

Почему часы железные прикручивать никакого смысла нет? В железных часах есть смысл - они держат время в случае пропадания питания на arduino.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

dardik пишет:

Почему часы железные прикручивать никакого смысла нет? В железных часах есть смысл - они держат время в случае пропадания питания на arduino.

потому что ваша дуе один хрен куда то подключена куда она стучит о своем состоянии. а попутно при инициализации стянуть время не составляет проблем. батарейку к ней прикрутите на всякий случай

pmaster
Offline
Зарегистрирован: 23.05.2011

по поводу шины i2c. на стандартных контактах 20 и 21 я так и не добился ничего. Смотрел анализатором, там даже запросы не шли на RTC. подключил к SCL1 и SDA1 , всё заработало. во всяком случае RTC я запустилось сразу. ну и естественно в параметрах инициализации надо указывать 

Wire1.begin();

mal333
Offline
Зарегистрирован: 23.04.2014

Камрады! Есть ли у кого рабочая либа I2C или ссылка на нее, в которой возможна безстоповая передача от мастера? Все, что ищется написано для AVR, для кортекса так и не нашел :( Иными словами нужно как в http://www.dsscircuits.com/articles/86-articles/66-arduino-i2c-master-library, только для DUE. Стандартная Wire не позволяет отчего-то так делать, хоть там и заявлено, что можно.

mal333
Offline
Зарегистрирован: 23.04.2014

Уважаемый AmLimit допилил библиотеку на DUE! У кого раньше были проблемы с устройствами, которые требуют повторный старт после записи модифицируйте либу, как написано в https://github.com/arduino/Arduino/issues/2428

Security000
Offline
Зарегистрирован: 30.10.2015

Читал где-то как один товарищ тоже подключал часы. Тоже не работали. Потом он обнаружил интересную вещь: оставил провода SDA, SCL и GND, а VCC отключил. И всё заработало.

vde69
Offline
Зарегистрирован: 10.01.2016

Security000 пишет:
Читал где-то как один товарищ тоже подключал часы. Тоже не работали. Потом он обнаружил интересную вещь: оставил провода SDA, SCL и GND, а VCC отключил. И всё заработало.

это называется паразитное питание...

я то-же пару дней с RTC как в сабже возюкался... там могут быть всего несколько заморочек

1. не инициализируется шина wire (или не на тот порт, что важно!!! особенно когда их несколько), в моем коде параметр reg_Wire = 0, но может быть и другим, тогда ноги будут другие!!!

2. перепутаны контакты SCL SDA, шина работает, но данные - бред...

3. по сколько шина заточена на биты (да еще и на непрвильные) - библиотека должна быть нормальная...

банально вот код который должен работать без библиотек:

#include <Wire.h>

#define DS1307_ADDRESS 0x68

   uint8_t bcd2bin (uint8_t val) { return val - 6 * (val >> 4); }
   uint8_t bin2bcd (uint8_t val) { return val + 6 * (val / 10); }

//
//
//
//

    Wire.begin(); // не забываем - шина может быть нужна и другим, и про параметр не забудем :)


       Wire.beginTransmission(DS1307_ADDRESS);
       Wire.write(reg_Wire);  
       Wire.endTransmission();
  
       Wire.requestFrom(DS1307_ADDRESS, 7);
         
       uint8_t ss = bcd2bin(Wire.read() & 0x7F);
       uint8_t mm = bcd2bin(Wire.read());
       uint8_t hh = bcd2bin(Wire.read());

       Wire.read();
         
       uint8_t d = bcd2bin(Wire.read());
       uint8_t m = bcd2bin(Wire.read());
       uint16_t y = bcd2bin(Wire.read()) + 2000;

 

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

Hayabusa пишет:
.....Как бы мать их так те часы и тепературу, DS18b20 прикрутил и все работает, но хочется знать правду. С чего начать?

Ответ:

Hayabusa пишет:
Добрый вечер, приобрел по случаю DUE...

Puhlyaviy пишет:
...могу двигатель в машине перебрать часов за 6-8...

Мне надо прокладку ГБЦ поменть. Можно обращаться?