Ср янв 24, 2024 11:53:01
#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;
}
Вс апр 14, 2024 22:10:21
Ср апр 17, 2024 01:00:53
Ср апр 17, 2024 12:50:06
Ср апр 17, 2024 14:30:23