Я сам только месяц учу программирования поэтому точный диагноз я сказать не могу, но я исправил вывод информации. потом вот этот участок что даёт я так и не понял что с ним что без него
for (i=0;i<devices;)
if (!ds18b20_init(&rom_code[i++][0],20,30,DS18B20_9BIT_RES))
{
sprintf(lcd_buffer,"Init error for\ndevice #%u",i);
lcd_clear();
lcd_puts(lcd_buffer);
while (1); /* stop here if init error */
};
BlackJack писал(а):Доброго времени суток. Пытаюсь поднять DS18B20 на асме.
Припаял подтяжки как в мануале на датчик. Порт на контроллере
приводится мною то в состояние
HI-Z: cbi DDRA, DDR3
cbi PortA, PA3
или в сотояние вывода нуля
sbi DDRA, DDR3
cbi PortA, PA3
Так вот после таких экспериментов у меня сломалось три контроллера (они не хотят программироваться). Что случилось?
напишите в Atmel-техподдержку, пусть проверят - вдруг и правда cbi что-то портит в ядре контроллера...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
а я и не смеюсь. вдруг вы открыли нечно новое, непознанное?
90% причин "непрограммируемости" микроконтроллеров Atmel кроется в неверной прошивке фьюзов и кривых программаторах. тип МК вы не указали, но теоретически может быть случай, когда внешней схемой вы выжжете порт, занятый под сигналы программирования - тогда конечно, дело плохо. из моего небольшого опыта скажу, что КЗ на землю любого порта МК выдерживает вполне нормально, даже греется не всегда, и после восстановления нормальной схемы работает, как ни в чем не бывало. но повторяю - опыт закорачивания у меня небольшой, все-таки стараюсь этого не делать
кстати, здесь на сайте есть моя статья с исходниками на асме - там готовый рабочий модуль работы с датчиками 1-Wire - ничего не палится
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
видимо, не ту статью вы читали статья, которую я имел ввиду, вот эта, она сопровождается подробно разжеванным исходником модуля для работы с 1-wire - там все написано, как управлял...
по-моему, именно через CBI DDRx, n и управлял
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
http://kazus.ru/forum/topic_10496-0-asc-10.html
Это для 51х, там же есть для AVR на си. Никогда не испытывал таких проблем, но все возможно. Так случилось, что больше пишу для 51х. Но эту проблему вижу для AVR впервые. Надо внимательно "посмотреть" все этапы проэкта.
Посмотрел я статьи. Отпускаю и ставлю шину в ноль, так же как у вас.
Проблема на лицо: как только подпаиваем ножку DQ к PA3 / СРАЗУ ЖЕ отрубается SPI программирование такое было и с моей Mega16, и c Attiny2313/ Контроллер находится в коме все порты в Z состоянии. Как будто он на ресете стоит. Хотя ножка ресет 4.8 вольт...
__________???___________
УРРРРРРРРРРРРРРРРРРРРРРРРРРРРРААААААААА!!!!!!!!!!!!!!!!!!!!!!!!
Ответ найден!
Контроллер не программируется - потому что на ножке порта и DQ
держится 5 вольт. А оказывается SPI ПРОСТО ненавидит когда вовремя программирования что-то держится на любом выходе, контроллера.
Решение проблемы:
1) Оживление контроллера просто кодом прописать в рег DDRA, 0b11111111 и прошить.
2)(Обязательно) Питать PULL-up от контроллера,(так как при программировании все порты входят в высокоимпедансное состояние, и на ножке контроллера для питания DSa ничего кроме эфирных помех не будет -> ничего не будет на DQ линии.) Правда существует опасность возбуждения DS датчика, что приведет к появлению напряжения на DQ шине, и контроллер опять войдёт в состояние комы. ПОЭТОМУ Полностью питаем и датчик с ножки контроллера, и Pull-up. Тогда всё будет работать
вообще-то, если бы вы сразу сказали, что повесили датчик на один из портов SPI - проблема решилась бы быстрее (правильно заданный вопрос содержит половину ответа).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Датчик я повесил на PortA3. А ПОДТЯГИВАщИЙ резистор питал от питания +5в с источника. поэтому у меня всё время при программированиии на DQ держалось 5 вольт - что не терпит SPI
У меня тоже есть маленький вопрос по работе с єтими датчиками. Как настроить программу что бы она читала только 9 бит с датчика так как точность -+1 градус достаточна мне, а время преобразование должно бить во много раз меньше, где то видел что 9 бит время 94мс, а 12 - 750мс. считывание температуры провожу следующим образом:
если вы так любите свой КодВижн, то почему бы вам не изучить хотя бы досконально его возможности? там ведь предусмотрена возможность настроить каждый датчик на свое разрешение! и, как я понимаю, в зависимости от заданного разрешения будет и задержка преобразования меняться.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Здрасте, а можно с этого места поподробне? Как датчики настроить? У меня по умолчанию 12 bit, а выводится только целые градусы, CVA demo может из-за этого. Может кто подскажет или прокоментирует команды из библиотеки для работы с этим датчиком.
Собрал термометр по рекомендациям: http://avru.cwx.ru/category/uchebnik подключил датчик DS18B20, но на индикаторе вместо нормальных показаний - "127" на нагрев не реагирует!
Где косяк, не соображу!
Как отличить перереременное напряжение от постояяяяяянного???