Код передатчика для RF433 MHz выполняеться один раз Attiny13A

Нет ответов
hemicide
Offline
Зарегистрирован: 05.12.2018

Изучив несколько примеров, нашел и переписал код для передачи данных через радиопередатчик на Attiny13A. Данные передаются и принимаются на другой стороне. Но в методе send() цикл повторений передачи даных равен 10, а я получаю данные только 1 раз.

Если же в функции main() метод send() упаковать в цикл с любым количеством итераций, данные я получаю все равно только 1 раз.

Подскажите что не так?


#define F_CPU 1200000LU
#include <avr/io.h>
#include <util/delay.h>

#define nPulseLength 350

#define PIN_TX	(1<<PB3) // PB3 pin, goes to transmitter data pin

void send(unsigned long code, unsigned int length) {
	for (int nRepeat = 0; nRepeat < 10; nRepeat++) {
		for (int i = length-1; i >= 0; i--) {
			if (code & (1L << i)) {
				PORTB |= PIN_TX;
				_delay_us(nPulseLength * 3);
				PORTB &= ~PIN_TX; // same as digitalWrite high
				_delay_us(nPulseLength);
			} else {
				PORTB |= PIN_TX;
				_delay_us(nPulseLength);
				PORTB &= ~PIN_TX; // same as digitalWrite low
				_delay_us(nPulseLength * 3);
			}
		}
		PORTB |= PIN_TX;
		_delay_us(nPulseLength);
		PORTB &= ~PIN_TX;
		_delay_us(nPulseLength * 31);
	}
}

int main(void)
{
	DDRB |= PIN_TX; // Set output direction on PIN_TX
    while (1) 
    {
		send(53, 8);
		_delay_ms(2000);
    }
}