связь 2х Atmega8 через RFM69HW

Обсуждаем приемники, передатчики, радиомикрофоны, жучки, генераторы, ВЧ-усилители, антенны и прочее радиохозяйство
Ответить
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Сообщение Vovik-78 »

всем доброго дня.
Пытаюсь передать переменную через RFM69HW. Значения переменной не передаются или не принимаются.
Оборудования для замера радиочастотной активности нет.
Может у кого то есть кусочек кода, что бы точно рабочий был, для проверки модулей. А то может с ними что то не так.
Хотя может и я в коде что то напортачил. вот код передающей части:

Код: Выделить всё

#define F_CPU 1000000UL // Частота контроллера 1 МГц

				#include <avr/io.h>
				#include <util/delay.h>
				#include <avr/interrupt.h>
				#include <stdint.h>

				#define LCD_RS 2
				#define LCD_EN 3
				#define LCD_D4 4
				#define LCD_D5 5
				#define LCD_D6 6
				#define LCD_D7 7

				#include "LCD.h"


				// Настройки битов модуля RFM69HW
				#define RFM69_FREQUENCY_MSB 0x10
				#define RFM69_FREQUENCY_LSB 0xE4
				#define RFM69_POWER_LEVEL   0x80
				#define RFM69_DATA_RATE     0x03
				#define RFM69_CHANNEL_WIDTH 0x48
				#define RFM69_SPI_SPEED     1000000 // 1 MHz SPI speed

				// Пины для подключения к модулю RFM69
				#define SS_PIN  2
				#define MOSI_PIN 3
				#define MISO_PIN 4
				#define SCK_PIN  5

				// Переменные для передачи данных
				volatile uint16_t comand_1 = 0;

				void spi_init() {
					// Настройка SPI
					DDRB |= (1 << MOSI_PIN) | (1 << SCK_PIN) | (1 << SS_PIN);
					SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR0);
				}

				void spi_transfer(uint8_t data) {
					SPDR = data;
					while (!(SPSR & (1 << SPIF)));
				}

				void rfm69_init() {
					// Настройка битов модуля
					spi_transfer(0x80 | RFM69_FREQUENCY_MSB);
					spi_transfer(RFM69_FREQUENCY_LSB);
					spi_transfer(RFM69_POWER_LEVEL);
					spi_transfer(RFM69_DATA_RATE);
					spi_transfer(RFM69_CHANNEL_WIDTH);

					// Включение передатчика
					spi_transfer(0x80 | 0x09);
					spi_transfer(0x01);
				}

				void rfm69_send(uint16_t data) {
					// Передача данных
					spi_transfer(0x80 | 0x00);
					spi_transfer(data >> 8);
					spi_transfer(data & 0xFF);
					spi_transfer(0x80 | 0x08);
				}

				int main() {
					spi_init();
					rfm69_init();
					LCD_Init();
					_delay_ms(10);
					LCD_Print("333-555");

					while (1) {
						rfm69_send(comand_1);
						comand_1++;
						print_varible (comand_1)  ;

						_delay_ms(2000); // Задержка 2 секунды
					}

					return 0;
				}

А вот приннимающей:

Код: Выделить всё

#define F_CPU 1000000UL // Частота контроллера 1 МГц

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdint.h>
#define LCD_RS 2
#define LCD_EN 3
#define LCD_D4 4
#define LCD_D5 5
#define LCD_D6 6
#define LCD_D7 7

#include "LCD.h"

// Настройки битов модуля RFM69HW
#define RFM69_FREQUENCY_MSB 0x10
#define RFM69_FREQUENCY_LSB 0xE4
#define RFM69_POWER_LEVEL   0x80
#define RFM69_DATA_RATE     0x03
#define RFM69_CHANNEL_WIDTH 0x48
#define RFM69_SPI_SPEED     1000000 // 1 MHz SPI speed

// Пины для подключения к модулю RFM69
#define SS_PIN  2
#define MOSI_PIN 3
#define MISO_PIN 4
#define SCK_PIN  5

// Переменные для принятия данных
volatile uint16_t comand_2 = 0;

void spi_init() {
	// Настройка SPI
	DDRB |= (1 << MOSI_PIN) | (1 << SCK_PIN) | (1 << SS_PIN) | (1 << MISO_PIN);
	SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR0);
}

uint8_t spi_transfer(uint8_t data) {
	SPDR = data;
	while (!(SPSR & (1 << SPIF)));
	return SPDR;
}

void rfm69_init() {
	// Настройка битов модуля
	spi_transfer(0x80 | RFM69_FREQUENCY_MSB);
	spi_transfer(RFM69_FREQUENCY_LSB);
	spi_transfer(RFM69_POWER_LEVEL);
	spi_transfer(RFM69_DATA_RATE);
	spi_transfer(RFM69_CHANNEL_WIDTH);

	// Включение приемника
	spi_transfer(0x80 | 0x05);
	spi_transfer(0x01);
}

uint16_t rfm69_receive() {
	// Прием данных
	spi_transfer(0x80 | 0x10);
	uint16_t received_data = (spi_transfer(0) << 8) | spi_transfer(0);
	return received_data;
}

