[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 4 из 4«1234
Модератор форума: RD3AVJ 
Форум » форумы » Обсуждение материалов сайта » Nrf24L01+ термометр и ещё всяко разно.
Nrf24L01+ термометр и ещё всяко разно.
exersizzeДата: Воскресенье, 02.10.2016, 21:34 | Сообщение # 151
Группа: Администраторы
Сообщений: 719

Статус: Offline
Цитата m-mishel ()
'++++++++++++++++тут что пишем?
Start Adc
Readadc1 = Getadc(4)
Voltage1 = Readadc1 / 1023
Voltage1 = Voltage1 * 30
Stop Adc 
Return  '++++++++++++++++   или Loop?
это подпрограмма, причем без метки (имени) его надо и дописать, и я не нашел где ее в коде вызывают. И в конце должно стоять возвращение, т.е. return.
тут наверно проще с нуля код написать чем разбираться и переделывать)


 
m-mishelДата: Понедельник, 03.10.2016, 19:51 | Сообщение # 152
Группа: Проверенные
Сообщений: 7

Статус: Offline
взял ваш код изиспытаний по uart изменив при этом частоту шины spi с 8 на 16 . первый байт берется из подпрограммы обозвал  его V1 который отправляться должен.вставил код вольтметра в конце кода .не компилируется ругаясь как раз на первый байт V1-----> source variable does not match the target variable ->
источник переменной не соответствует целевой переменной.
Что сделать нужно?есть предположения?


Код
$regfile = "m8def.dat"
$crystal = 16000000

'Wait 3

$baud = 19200

$hwstack = 40
$swstack = 20
$framesize = 40

'Заявить отдельные подпрограммы
Declare Sub R_register(byval Command As Byte , Byval C_bytes As Byte)
Declare Sub W_register(byval C_bytes As Byte)

'Определить nRF24L01 прерывания, флаг
Const Idle_int = &H00                    'Ожидания, нет прерывания
Const Max_rt = &H10                    'Max #Tx, выберите Прерывания
Const Tx_ds = &H20                    'Tx Данных, Переданных Прерывания
Const Rx_dr = &H40                    'Rx Данные, Полученные

'SPI (nRF24L01) команды
Const Read_reg = &H00                    'Определить Читать Команду Для Регистрации
Const Write_reg = &H20                    'Определить Команду Записи В Реестр
Const Rd_rx_pload = &H61                    'Define Rx Полезной Нагрузки Адрес Регистра
Const Wr_tx_pload = &HA0                    'Определить Tx Полезной Нагрузки Адрес Регистра
Const Flush_tx = &HE1                    'Определить Флеш Tx Зарегистрировать Команду
Const Flush_rx = &HE2                    'Определить Флеш Rx Зарегистрировать Команду
Const Reuse_tx_pl = &HE3                    'Определить Повторного Использования Tx Полезной Нагрузки Зарегистрировать Команду
Const Nop_comm = &HFF                    'Определить Ни Одной Операции, Могут Быть Использованы Для Чтение Регистра Статуса

'SPI (nRF24L01) регистры (адреса)
Const Config_nrf = &H00                    'Config адрес регистра
Const En_aa = &H01                    'Включить Автоматическое Подтверждение регистрации адрес
Const En_rxaddr = &H02                    'Включено Rx адреса " адрес регистра"
Const Setup_aw = &H03                    'Настройка address ширина регистра адреса
Const Setup_retr = &H04                    'Настройка Авто. Выберите " зарегистрировать адрес"
Const Rf_ch = &H05                    'RF channel' адрес регистра
Const Rf_setup = &H06                    'РФ Setup " (Настройка) адрес регистра"
Const Status = &H07                    'Статус " адрес регистра"
Const Observe_tx = &H08                    'Наблюдайте TX' адрес регистра
Const Cd = &H09                    'carrier Detect " зарегистрировать адрес"
Const Rx_addr_p0 = &H0A                    'rx адрес Pipe0 " зарегистрировать адрес"
Const Rx_addr_p1 = &H0B                    'rx адрес Pipe1 " зарегистрировать адрес"
Const Rx_addr_p2 = &H0C                    'rx адрес Pipe2 " зарегистрировать адрес"
Const Rx_addr_p3 = &H0D                    'rx адрес Pipe3 " зарегистрировать адрес"
Const Rx_addr_p4 = &H0E                    'rx адрес Pipe4 " зарегистрировать адрес"
Const Rx_addr_p5 = &H0F                    'rx адрес Pipe5 " зарегистрировать адрес"
Const Tx_addr = &H10                    'TX address (адрес)
Const Rx_pw_p0 = &H11                    'rx полезной нагрузки ширина , Pipe0 " зарегистрировать адрес"
Const Rx_pw_p1 = &H12                    'rx полезной нагрузки ширина , Pipe1 " зарегистрировать адрес"
Const Rx_pw_p2 = &H13                    'rx полезной нагрузки ширина , Pipe2 " зарегистрировать адрес"
Const Rx_pw_p3 = &H14                    'rx полезной нагрузки ширина , Pipe3 " зарегистрировать адрес"
Const Rx_pw_p4 = &H15                    'rx полезной нагрузки ширина , Pipe4 " зарегистрировать адрес"
Const Rx_pw_p5 = &H16                    'rx полезной нагрузки ширина , Pipe5 " зарегистрировать адрес"
Const Fifo_status = &H17                    'fifo - Регистр Состояния " регистрация адреса"

