BigallS Схема подключения есть в ДШ, если что... На любые вопросы касаемо общения с данным модулем я по возможности отвечу. Вопросы наподобие как запустить SPI или какие фьюзы в меге ставить - это в обучалку. И если вам нечего сказать по теме,
прошу не флеймить, итак во всей теме ни одного поста с конкретной инфой не написали.
Теперь по делу:
Антенну можно не подключать, модули без антенн видят друг-друга на расстоянии около метра. Правильно сконфигурировать регистры (предварительно почитав все тот же мануал AN440) можно в предоставляемом производителем калькуляторе(в приложении к посту), на сайте hoperf.com, у меня он кстати корректно запустился только в 2007 офисе, несмотря на наличие требуемых надстроек в 2003. Моя конфигурация регистров так же в приложении.
Данная конфигурация полностью рабочая, как запустите на ней, уберете баги кода - там уже можете экспериментировать со своей.
Итак, предположим модуль включили, подождали 25 мс, а лучше 50 - у меня 50. Читаем регистр 04h, биты 1-ichiprdy и 0-ipor должны быть равны единицам.
Затем, если все ОК, вкатываем паровозом конфигурацию RFM22 из прилагаемого файла.
(Внимание, данная конфигурация только для модуля 433 МГц с ревизией чипа 6. Не путайте ревизию чипа и модуля!!!111)Например строка
{0x34,0x08}, // preamble = 32bits означает что по адресу 0x34 отправляется значение 0x08
После того как записали конфигурацию, читаем регистр 02h, если все хорошо, то модуль должен находиться в состоянии IDLE - готовность.
В данном модуле оригинально организована работа с антенной, она с помощью PIN-диодов подключается по желанию то к входу, то к выходу микросхемы. Делается это так: при подаче лог.1 на вход RX модуля - антенна подключается к входному каскаду, при подаче лог.1 на TX - к выходному. Не стоит подавать одновременно 1 на оба пина, может закончиться вылетом каскадов входа.
У модуля есть так называемые GPIO - порты ввода-вывода, конфигурируемые регистрами 0B 0C 0D, обратите внимание, что после сброса модуля на GPIO2 выводится меандр частотой 1 МГц - для тактования внешнего контроллера, если это нам нужно. Потому управлять RX и TX будем выводами GPIO0 GPIO1, в конфигурации мы конфигурируем их как выходы, и с помощью регистра 0Eh задаем их логические уровни.
Итак, мы сбросили модуль, отконфигурировали регистры, отсоединили антенну от приемника и передатчика, подав на RX и TX с помощью GPIO0 GPIO1 - нули.
Следующий шаг - в регистрах 05h 06h отключаем все прерывания
Вхолостую (игнорируя результат) читаем регистры 03h 04h - там могут висеть какие-то флаги прерываний, они нам пока не нужны. Чтение этих регистров сбрасывает их значение, то есть когда мы будем обращаться к модулю по этим адресам, чтобы выяснить что же за прерывание пришло, после чтения регистра он автоматом сбросится.
Затем кодом что ниже сбрасываем указатели буфера передачи и приема.
void RFM22_reset_TX_FIFO (void) {
unsigned char d;
d=rfm22_read (8); // считываем содержимое регистра 8
d&=0b11111110; // обнуляем бит 0
d|=0b00000001; // ставим в 1 бит 0
rfm22_write (8,d); // запись получившегося в регистр 8
d&=~1; // ставим в 0 бит 0
rfm22_write (8,d); // запись получившегося в регистр 8
}
void RFM22_reset_RX_FIFO (void) {
unsigned char d;
d=rfm22_read (8); // считываем содержимое регистра 8
d&=0b11111101; // обнуляем бит 1
d|=0b00000010; // ставим в 1 бит 1
rfm22_write (8,d); // запись получившегося в регистр 8
d&=~2; // ставим в 0 бит 1
rfm22_write (8,d); // запись получившегося в регистр 8
}
Почему именно ТАК ЗАМЫСЛОВАТО - читайте описание регистра 8h в карте. Там это написано, правда на английском.
На этом правильная конфигурация модуля окончена. если есть вопросы о том как устроен FIFO - буфер - спрашивайте.
Если повесть в таком ключе устраивает - дайте знать, буду продолжать.
P.S. - используйте АППАРАТНЫЙ SPI контроллера, а то во всех примерах в AVR зачем-то городят программный... при живом-то аппаратном, что является лишним свидетельством жопорукости писателей этих "примеров".

Боевой ватник.