Типа решил использовать систему команд... )) Я такими командами не пользуюсь..)) http://av-assembler.ru/mc/avr/avr-command.htmdandan писал(а):Инициализация передатчика такая...
ldi r16, 0x20 rcall transmit_SPI
ldi r16, 0b00001010 rcall transmit_SPI
Это не два регистра, а один...
0x20 - команда записи регистра (W_REGISTER) с адресом 0x00 (это регистр CONFIG).
0b00001010 - это данные регистра CONFIG. Где:
-маска прерывания по окончанию приёма.
-маска прерывания по окончанию передачи.
-маска прерывания по переполнению FIFO приёмника (кажись).
-включить CRC.
-тип CRC-8.
-включить трансивер.
-режим трансивера - передатчик.
Пойдёт)) Остальные регистры по умолчанию... Кстати, я бы ещё поменял регистр "скорость" (для большей дальности связи) и "частоту" (подальше от Wi-Fi и т.д.) ... ))
dandan писал(а):если отходить то через 2 метра связь пропадает и чтобы ее возобновить нужна выключить и включить передатчик. Фигня какая-то откуда передатчик знает что связь пропала?
Там кажись по умолчанию трансивер работает в режиме подтверждения приёма пакетов (AСK)... Поэтому передатчик ждёт ответ от приёмника... А ответа нет, потому что приёмник выключен)) Передатчик "зависает"...)) Подробности не помню... ))
Если дополнительные функции этого модуля не нужны, то рекомендую отключить в трансивере всё "лишнее". Например отключить "Усовершенствованный формат (Enhanced ShockBurst ™)". Для этого прописываем ещё пару регистров в передатчике:
В регистр с адресом 0x01 (EN_AA), записать 0b00000000.
В регистр с адресом 0x04 (SETUP_RETR), записать 0b00000000.
После этого передатчик не будет ни к чему привязан... (не будет ждать подтверждения AСK... и т.д. и т.п.))
По твоей системе команд это будет как-то так:
ldi r16, 0x21 rcall transmit_SPI
ldi r16, 0b00000000 rcall transmit_SPI
ldi r16, 0x24 rcall transmit_SPI
ldi r16, 0b00000000 rcall transmit_SPI
Или не так... не знаю)) я не работаю с такими командами ldi, sbi ... и т.д. ))