Dim D_bytes(33) As Byte , B_bytes(33) As Byte
Dim Temp As Byte , W As Word
Dim Packet_count As Byte

'Config оборудования
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16 , Noss = 1

'Программное обеспечение SPI НЕ работает с nRF24L01, используйте оборудование SPI только, но эсэсовцы pin-код должен управляться нашей функцией
Config Portd.5 = Output : Ce Alias Portd.5                  'CE pin is output
Config Portb.2 = Output : Ss Alias Portb.2                  'SS pin is output
Config Pind.7 = Input : Irq Alias Pind.7                    'IRQ pin is input

'подключение светодиодов индикации
Config Portd.3 = Output : Red_led Alias Portd.3

                  Config Portd.4 = Output : Green_led Alias Portd.4

Spiinit

Set Ce
Waitms 10
Reset Ce
Reset Ss

Print "TX_device"

Red_led = 1

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)

Red_led = 0

Do
  Gosub Voltage1
  Green_led = 1
Incr Packet_count

If Packet_count > 254 Then
Packet_count = 0
End If

Gosub Setup_tx                    'Настройка nrf240l01 для TX
D_bytes(1) = Wr_tx_pload                    'Положи 5 байт в TX pload буфера
D_bytes(2) = &V1                    'Байт 1
D_bytes(3) = &HBB                    'Байт 2
D_bytes(4) = &HCC                    'Байт 3
D_bytes(5) = &H11                    'Байт 4
D_bytes(6) = Packet_count                    'Байт 5 будет увеличиваться каждый цикл
Call W_register(6)                    'Запись 6 байт для регистрации

Waitms 2

Set Ce                    'Set CE на короткий миг, чтобы передать буфер fifo
Waitms 1
Reset Ce
Waitms 100                    'Некоторые задержки в читать информацию на терминал, строки могут быть удалены при Макс. скорость

W = 0                    'Счетчик для time out

Do

Red_led = 1

If Irq = 0 Then
Call R_register(status , 1)
Temp = B_bytes(1) And &B01110000                            'Маски IRQ бит, байт состояния

Select Case Temp                    'Который IRQ происходит
Case Max_rt                    'MAX_RT
Print "Максимальное количество повторных попыток, TX Flussing TX буфера сейчас!"
D_bytes(1) = Flush_tx                    'Флеш TX буфера
Call W_register(1)
D_bytes(1) = Write_reg + Status
D_bytes(2) = &B00010000                    'Очистить MAX_RT IRQ бит
Call W_register(2)
Waitms 10
Red_led = 0
Exit Do
Case Tx_ds                    'TX_DS
Print "Пакет" ; Packet_count ; "отправить и ACK-ответ"
D_bytes(1) = Write_reg + Status
D_bytes(2) = &B00100000                    'Clear the TX_DS IRQ bit
Call W_register(2)
Waitms 10
Red_led = 0
Exit Do
Case Else                    'Другое IRQ?
Print "Другие irq" ; Bin(temp)
D_bytes(1) = Flush_tx                    'Флеш TX буфера
Call W_register(1)
D_bytes(1) = Write_reg + Status
D_bytes(2) = &B00110000                    'Очистить TX_DS IRQ бит

Call W_register(2)
End Select
End If

Waitms 1                    'Время ожидания для IRQ 1 мс * 100
Incr W
If W > 200 Then
Print "Нет irq ответ от RF20L01 в 200 мс"
Exit Do                    'Выход ждать цикла
End If

Loop

Red_led = 0
Wait 1

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_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
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

       V1:
       Dim V1 As Single

Dim R1 As Word

Config Adc = Single , Prescaler = Auto , Reference = Internal

Do

Start Adc
R1 = Getadc(4)
V1 = R1 / 1023
V1 = V1 * 30

Stop Adc

Loop
Return
Прикрепления: 1843792.bas(10Kb)




Сообщение отредактировал m-mishel - Понедельник, 03.10.2016, 19:53
 
a5020kДата: Суббота, 15.10.2016, 19:10 | Сообщение # 153
Группа: Свой человек
Сообщений: 42

Статус: Offline
У вас V1 и  переменная single причем локальная и подпрограмма по таким же названием  и еще вы ее хотите отправить , а отправлять можно только байт ... если еще актуально конечно ....

 
MarselДата: Четверг, 12.01.2017, 11:23 | Сообщение # 154
Группа: Пользователи
Сообщений: 2

Статус: Offline
Здравствуйте! Перелистал форум, но  не увидел  обсуждения  проекта -ВСТРАИВАЕМЫЙ МОДУЛЬ РАДИОУПРАВЛЕНИЯ НА NRF24L01- на предмет модернизации . Интересует то , что можно ли это устройство переделать приёмник и передатчик под мега8 ?, Не много понимаю в ассемблере для AVR но к сожалению с бейсиком не сталкивался.(но буду изучать) Не могли бы вы изменить  программу  под данный модуль радиоуправления   немного расширив  возможности  приёмника / передатчика?



Сообщение отредактировал Marsel - Четверг, 12.01.2017, 12:34
 
MarselДата: Четверг, 12.01.2017, 12:06 | Сообщение # 155
Группа: Пользователи
Сообщений: 2

Статус: Offline
структурная схема
Прикрепления: 7492747.png(18Kb)




Сообщение отредактировал Marsel - Четверг, 12.01.2017, 22:31
 
Форум » форумы » Обсуждение материалов сайта » Nrf24L01+ термометр и ещё всяко разно.
Страница 4 из 4«1234
Поиск: