Ds18b20 на разных камнях

To
Offline
Зарегистрирован: 21.02.2015

День добрый! Прошу помощи у опытных, поскольку сам недавно занялся этим.

Собрал на макетке термометр на arduino nano. Взял пример Simple из библиотеки. Поменял только pin. Взял A3. Все работает как часы. Сделал плату с atmega8L-8p, прошил,фузы не менял,загрузчик не заливал, только скетч. Итог - не работает.

Первая мысль - разница тактовой частоты. Дорожки, напряжение проверил, резистор на датчик 5,6k ( датчик тот же с макетки, работает от 13к до 3,3к. ) Разница еще в том, что в примере вывод на СОМ , здесь на LCD. Показывает все время -127.00. Во втором случае используется внутренний генератор по дефаулту. 

Какие мысли будут?

gena
Offline
Зарегистрирован: 04.11.2012

  У nano микроконтроллер не atmega8L-8p и не известно как будет работать на 16 МГц. Обкатайте скетч на nano с LCD, а уж потом перекомпилируйте на свой микроконтроллер.

Marlen S
Offline
Зарегистрирован: 13.01.2015

У меня почти таже проблемма, но чуть в другом. Когда UNO питается от USB все норм, DS18b20 показывает корректные показание, но как только я подключаю через разьем питания 9v DS падает до -127.00 ( DS на R-5к), хз в чем дело :(((  Но загружая другой скетч, UNO работает корректно...

To
Offline
Зарегистрирован: 21.02.2015

gena пишет:

  У nano микроконтроллер не atmega8L-8p и не известно как будет работать на 16 МГц. Обкатайте скетч на nano с LCD, а уж потом перекомпилируйте на свой микроконтроллер.

что то не очень понятно.

1. LCD прекрасно работает на обоих камнях, иначе бы он ничего не выводил. А так все пишет, но значение -127 

2. Atmega8l-8p работает по паспорту не выше 8 МГц а не 16  . У меня вообще включен внутренний (как я понимаю 1 МГц)

3. Остается библиотека DS. Вопрос касался ее привязки к частоте. Питание на обе конструкции подается с USB.

Пробовал писать скетч мигания диодами- все работает , т.е. Камень сам работает. Сбросы на ногу А3 проходят. Обратно не читает. Думаю или датчик не отвечает из за неправильного опроса то временам импульса или библиотека DS привязана к частоте. Как проверить?

gena
Offline
Зарегистрирован: 04.11.2012

  Я так понимаю, что когда происходит компиляция скуетча, то библиотека DS адаптируется под конкретно выбранную плату Ардуины (т.е. под определённую частоту МК). Изменение частоты работы микроконтроллера нарушает временные параметры протокола 1--Wire. Естественно, что термодатчик правильно работать не будет (да никак не будет).

  Можно попробовать откомпилировать под плату с МК на частоту 8 МГц, и поэкспериментировать на плате, где по умолчанию настроени частота внутреннего генератора тоже 8 МГц. А уже потом думать над уменьшением этой частоты.

To
Offline
Зарегистрирован: 21.02.2015

gena пишет:

  Я так понимаю, что когда происходит компиляция скуетча, то библиотека DS адаптируется под конкретно выбранную плату Ардуины (т.е. под определённую частоту МК). Изменение частоты работы микроконтроллера нарушает временные параметры протокола 1--Wire. Естественно, что термодатчик правильно работать не будет (да никак не будет).

  Можно попробовать откомпилировать под плату с МК на частоту 8 МГц, и поэкспериментировать на плате, где по умолчанию настроени частота внутреннего генератора тоже 8 МГц. А уже потом думать над уменьшением этой частоты.

Вы наверное меня не так поняли. Я компилирую именно код для 8L и он не работает. Вы совершенно правильно заметили в первом предложении об адаптации под конкретный контроллер. Может дело в том, что arduino ide думает будто atmega8 работает на 16 МГц? Но мне не хотелось бы перешивать фьюзы частоты. Я думал что по дефаулту частота известна компилятору? Или что то надо дописать?

gena
Offline
Зарегистрирован: 04.11.2012

   Какую плату Вы указываете компилятору в настройках?

To
Offline
Зарегистрирован: 21.02.2015

gena пишет:

   Какую плату Вы указываете компилятору в настройках?

 

Arduino NG or older  и процессор ATmega8 соответственно.

bwn
Offline
Зарегистрирован: 25.08.2014

To пишет:

gena пишет:

   Какую плату Вы указываете компилятору в настройках?

 

Arduino NG or older  и процессор ATmega8 соответственно.

Скорее всего надо менять значение частоты в board.txt, сам не пробовал, предполагаю))).

To
Offline
Зарегистрирован: 21.02.2015

На какое?

bwn
Offline
Зарегистрирован: 25.08.2014

На которой ваш чип работает 8 или 1. Это смотрите по фьюзам, которые у него выставлены.

gena
Offline
Зарегистрирован: 04.11.2012

