0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 56
1

DHT11 и DE1 Altera

17.04.2013, 19:50. Показов 4054. Ответов 31
Метки нет (Все метки)

Здравствуйте.
Решил попробовать подключить датчик температуры и влажности к DE1 Altera используя язык VHDL, но столкнулся с проблемой: В DHT11 '1' и '0' отличаются только длиной сигнала. Поэтому, для считывания информации надо использовать задержки. Но у меня не получается реализовать их. Нашел в мануале входной clock, работающий на частоте 27МГц. Попробовал написать цикл for, который 13500000 раз считывается сигнал с этого clock'а, но все равно задержки нет. Что делать? Есть еще какие-нибудь способы сделать задержку?
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2013, 19:50
Ответы с готовыми решениями:

Реализация протокола ModBus на DE1-SoC
Работаю над реализацией протокола ModBus RTU на DE1-SoC. Собрала в Quartus II процессор Nios II с...

Реализация протокола ModBus на DE1-SoC
Работаю над реализацией протокола ModBus RTU на DE1-SoC. Собрала в Quartus II процессор Nios II с...

Altera, Xilinx
Я почему-то совершенно уверен, что тема эта поднималась, но что-то ничего на первый взгляд не...

Altera opencl SDK
подскажите где можно найти лекарство к этой приблуде? ставится в составе Quartus 14, так что,...

31
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
17.04.2013, 21:18 2
...правильно сделали, считать такты. При вашем 13500000 и 27-ми мегагерцах задержка составит 0.5 сек. И вам лучше почитать даташит и сие в качестве затравки http://habrahabr.ru/post/160017/
1
Вложения
Тип файла: pdf DHT11.pdf (842.3 Кб, 18 просмотров)
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 56
17.04.2013, 22:11  [ТС] 3
Эту статью я читал. К Raspberry Pi DHT11 я уже подключал, но там с задержками все гораздо проще.
Может быть, я в коде ошибся? Я сперва хотел написать код, который включит диод, а через 0,5 с выключит, чтобы проверить, работает ли задержка. led прицепил к одному из диодов, а clk подключил к "27 MHz clock input". Но когда запустил код на плате, то даже не успеваю заметить, как загорается диод.
0
Вложения
Тип файла: txt DHT11.txt (453 байт, 15 просмотров)
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
17.04.2013, 22:26 4
...потому что у вас скважность не двойка, у вас после цикла диод гасится и сразу переходит на начало цикла, где перед этим зажигается, сразу же.
1
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 56
17.04.2013, 22:49  [ТС] 5
Что-то не понимаю Почему "после цикла диод гасится и сразу переходит на начало цикла"? Ведь код, связанный с диодами, вынесен за пределы цикла. Сперва загорается диод, потом выполняется цикл, а потом диод гаснет? И при чем тут скважность (новое слово сегодня узнал ). Скважность равна 2 - это когда длина импульса равна половина периода. А как она влияет на работу?
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
17.04.2013, 22:56 6
Сперва загорается диод, потом выполняется цикл, а потом диод гаснет?
иии, дальше то что, такты перестают сразу идти после этого или цикл повторяется вновь?
1
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 56
17.04.2013, 23:11  [ТС] 7
А, я понял о чем вы говорите. После цикла диод гаснет, а потом весь блок process выполняется заново. Т.е. диод погас, а потом сразу же снова загорается. Но тогда диод должен постоянно гореть? А на плате получалось так, что он совсем не горит.
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
17.04.2013, 23:24 8
...это зависит от того как включен светодиод относительно сигнала, на плюс питания или землю. Таки делайте делитель на два внутри для скважности =2, чтобы пауза (0) была = по длительности времени свечения (1) ...или по желанию.
1
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 56
18.04.2013, 00:06  [ТС] 9
Опять не понимаю. Если убрать цикл и led<='0';, то диод горит постоянно. При первом запуске этой программы диод должен загореться на 0,5 секунд, но этого не происходит, то, что произойдет после строки led<='0'; я пока не рассматриваю.
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
18.04.2013, 07:23 10
...сделайте два цикла, по циклу на состояние и увидите что будет.
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 56
18.04.2013, 23:08  [ТС] 11
После led<='0'; добавил такой же цикл. Все равно всегда получается '0'. Запустил еще симуляцию в quartus, там тоже все время '0'. Т.е. проблема в самом цикле - он не работает. Как еще можно задержку сделать?
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
19.04.2013, 07:11 12
...показывайте как делали.
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 56
19.04.2013, 11:37  [ТС] 13
Дак в 3-ем посте код Мне тут еще сказали, что можно D-триггеры использовать для задержки или сделать счетчик и, что Quartus мог оптимизировать код, убрав этот цикл.
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
19.04.2013, 12:36 14
...нет, показывайте как добавили еще цикл в виде полного кода. Квартус не мог оптимизировать, если правильно сделали.

