| igrok_by | Дата: Среда, 07.10.2015, 14:13 | Сообщение # 1 |  
 
Группа: Пользователи 
 
Сообщений: 2 
 
 
Статус: Offline 
 
 | День добрый. Может кто желал подобную связь???   Алгоритм работы просто. Получили команду - обработали (сняли показания с датчиков) - выкинули ответ.   Я тут пробовал воято но что-то не чего путно не получается. То вроде как цифры растут то опять скинутся. В чем проблема не знаю. Может у кого есть свой пример.   Код $regfile = "m8def.dat"   $crystal = 8000000   '$regfile = "m328pdef.dat"   '$crystal = 16000000   'конфигурация дисплея   '=================================================================   Config Lcdpin = Pin , Rs = Portd.4 , E = Portd.3 , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3   Config Lcd = 16 * 2   Cursor Off   Cls 
   'Для передатчика   '--------------------------------------------------------------   'Заявить отдельные подпрограммы   Declare Sub R_register(byval Command As Byte , Byval C_bytes As Byte)   Declare Sub W_register(byval C_bytes As Byte) 
   'SPI (nRF24L01) команды   Const Write_reg = &H20                    'Определить Команду Записи В Реестр   Const Rd_rx_pload = &H61                    'Define Rx Полезной Нагрузки Адрес Регистра   Const Wr_tx_pload = &HA0                    'Определить Tx Полезной Нагрузки Адрес Регистра   Const Flush_tx = &HE1                    'Определить Флеш Tx Зарегистрировать Команду 
   'SPI (nRF24L01) регистры (адреса)   Const Config_nrf = &H00                    'Config адрес регистра   Const En_aa = &H01                    'Включить Автоматическое Подтверждение регистрации адрес   Const En_rxaddr = &H02                    'Включено Rx адреса " адрес регистра"   Const Rf_ch = &H05                    'RF channel' адрес регистра   Const Rf_setup = &H06                    'РФ Setup " (Настройка) адрес регистра"   Const Status = &H07                    'Статус " адрес регистра"   Const Rx_addr_p0 = &H0A                    'rx адрес Pipe0 " зарегистрировать адрес"   Const Rx_pw_p0 = &H11                    'rx полезной нагрузки ширина , Pipe0 " зарегистрировать адрес"   Const Fifo_status = &H17                    'fifo - Регистр Состояния " регистрация адреса"   Const Tx_addr = &H10                    'TX address (адрес) 
   'Переменные кеша   Dim D_bytes(6) As Byte , B_bytes(5) As Byte   Dim Q As Byte , W As Byte , E As Byte , R As Byte , T As Byte 
   Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1 
   'Программное обеспечение SPI НЕ работает с nRF24L01, используйте оборудование SPI только, но эсэсовцы pin-код должен управляться нашей функцией   Config Pind.5 = Output                    'CE pin is output   Config Pinb.2 = Output                    'SS pin is output   Config Pind.7 = Input                    'IRQ pin is input     Ce Alias Portd.5     Ss Alias Portb.2     Irq Alias Pind.7 
   'основная прога   Spiinit 
   Set Ce   Waitms 10   Reset Ce   Reset Ss   Cls   Lcd "RX_device" 
   Call R_register(status , 1)                    'Читать Регистр СОСТОЯНИЯ   Reset Ce                    'Set CE низко, чтобы получить доступ к регистрам 
   Gosub Setup_rx                    'Настройка nRF24L01 для RX   Waitms 2   Set Ce                    'Set nRF20L01 в режиме приема 
   Do 
   If Irq = 0 Then                    'Подождите, пока IRQ происходит, pin-код становится низким на прерывание     Reset Ce                    'Ресивер должен быть включен до чтения pload 
     Call R_register(rd_rx_pload , 5)                           'Читать 5 байт RX pload регистрации     Q = B_bytes(1)     W = B_bytes(2)     E = B_bytes(3)     R = B_bytes(4)     T = B_bytes(5)     Cls     Lcd "q=" ; Q ; "w=" ; W ; "e=" ; E     Lowerline     Lcd "r=" ; R ; "t=" ; T ; " " ; 
     D_bytes(1) = Write_reg + Status                            'Сброс RX_DR бит состояния     D_bytes(2) = &B01000000                    'Напиши 1 до RX_DR бит для сброса IRQ     Call W_register(2)     Set Ce                    'Включить приемник снова 
      Wait 2 
     Incr T     Incr Q     Incr W     Incr E     Incr R 
     If T = 250 Then      T = 0     End If     If Q = 250 Then      Q = 0     End If     If W = 250 Then      W = 0     End If     If E = 250 Then      E = 0     End If     If R = 250 Then      R = 0     End If 
   Set Ce   Waitms 10   Reset Ce   Reset Ss   Call R_register(status , 1)                    'Читать Регистр СОСТОЯНИЯ   Reset Ce                    'Set CE низко, чтобы получить доступ к регистрам 
   Gosub Setup_rx                    'Настройка nRF24L01 для RX   Waitms 2   Set Ce                    'Set nRF20L01 в режиме приема 
     D_bytes(1) = Flush_tx                    'Flush the TX_fifo буфера     Call W_register(1)     D_bytes(1) = Write_reg + Status                            'Reset IRQ бит     D_bytes(2) = &B00110000     Call W_register(2) 
     Gosub Setup_tx                    'Настройка nrf240l01 для TX     D_bytes(1) = Wr_tx_pload                    'Положи 5 байт в TX pload буфера     D_bytes(2) = Q                    'Байт 1     D_bytes(3) = W                    'Байт 2     D_bytes(4) = E                    'Байт 3     D_bytes(5) = R                    'Байт 4     D_bytes(6) = T                    'Байт 5 будет увеличиваться каждый цикл     Call W_register(6)                    'Запись 6 байт для регистрации 
     Cls     Lcd "q=" ; Q ; "w=" ; W ; "e=" ; E     Lowerline     Lcd "r=" ; R ; "t=" ; T ; " " ; 
     Waitms 2     Set Ce                    'Set CE на короткий миг, чтобы передать буфер fifo     Waitms 1     Reset Ce 
     Waitms 20 
     Set Ce     Waitms 10     Reset Ce     Reset Ss 
     Call R_register(status , 1)                    'Читать Регистр СОСТОЯНИЯ     Reset Ce                    'Set CE низко, чтобы получить доступ к регистрам 
     Gosub Setup_rx                    'Настройка nRF24L01 для RX     Waitms 2     Set Ce                    'Set nRF20L01 в режиме приема 
      Wait 2   End If 
   Loop 
   'Sub подпрограмм   Sub W_register(byval C_bytes As Byte)                       'Пишите зарегистрировать с SPI     Reset Ss                    'Руководство управления СС контакт, установить СС низких до смещение, байт     Spiout D_bytes(1) , C_bytes                    'Shiftout байты данных SPI корыта, C_bytes это количество байт, которые будут написаны     Set Ss                    'Set СС высокого   End Sub 
   Sub R_register(byval Command As Byte , Byval C_bytes As Byte) As Byte       'C_bytes = Count_bytes, номер off байт для чтения     Reset Ss                    'Ручное управление СС контакт, установить на низком уровне до переход в/из байт     Spiout Command , 1                    'Первый shiftout в реестр, который будет читать     Spiin B_bytes(1) , C_bytes                    'Прочитал назад байты из SPI направлять по nRF20L01     Set Ss                    'Установить СС обратно на высоком уровне   End Sub 
   Setup_rx:                    'Подготовка к RX     D_bytes(1) = Write_reg + Rx_addr_p0                        'RX адрес для pipe0     D_bytes(2) = &H34     D_bytes(3) = &H43     D_bytes(4) = &H10     D_bytes(5) = &H10     D_bytes(6) = &H01     Call W_register(6)                    'Отправить 6 байт для SPI     D_bytes(1) = Write_reg + En_aa                             'Enable auto ACK на pipe0     D_bytes(2) = &H01     Call W_register(2)     D_bytes(1) = Write_reg + En_rxaddr                         'Включить RX адрес для pipe0     D_bytes(2) = &H01     Call W_register(2)     D_bytes(1) = Write_reg + Rf_ch                             'Настройка каналов     D_bytes(2) = 40                    'Частота 2440 MГц     Call W_register(2)     D_bytes(1) = Write_reg + Rx_pw_p0                          'Set RX pload ширина для pipe0     D_bytes(2) = 5     Call W_register(2)     D_bytes(1) = Write_reg + Rf_setup                          'Настройка РФ -> Выходной мощности 0 дБм, datarate 2 Мбит / с и МШУ прибыль по     D_bytes(2) = &H0F     Call W_register(2)     D_bytes(1) = Write_reg + Config_nrf                        'Настройка CONFIG -> I=1 (RX_device), PWR_UP=1, CRC 2bytes, Включить CRC     D_bytes(2) = &H0F     Call W_register(2)   Return 
   Setup_tx:                    'Подготовка к TX     D_bytes(1) = Write_reg + Tx_addr                           'TX адрес     D_bytes(2) = &H34     D_bytes(3) = &H43     D_bytes(4) = &H10     D_bytes(5) = &H10     D_bytes(6) = &H01     Call W_register(6)     D_bytes(1) = Write_reg + Rx_addr_p0                        'RX адрес для pipe0     D_bytes(2) = &H34     D_bytes(3) = &H43     D_bytes(4) = &H10     D_bytes(5) = &H10     D_bytes(6) = &H01     Call W_register(6)     D_bytes(1) = Write_reg + En_aa                             'Enable auto ACK на pipe0     D_bytes(2) = &H01     Call W_register(2)     D_bytes(1) = Write_reg + En_rxaddr                         'Включить RX адрес для pipe0     D_bytes(2) = &H01     Call W_register(2)     D_bytes(1) = Write_reg + Rf_ch                             'Настройка каналов     D_bytes(2) = 40                    'Частота 2440 MГц     Call W_register(2)     D_bytes(1) = Write_reg + Rf_setup                          'Настройка РФ -> Выходной мощности 0 дБм, datarate 2 Мбит / с и МШУ прибыль по     D_bytes(2) = &H0F     Call W_register(2)     D_bytes(1) = Write_reg + Config_nrf                        'Настройка CONFIG -> I=0 (TX_device), PWR_UP=1, CRC 2bytes, Включить CRC     D_bytes(2) = &H0E     Call W_register(2)   Return  
 
  
 |  
 
 |   | 
  |    | 
| exersizze | Дата: Суббота, 10.10.2015, 11:47 | Сообщение # 2 |  
 
Группа: Администраторы 
 
Сообщений: 720 
 
 
Статус: Offline 
 
 | igrok_by, глянь сюда http://avrproject.ru/forum/3-138-1 там схожая задача. Работает на ура.
 
  
 |  
 
 |   | 
  |    | 
| igrok_by | Дата: Понедельник, 06.03.2017, 09:26 | Сообщение # 3 |  
 
Группа: Пользователи 
 
Сообщений: 2 
 
 
Статус: Offline 
 
 | Всем привет. Стал вопрос подключение SE8R01 модуля. Точнее китаёза писал что это Nrf24L01, а когда пришло и первая попытка подключения не прошла прислал даташит на SE8R01. Так полистав, я в них не селен, разницу между модулями я чот не нашел, адреса вроде теже и тд. Кто небуть их конектил??? Даташит: Доступно только для пользователей
 
  
 |  
 
 |   | 
  |    | 
| Terro | Дата: Среда, 30.10.2019, 11:56 | Сообщение # 4 |  
 
Группа: Пользователи 
 
Сообщений: 3 
 
 
Статус: Offline 
 
 | отлично
 
  
 |  
 
 |   | 
  |    |