To пишет:

gena пишет:

   Какую плату Вы указываете компилятору в настройках?

 

Arduino NG or older  и процессор ATmega8 соответственно.

 

  В таком случае компиляция идёт в расчёте для 16 МГц. На 8 МГц (дефолтные настройки фьюзов Вашего МК) естественно работать не должно.

To
Offline
Зарегистрирован: 21.02.2015

Естественно! С этим никто и не спорит. Так уже скажите как? Где что прописать? Как зашить фьюзы через  arduino ide без загрузчика?

Сделал секцию

atmega8l_noxtal.name=ATmega8L @ 8MHz Internal

atmega8l_noxtal.upload.tool=avrdude  
atmega8l_noxtal.upload.protocol=arduino
atmega8l_noxtal.upload.maximum_size=7168
atmega8l_noxtal.upload.speed=19200

atmega8l_noxtal.bootloader.tool=avrdude      
atmega8l_noxtal.bootloader.low_fuses=0xE4
atmega8l_noxtal.bootloader.high_fuses=0xD9
atmega8l_noxtal.bootloader.path=atmega8
atmega8l_noxtal.bootloader.file=ATmega8L.hex
atmega8l_noxtal.bootloader.unlock_bits=0x3F
atmega8l_noxtal.bootloader.lock_bits=0x0F
 
atmega8l_noxtal.build.mcu=atmega8
atmega8l_noxtal.build.f_cpu=8000000L
atmega8l_noxtal.build.core=arduino
atmega8l_noxtal.build.variant=standard

 

Пробовал прошить bootloader - пишет "efuse" memory type not defined for part "ATmega8" Error while burning bootloader."

 

 

 

 

 

 

 

gena
Offline
Зарегистрирован: 04.11.2012

   Я, к сожалению, не знаю как в среде Ардуины можно настроить библиотеку DS на нужный МК с нужной тактовой частотой. Крутится в голове совет попробовать написать программу в AVR Studio. Там можно задавать тактовую частоту МК, а вот как туда "прикрутить" библиотеку DS - не знаю. Наверняка есть уже готовые библиотеки для студии, нужно искать примеры, советы. Сам с интересом буду ждать совета от "более продвинутых".

To
Offline
Зарегистрирован: 21.02.2015

Спасибо! С "efuse" разобрался, это глюк,подправил файл конфигурации. Сейчас бутлоадер шьется. Посмотрим что выйдет. Может как-то с пустым файлом можно шить фьюзы. Буду ковырять дальше.

bwn
Offline
Зарегистрирован: 25.08.2014

To пишет:

Спасибо! С "efuse" разобрался, это глюк,подправил файл конфигурации. Сейчас бутлоадер шьется. Посмотрим что выйдет. Может как-то с пустым файлом можно шить фьюзы. Буду ковырять дальше.

фьюзы зашьются вместе с бутом, их можно подправить в avrdude.conf

пардон, обманул, в board.txt

To
Offline
Зарегистрирован: 21.02.2015

Это понятно, иначе зачем я это делаю. Мне то бут как раз и не нужен, а заливается он очень долго. Нужны только фьюзы.

bwn
Offline
Зарегистрирован: 25.08.2014

Ну тогда, AVR-Burn-O-Mat.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

To пишет:

Мне то бут как раз и не нужен, а заливается он очень долго. Нужны только фьюзы.

Беретё одну из многчисленных оболочек для avrdude (а можно и через консоль) и читаете/пишете отдельно фьюзы. Лично я пользуюсь оболочкой SinaProg.

To
Offline
Зарегистрирован: 21.02.2015

Ну вот. Прошил фьюзы на int 8 МГЦ и все стало как надо. Всем спасибо за оперативность и участие! К тому же и сам разобрался.

gena
Offline
Зарегистрирован: 04.11.2012

  Так заработал скетч измерения температуры так как надо? 

To
Offline
Зарегистрирован: 21.02.2015

Ну да.

gena
Offline
Зарегистрирован: 04.11.2012

  Так вкраткце опишите, для форумчан, как откомпилировать скетч для МК работающего на частоте отличной от типовых частот.

To
Offline
Зарегистрирован: 21.02.2015

Все наоборот. Я же написал "...Прошил фьюзы на int 8 МГЦ и все стало как надо"  - просто запрограммировал МК на типовую частоту 8 МГц от внутреннего генератора и все заработало. Вообще , как я понял, это засада, когда хочешь получить маленькую тактовую частоту, а скетч работает с real-time. Нужно просто сделать библиотеку с независимыми временными интервалами.  Ведь ISP работает на любых частотах. У меня несколько датчиков с nRF24L01+ прекрасно работают с МК на 1МГц  и с Arduino NANO 16МГц по ISP.

refat
Offline
Зарегистрирован: 20.02.2015

Меня интересует такоя же проблема с "efuse как вы его решили? Потскажите пожалуйста, я новичок в этих делах и многово не знаю, Заранее спасибо).