Господа, боюсь, без вашей помощи не обойтись. Бьюсь уже 4-5 суток (суммарно), но эффекта почти никакого

В аттаче лежат схемы и код для обеих сторон. Коннект между модулями в данный момент есть, передатчик передает последовательность из преамбулы, синхрослова, 16 байт и пустого байта по окончании. Приемник видит сигнал, дергает прерывание по заполнению буфера (правда, в данный момент почему-то один раз за две передачи), однако в полученном массиве вижу мусор (правда, попадаются "нужные" байты) или нули (если разнести приемник и передатчик на расстояние). На видео по этой ссылке видно как это происходит:
http://www.youtube.com/watch?v=ywUR5jCCt6U
Перелопатил И перепробовал кучу примеров, включая те, что были в этой теме. Код передатчика в CVAVR, код приемника в AVR Studio, под конец уже методом "тыка"...
Кстати, в таком виде работает тоже до какой-то поры, а затем перестает принимать что либо...
Инициализация передатчика:
Код: Выделить всё
8B81 - 433 MHz band, 12.5 pF crystal load capacitor, 2 MHz clock output, df(fsk) = 60 kHz, ms : FSK sign = 0
A640 - Set center frequency to 434 MHz
C811 - Set datarate to 19.15708 kbps
C220 - Vlb = 2.2 V, dwc : Disable wake-up timer calibration = 0, ebs : Enable TX bit synchronization = 1
C001 - a1 : Automatic control Bit1 = 0, a0 : Automatic control Bit0 = 0, ex : Enable crystal oscillator = 0, es : Enable synthesizer = 0,
ea : Enable power amplifier = 0, eb : Enable low battery detector = 0, et : Enable wake-up timer = 0, dc : Disable clock output = 1
Затем включаю синтезатор и усилитель для передачи
Код: Выделить всё
C039 - a1 : Automatic control Bit1 = 0, a0 : Automatic control Bit0 = 0, ex : Enable crystal oscillator = 1, es : Enable synthesizer = 1
ea : Enable power amplifier = 1, eb : Enable low battery detector = 0, et : Enable wake-up timer = 0, dc : Disable clock output = 1
И по окончании передачи выключаю командой
C001.
Приемник у меня пуллит данные с ноги nIRQ. Инициализация:
Код: Выделить всё
0000 - Flush
C008 - en : Enable receiver ch. / crystal osc. = 0, VDI output = DRSSI, LNA gain = 0 dB, RSSI threshold = -79 dBm
8D8A - eb : Enable low battery detector = 1, et : Enable wake-up timer = 0, ex : Enable crystal osc. during sleep = 1,
dc : Disable clock output = 0, Select 433 MHz band, Select 12.5 pF crystal load capacitor, Receiver bandwidth = 134 kHz
A640 - Set center frequency to 434 MHz
C811 - Set datarate to 19.15708 kbps
C2FF - Vlb = 2.2 V, Clock output = 1 MHz
C42B - al : Clock recovery auto lock = 0, ml : Clock recovery lock control = 0, Filter type = Digital, DQD threshold = 3
C6F7 - AFC automatic mode = Offset always, st : Strobe edge = 0, fi : Fine mode = 1, oe : Offset register enable = 1
en : Calculate offset = 1, Range limit = +3fres to -4fres, Max. Deviation = +7.5kHz to -10kHz
E000 - T wakeup = 0 ms (disabled)
CC00 - en : Enable low duty-cycle = 0, Duty-cycle = N/A (disabled)
0000 - Flush
CE80 - ff : FIFO fill = 0, fe : Enable 16 Bit FIFO = 0, FIFO fill start condition = VDI, FIFO IT level = 8
CE83 - ff : FIFO fill = 1, fe : Enable 16 Bit FIFO = 1, FIFO fill start condition = VDI, FIFO IT level = 8
C009 - en : Enable receiver ch. / crystal osc. = 1, VDI output = DRSSI, LNA gain = 0 dB, RSSI threshold = -79 dBm
0000 - Flush
После получения массива внутри цикла далее идет очистка очереди таким же способом (
CE80,
CE83) - насколько я понял, для того, чтобы очистить очередь, надо снять два младших бита, а затем их выставить снова.
Примеры из предыдущих сообщений почему-то не работают у меня. Инит очереди CE84/CE87 у меня проходит, но буфер, очевидно, не заполняется, так как прерывание не происходит. Нашел зависимость состояния регистра "Receiver Setting" и регистра "FIFO". Если ставлю CE84/CE87 и инит ресивера по POR (COC1), нога nIRQ дрыгается как бешеная и в массив сыпятся рандомные байты (вряд ли у меня счетчик или холодильник фонит на этой частоте

). Причем, даже при выключенном передатчике.
В общем, я зашел в тупик. Не судите строго, контроллерами я заинтересовался пару-тройку месяцев назад, до этого как бы не сталкивался с ними с паяльником в руке. Передатчики-приемники - только аналоговые. По роду деятельности, я сисадмин/программист (в основном скриптинг и джава, но в универе когда-то си++ преподавали, что-то помню).
Документацию по модулям перечитал не один раз, мог что-то упустить, а что-то не понять. Может оказаться что я неправильно запаял модули на контроллеры или данные надо сливать с других ног. Поэтому приложил схемки.
Частота контроллера mega32 с приемником - 16 Мгц (после удачного спаривания с передатчиком планируется также сливать инфу по USB), стабилизация - кварц.
Частота контроллера tiny2313v с передатчиком - 8 Мгц (заводская установка, снят фьюз деления на 8 ), стабилизация - внутренняя цепочка.
Буду очень признателен, если кто-нибудь сможет прокомментировать мои ошибки и недочеты. В профиле, в графе "Род занятий" указан мой скайп, на связи почти круглые сутки - велкам!