в этом примере если не убрать отключение передатчика после передачи пакета данных
Код:
WriteCMD(0xC001);
то не принимается вообще ничего.
Stepan писал(а):
также стоит немного изменить алгоритм, я на rfm12 делаю так: по приходу 0 на nIRQ начинаю принимать пакет данных, но считываю каждый байт не как в примере (см. выше) по приходу 0 на nIRQ, а по выставлению 1 в бите FIFO IT в регистре статуса RF модуля, регистр статуса - см. даташит на модуль http://www.hoperf.com/rf_fsk/rf01.htm
попробовал так. но бит FIFO IT никогда не выставляется в 1 при этом статус всегда содержит B80.
Так все-таки может есть возможность немного подкорректировать скорость передачи данных?
Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн мар 16, 2009 07:37:42 Сообщений: 126 Откуда: Новосибирск
Рейтинг сообщения:0
Сам с радиотелефонами никогда не возился, поэтому никакого мнения по использованию их модулей не имею. А одной картинки маловато, неизвестно как логика у него работает, как конфигурируется...
Мои программы заточены именно под RFM12 и их достаточно сложно переделать под другую логику. Но с определённой долей усердия возможно всё .
Предлагаю включить в "Умный дом" идею управления освещением и вентиляцией. Схему я бы дополнил ещё и автоматическим наливом ванны водой определенной температуры Я вижу себе это так: выбираем пункт "налить ванну", выбираем температуру (либо подтверждаем введенную по-умолчанию) и после налива ванны получаем сигнал - ванна готова. Управлять как с пульта, так и разместить возле ванны индикатор с ЖК экранчиком с подсветкой.
Замерить уровень воды в ванной, и температуру, насколько я понимаю, не проблема. Заливать воду лучше отдельно, не используя штатный кран на случай ручного управления, - врезавшись в акриловую ванну отдельными отводами с электро-регулируемыми кранами. Ими же и регулировать температуру. Предусмотреть аварийное отключение при не закрытом сливном отверстии (по таймауту?), либо при превышении уровня воды (например если сбой в кране)
Степан, подскажите пожалуйста. Делаю ребенку игрушку. У Вас в передатчике генерируется преамбула и синхрослово, а потом четыре байта и дамми байт.А в приемнике FIFO выставляется на прием 8 бит (а принимаем 4 байта). Я правильно думаю, что после синхрослова я могу послать сколькоугодно байт данных? Помогите разобраться
Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн мар 16, 2009 07:37:42 Сообщений: 126 Откуда: Новосибирск
Рейтинг сообщения:0
Давно не брал я мышку в руки . Че то оповещения о новых сообщениях в этой теме не приходят...
Misshhaaa, да, правильно думаете, я правда пакеты больше 250 байт не посылал, но это по другим причинам, у меня просто первый байт в пакете - его длина.
Sinister, вообще информация о тактовых частотах в заголовке исходника написана, но так как я стал ещё выставлять и фьюзу BODLEVEL, то прилагаю скрины из AVRStudio.
Народ, очень нужны исходники програм на Си.
в АССЕМБЛЕРЕ не соображаю, а с СИ дружу:)
помогите пожалуйста:)
может есть программа, преводящая из ассемблера в си?
Вопрос 2 Stepan.
Я тоже начал делать УД по твоей статье "УД растем", сейчас собраны внешний датчик и пульт с ЖКИ.
Мелтовского индикатора у меня небыло, зато имеется несколько штук от winstar, пульт ожил после прошивки, но кодировка букв не
совпадает(хотя цифры совпали)
Я изменил вывод букв для винстара. Но так как знака градуса в знакогенераторе нет, я поставил букву "С"
Вопрос такой есть, AVR studio 4.12 b460 ругнулся на 2 строки содержащим WGM21, может там ошибка? не WGM21 а WGM12 ? я псоледнее поставил, откомпилилась нормально, на первый взгляд все работает ...
И еще вопрос, должен ли пульт увидеть внешний термодатчик сразу после включения? если да, то буду искать в уровнях сигналов меги и RFM12В
Сам термодатчик проверял осциллом, тинька посылает данные раз в 8 секунд в RF02, но не знаю излучает ли последняя в эфир.
Вложения:
Комментарий к файлу: Пульт и внешний термодатчик, знак градуса после температуры еще не изменен под винстаровский экран +УТД.jpg [155.02 KiB]
Скачиваний: 559
Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн мар 16, 2009 07:37:42 Сообщений: 126 Откуда: Новосибирск
Рейтинг сообщения:0
WGM21 - это правильно, это третий бит регистра TCCR2 (см. даташит), а WGM12 это третий бит регистраTCCR1B, т.е. эта замена подойдёт, но при чтении исходника может возникнуть путаница. Надо либо прописать этот бит в m32def.inc , либо заменить всю строчку:
ldi r16,(1<<WGM21|0<<CS20) на ldi r16,(1<<3|0<<CS20).
Температура должна выводиться сразу.
Про rfm12b:
Сам этот модуль не включал, но думаю надо так (см. аттач).
Как его проверить: при приёме на nIRQ выходе rfm12 выдаёт ноль, после окончании приёма nIRQ должен выставляться снова в 1.
Приобрёл RFM12 и совсем запутался с таким изобилием настроек. Пожалуйста, подскажите, какие значения нужно передать для инициализации, отправки и приёма данных.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения