Перейти к содержанию
    

DiMomite

Свой
  • Постов

    47
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о DiMomite

  • Звание
    Участник
    Участник
  • День рождения 20.10.1985

Контакты

  • Сайт
    Array

Информация

  • Город
    Array
  1. Скорее всего ошибка в функции приема: uint8 RF12_RECV_(void) { uint16 data; WAIT_NIRQ_LOW(); writeCmd(0x0000); data = writeCmd(0xB000); return (data & 0x00FF); } Потому что WAIT_NIRQ_LOW(); используется только при передаче. В документе, который я приложил во втором сообщении в этой тебе как раз это и описано на странице 6 сверху. Если очень сильно нужно работать с приемником по прерываниям, то надо использовать вывод FFIT/DCLK (сам не проверял, потому что нашел другой более подходящий для меня способ, о котором ниже). Если не изменяет память, то у меня тоже шли постоянные 0x00 когда я делал с WAIT_NIRQ_LOW(); В том же документе для приемника приведен такой код: unsigned char rfRecv() { unsigned int data; while(1) { data = writeCmd(0x0000); if ( (data&0x8000) ) { data = writeCmd(0xB000); return (data&0x00FF); } } } Объясню это словами: для того что бы знать принят байт или нет, в модуль надо писать пустое слово 0x0000, и смотреть установлен ли в принятом слове старший байт. Но мне этот метод не понравился из-за достаточно большой длительности. Однако, если учесть, что радиомодуль передает данные старшим битом вперед, то можно просто смотреть на уровень сигнала на ножке MISO микроконтроллера предварительно выбрав модуль и опустив уровень на ножке MOSI. (Этот метод показан на странице 25 родного даташита на микросхему RF12B). Кроме того я таким образом еще и проверял наличие данных для приема в основном цикле основной программы: опускаем CS, опускаем MOSI, если на ножке MISO высокий уровень, то можно принимать данные. Прилагаю свой вариант работы с модулем взятый из своего проекта. Код точно рабочий. Если где поудалял из файлов нужные #define, пиши, добавлю. Хотя повторюсь, что если требуется максимальная скорость обнаружения принятых данных, то нужно выделить для прерываний от приемника отдельный вывод. RFM12B.rar
  2. Я так понял, что это "Synchron pattern Command" , описывается сразу после "FIFO and Reset Mode Command" . Командой writeCmd(0xCED4); задается, что в качестве нулевого байта будет использоваться 0xD4. Модуль может использовать в качестве синхронизирующей последовательности либо 1, либо 2 байта. Второй (Byte1) всегда равен 0x2D и включается битом sp в команде "FIFO and Reset Mode Command ", а первый (Byte0) можно задать самостоятельно как раз командой 0xCEхх. Сам я это не проверял, использую рекомендованное значение, так что прокомментировать не могу. И еще. Тут http://radio.delanet.ru/content/view/571/46/ можно скачать генераторы кода инициализации.
  3. В приложенной выше pdf-ке это место даже выделено на странице 4 во втором листинге writeCmd(0x8299); //er,!ebb,ET,ES,EX,!eb,!ew,DC (bug was here) а в родном документе от hoperf (приложил к посту ниже) на странице 20 в инициализации приемника есть такая строчка RFXX_WRT_CMD(0x8239);//!er,!ebb,ET,ES,EX,!eb,!ew,DC , причем, в инициализации передатчика на странице 14 эта строчка такая же, что явно указывает на ошибку. В примере для PIC этой ошибки нет. Я ее обнаружил когда пример не заработал и начал проверять секцию инициализации модуля. Тот пример, что я привел выше, запустился на макете сразу без всяких проблем. Попробуй с ним. Если будут проблемы, то надо проверять железо. И еще. В примере от производителя используется программная реализация SPI. Проверял и с аппаратной в режиме mode0 (CPOL=0, CPHA=0). Частота должна быть не выше 10МГц(частота кварца на модуле)/4=2,5МГц. Я использовал 20/16=1,25МГц. RF12B_code.pdf
  4. Если подключал к AVR пользуясь примером от производителя, то там ошибка в инициализации, кажется, приемника. Ниже прикладываю проверенный пример работы взятый уже не помню где. rfm12b.zip rfm12b_and_avr__quick_start.pdf
  5. Непосредственно по Delphi помочь не могу, так как писал работу с HID на С. В качестве простого стартового примера на С использовал этот http://www.telesys.ru/wwwboards/mcontrol/2...es/631258.shtml , тут есть небольшие разъяснения как искать устройства на шине и посылать/принимать репорты. Ниже приложил пример HIDTest с диска из книжки Агурова - там на Delphi показано как получать хэндл устройства, и считывать некоторые основные дескрипторы. Думаю что эти два примера в купе помогут разобраться. HIDTest.rar
  6. В CVAVR надо писать так: eeprom unsigned char a[10];
  7. Получил сегодня такое же письмо, но ника автора в нем уже не было. Похоже что удалился успешно.
  8. А JTAG на порте С отключен?
  9. unsigned char arr[10]={'z','S','"',...,'g'}; вы это подразумевали?
  10. Там же на торрентах :) : __http://torrents.ru/forum/viewtopic.php?t=412992 _________2003_10.rar _________2003_11.rar _________2003_12.rar
  11. Вот то, что просили. 2.728_74.rar 2.730_73.rar 2.755_87.rar 2.756_76.rar Если надо еще что-то, пишите, скачаю, выложу.
  12. На торрентах есть множество ГОСТ-ов. __http://torrents.ru/forum/viewtopic.php?t=537987 Вот скачанный оттуда упомянутый тут ГОСТ 2.702-75. 2.702_75.rar
  13. В CodeVision можно просто использовать #pragma rl+ и #pragma rl- для того, что бы писать в компиляторе русскими буквами выводимый текст. Таким вот образом: #pragma rl+ lcd_putsf ("Русский текст"); #pragma rl-
  14. Это просто сборки пары комплементарных транзисторов: UMZ1N, UMZ2N, UMY1N, UMY3N, UMY4N, BC847PN Это сборки "цифровых" (с парой резисторов) BCR10PN, BCR08PN, BCR22PN, BCR48PN Может что подойдет.
  15. Насколько мне известно самые низкие цены на Atmel на Виакоме. Вот для сравнения ссылка на харьковский магазин _http://kosmodrom.com.ua/product.php?page=0&name=avrdragon&okbutton=%CF%EE%E8%F1%EA доставка у них Автолюксом. Где еще на Украине есть Драконы, я не знаю. А свой Дракон я в Одессе брал вообще за 450грн., но это была контора дикий посредник. Только со потом узнал где есть дешевле.
×
×
  • Создать...