int main() {
	spi_init();
	rfm69_init();
	LCD_Init();
	_delay_ms(10);
	LCD_Print("333-444");

	while (1) {
		comand_2 = rfm69_receive();
		print_varible (comand_2);

		// Ваш код для обработки переменной comand_2

		_delay_ms(500); // Задержка 0.5 секунды
	}

	return 0;
}
Реклама
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Сообщение Vovik-78 »

Жаль, что так никто ничего и не подсказал (((
Реклама
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

потому что не в том разделе тема

для работы с передатчиками нужен волномер, схемы сам загуглиш

правильный код - это библиотеки для арудино
https://github.com/LowPowerLab/RFM69
залил примеры и сразу проверил модули, а не изобретать велосипед
тематические ответы только в форуме, в приват не пишите
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

[uquote="Vovik-78",url="/forum/viewtopic.php?p=4534531#p4534531"]Оборудования для замера радиочастотной активности нет.[/uquote]
Оборудование для замера радиочастотной активности - это простой диод с индикатором))
https://www.youtube.com/watch?v=YChJt2jQXVg
:tea:
в попу все ваши библиотеки для арудино))
надо открыть даташит и настроить всё согласно даташиту.
:tea:
кто это будет делать за вас... не ясно))
:tea:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

[uquote="roman.com",url="/forum/viewtopic.php?p=4569534#p4569534"]кто это будет делать за вас... не ясно))[/uquote]
уже сделали... в библиотеках :))
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Реклама
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Сообщение Vovik-78 »

[uquote="kalobyte",url="/forum/viewtopic.php?p=4569402#p4569402"]правильный код - это библиотеки для арудино
https://github.com/LowPowerLab/RFM69
залил примеры и сразу проверил модули, а не изобретать велосипед[/uquote]
Ну вообще то у меня ни ардуина а Атмега8

Добавлено after 1 minute 15 seconds:
[uquote="roman.com",url="/forum/viewtopic.php?p=4569534#p4569534"][uquote="Vovik-78",url="/forum/viewtopic.php?p=4534531#p4534531"]Оборудования для замера радиочастотной активности нет.[/uquote]
Оборудование для замера радиочастотной активности - это простой диод с индикатором))
https://www.youtube.com/watch?v=YChJt2jQXVg[/uquote]

Спасибо, посмотрю.

Добавлено after 1 minute 27 seconds:
[uquote="kalobyte",url="/forum/viewtopic.php?p=4569402#p4569402"]потому что не в том разделе тема[/uquote]

Так тут увидел темы про радиоуправление на подобных схемах, вот и написал сюда.
Реклама
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

[uquote="Vovik-78",url="/forum/viewtopic.php?p=4577324#p4577324"]Ну вообще то у меня ни ардуина а Атмега8[/uquote]
Шансов найти готовую библиотеку к ардуине больше. В IDE там есть вариант с атмега8, я что то на ней ваял как на ардуине, но библиотека может оказаться несовместима с 8.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

[uquote="Vovik-78",url="/forum/viewtopic.php?p=4577324#p4577324"]Так тут увидел темы про радиоуправление на подобных схемах, вот и написал сюда.[/uquote]
тут у нас куча тем про радиоуправление... ни нигде ни разу мы не использовали библиотеки))
что ж все такие ленивые стали.. .уже даташит открыть всем влом))
:tea:
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

Vovik-78 писал(а):Ну вообще то у меня ни ардуина а Атмега8
ардуино это фреймворк, а не контроллер
он упрощает и унифицирует написание кода
под мегу 8 надо только установить свое ядро, загуглиш как это сделать
Vovik-78 писал(а):Так тут увидел темы про радиоуправление на подобных схемах, вот и написал сюда.
тема больше подходит под программирование контроллеров, а не про радио
тематические ответы только в форуме, в приват не пишите
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

[uquote="kalobyte",url="/forum/viewtopic.php?p=4577409#p4577409"]под мегу 8 надо только установить свое ядро, загуглиш как это сделать[/uquote]
раньше вроде по дефолту была поддержка. пункт назывался как то "... NG and older "
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

ну так первые версии ардуины и были написаны, когда мега8 была популярная и платы были на ее основе
тематические ответы только в форуме, в приват не пишите
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Сообщение Vovik-78 »

[uquote="roman.com",url="/forum/viewtopic.php?p=4577362#p4577362"]что ж все такие ленивые стали.. .уже даташит открыть всем влом))
:tea:[/uquote]
Так приведенный в первом посте код и писал по даташиту. Но либо что то недоглядел, либо ошибся. По этому и создал тему.
Сложно искать ошибки в своем же коде.
SAU
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Вс сен 10, 2006 00:04:03

Сообщение SAU »

а может там связи нет.Попробуйте подавать чередующиеся ноль и единиц через секунду-две,а на приеме подключите светодиод.
А уж потом со своей переменной работайте
Ответить

Вернуться в «Радиотехника: приемники, передатчики, антенны»