Да, еще можно добавить регистр с обратными связями выходов на вход и просто двигать сигнал по тактам на столько сколько нужно, но этот способ расчитан на малые задержки (расход регистров, что решается опять же добавлением счетчика).
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 56
19.04.2013, 12:48  [ТС] 15
А задержка с помощью счетчика, это, как я понял, создается переменная integer, а потом в цикле for увеличивается на 1 (i:=i+1)?
0
Вложения
Тип файла: txt wait.txt (561 байт, 8 просмотров)
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
19.04.2013, 13:47 16
...странненько, а сам светодиод без циклов через led<='1' и led<='0' в ноль или единицу устанавливается (горит-не горит)?

p.s.: у вас и так задержка с помощью счетчика, я говорил за схемотехническую реализацию оного.
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 56
19.04.2013, 14:32  [ТС] 17
В '1' диод устанавливается. Т.е. если убрать цикл и led<='0', то он будет гореть до тех пор, пока не выключу плату.
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
19.04.2013, 14:49 18
...иии, а когда присваиваете (<=) ноль сигналу 'led', светодиод не гаснет? Просто null пробовали?
0
1022 / 157 / 10
Регистрация: 16.01.2013
Сообщений: 544
19.04.2013, 15:25 19
А зачем вообще делать задержки.
1 Стартовым импульсом передачи бита сбрасываете счетчик
2 Считаете счетчиком такты до следуюшего стартового импульса.
3 очередным стартовым импулсом переносите число из счетчика в регистр и затем сбрасываете счетчик.
4 пока измеряется длительность следующей посылки анализируете число в регистре ели соответствует нулю подаете в приёмник 0 если единице единицу, если длительность не соответствует 0 или 1 - флаг ошибки.(заложить возможные отклонения в инализатор длительностей)
Такты возмите 1Мгц но можно и снизить до 200Кгц
1
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 56
19.04.2013, 16:11  [ТС] 20
Цитата Сообщение от raxp Посмотреть сообщение
...иии, а когда присваиваете (<=) ноль сигналу 'led', светодиод не гаснет? Просто null пробовали?
Не могу проверить led<='0', пока не зажгу диод. А если написать в процессе
led<='0';
led<='0';
то диод гореть не будет.

MaslovVG, т.е. вы предлагаете измерять длительность импульса тактами? На какой-то частоте считываю информацию с пина. И каждый раз, если там 1, увеличиваю счетчик. Как только получаю 0, то анализирую, что получилось на счетчике. Но я в мануале по плате не нашел инфы о том, на какой частоте считывается сигнал с GPIO.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2013, 16:11

Проверка ПЛИС altera на работоспособность
Доброго времени суток, уважаемые. Подскажите новичку (абсолютному) как можно проверить ПЛИС...

Проблема с прошивкой Altera MAX II
Здравствуйте уважаемые форумчане! Обращаюсь к пользователям PinBoard II Rev.2 и в частности к...

Dendy картридж на Altera Cyclone 4
Решил попробовать собрать свой картридж для Dendy. Mapper реализовывать буду на Cyclone 4...

Отладка для ALTERA MAX2
Наткнулся тут случайно на сайт &quot;марсохода&quot; и заинтересовался темой ПЛИС. Подумывал о них давно, да...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.