Страница 1 из 2

433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Чт дек 16, 2021 14:12:05
Emil1
Добрый вечер друзья! Нужна помощь по слиянию двух программ на аттины13. Здесь приемник 433мгц и простая мигалка светодиодом.Задумка такая,для снижения потребления приемника я назначил PB4 как выход 3.6В ,приемник будет питаться именно в момент мигания светодиода то есть будет обесточен 2 секунды потом включаться на 2 секунды. Весь мозг сломал не получается объеденить это дело. делей сильно тормозит по этому отказался от этого. По отдельности все прекрасно работает.

#define F_CPU 1200000UL // Clock speed 1.2 MHz (-Ulfuse:w:0x6A:m)
#define TRF_RX_PIN PB0 // Receiver on Pin 0
#define TRF_DATA_SIZE 2 // Command size 2 bytes
#define TRF_TX_DISABLED // Exclude transmitter code to preserve space
#define TX_VCC_PIN PB4 // Контакт приемника
#define LED_1_PIN PB3 // Pin definitions for 1 LED
#include "tinyrf.h"
#include <util/delay.h>
// LED pins control macro
#define init_led_pins() DDRB |= (1 << LED_1_PIN)
#define set_led_pin(pin, state) state ? PORTB |= (1 << pin) : PORTB &= ~(1 << pin)

int main(void)
{
// Initialize timer and ports
trf_init();
init_led_pins();

while (1)
{
// If a new command is available
if (trf_has_received_data()) {

// Get received data
uint8_t data_buffer[TRF_DATA_SIZE];
trf_get_received_data(data_buffer);

// Check data integrity (second byte must have inverted value of the first)
if (data_buffer[0] == (uint8_t)(~data_buffer[1])) {
switch (data_buffer[0]) {
case 11:
set_led_pin(LED_1_PIN, 1); // Turn on LED1

_delay_ms (2500);
set_led_pin(LED_1_PIN, 0); // Turn off LED1

}
}

// Reset state to listen for new messages
trf_reset_received();
}
}
}
================

const int ledPin = PB4; // переменная с номером пина светодиода
const long ledInterval = 200; // интервал мигания светодиодом, мсек.

int ledState = LOW; // начальное состояние светодиода
unsigned long previousMillis = 0; // храним время предыдущего срабатывания светодиода

void setup() {
pinMode(ledPin, OUTPUT); // задаём пин PB4 как выход.
}

void loop() {

// Мигание светодиодом:
// время с момента включения Arduino, мсек:
unsigned long currentMillis = millis();
// Если время мигать пришло,
if (currentMillis - previousMillis >= ledInterval) {
previousMillis = currentMillis; // то запоминаем текущее время
if (ledState == LOW) { // и инвертируем состояние светодиода
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite(ledPin, ledState); // переключаем состояние светодиода
}
}

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Чт дек 16, 2021 17:02:36
U235
Пожалуйста, отформатируйте сообщение, код в таком виде неудобно читать.

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Чт дек 16, 2021 17:12:07
VNS
Где здесь? :) Приёмник реализован в программном коде? Что такое выход 3,6 В? Или в коде написан просто циклический таймер, который зажигает светодиод через каждые 2 сек, на 2 сек? Если так, то и делей справится, если МК более ничего не делает. А если есть у него по мимо этого ещё другие задачи, то используйте не делей, а таймер-счётчик0, по прерыванию которого будете вести подсчёт нужного интервала.

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Чт дек 16, 2021 19:01:04
Dimon456
Что вы так на него накинулись? Где он вам найдет ответы на ваши вопросы?
Emil1 писал(а):приемник 433мгц
возможно китайский с i2c интерфейсом?
Emil1 писал(а):// Initialize timer and ports
trf_init();
видимо инициализация какого-то таймера?
Emil1 писал(а):delay_ms (2500);
а это, наверное, специально так сделано?
Emil1 писал(а):// Get received data
uint8_t data_buffer[TRF_DATA_SIZE];
видимо, куда-то передает, интересно, куда?

Одним словом, по этому куску кода больше вопросов, чем ответов.

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Чт дек 16, 2021 20:41:40
Emil1
Добрый вечер всем. приемник вот здесь он нормально работает.

#define F_CPU 1200000UL // Clock speed 1.2 MHz (-Ulfuse:w:0x6A:m)
#define TRF_RX_PIN PB0 // Receiver on Pin 0
#define TRF_DATA_SIZE 2 // Command size 2 bytes
#define TRF_TX_DISABLED // Exclude transmitter code to preserve space
#define TX_VCC_PIN PB4 // Контакт приемника
#define LED_1_PIN PB3 // Pin definitions for 1 LED
#include "tinyrf.h"
#include <util/delay.h>
// LED pins control macro
#define init_led_pins() DDRB |= (1 << LED_1_PIN)
#define set_led_pin(pin, state) state ? PORTB |= (1 << pin) : PORTB &= ~(1 << pin)

int main(void)
{
// Initialize timer and ports
trf_init();
init_led_pins();

while (1)
{
// If a new command is available
if (trf_has_received_data()) {

// Get received data
uint8_t data_buffer[TRF_DATA_SIZE];
trf_get_received_data(data_buffer);

// Check data integrity (second byte must have inverted value of the first)
if (data_buffer[0] == (uint8_t)(~data_buffer[1])) {
switch (data_buffer[0]) {
case 11:
set_led_pin(LED_1_PIN, 1); // Turn on LED1

_delay_ms (2500);
set_led_pin(LED_1_PIN, 0); // Turn off LED1

}
}

// Reset state to listen for new messages
trf_reset_received();
}
}
}

Добавлено after 1 minute 34 seconds:
но мне нужно перевести его в режим энергосбережения. 2 секунды сон 2 секунды прием.

Добавлено after 8 minutes 7 seconds:
[uquote="VNS",url="/forum/viewtopic.php?p=4142711#p4142711"]Где здесь? :) Приёмник реализован в программном коде? Что такое выход 3,6 В? Или в коде написан просто циклический таймер, который зажигает светодиод через каждые 2 сек, на 2 сек? Если так, то и делей справится, если МК более ничего не делает. А если есть у него по мимо этого ещё другие задачи, то используйте не делей, а таймер-счётчик0, по прерыванию которого будете вести подсчёт нужного интервала.[/uquote]

Да приемник реализован в программном коде. 3.6В это третьея нога микросхемы куда через каждые 2 секунды подается напряжение питания на 2 секунды. Приемник берет питание от 3 ноги. сам модуль китайского приемника в ждущем режиме потребляет 5ма. Вот я и решил таким образом снизить потребленные до 2.5ма. функция Делай не подходит. приемник зависает.

Добавлено after 2 minutes 51 second:
[uquote="Dimon456",url="/forum/viewtopic.php?p=4142779#p4142779"]Что вы так на него накинулись? Где он вам найдет ответы на ваши вопросы?
Emil1 писал(а):приемник 433мгц
возможно китайский с i2c интерфейсом?
Emil1 писал(а):// Initialize timer and ports
trf_init();
видимо инициализация какого-то таймера?
Emil1 писал(а):delay_ms (2500);
а это, наверное, специально так сделано?
Emil1 писал(а):// Get received data
uint8_t data_buffer[TRF_DATA_SIZE];
видимо, куда-то передает, интересно, куда?

Одним словом, по этому куску кода больше вопросов, чем ответов.[/uquote]
нет он только принимает сигнал от передатчика.

Добавлено after 3 minutes 37 seconds:
Хочу заметить..у меня есть хекс файл передатчика. Если кому нужно пишите ,могу отправить. все прекрасно работает.

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Чт дек 16, 2021 21:02:24
VNS
Вы меня совсем запутали
[uquote="Emil1",url="/forum/viewtopic.php?p=4142830#p4142830"]Да приемник реализован в программном коде.[/uquote]
Если приёмник реализован в программном коде, тогда как понять это:
Приемник берет питание от 3 ноги. сам модуль китайского приемника в ждущем режиме потребляет 5ма.
Видимо МК управляет лишь питанием модуля приёмника? Так? Допустим… а что ещё делает МК? Кстати, а какой ток максимальный у этого китайского модуля (приёмника)? Ногу МК не перегрузите?
Emil1 писал(а):Вот я и решил таким образом снизить потребленные до 2.5ма. функция Делай не подходит. приемник зависает.
Если приёмник (модуль) потребляет в ждущем режиме 5 мА, то как можно снизить потребление его до 2,5 мА? Или Вы пишите одно, а предполагаете совсем другое? Ведь так не бывает… если модуль потребляет 5 мА, то он так и будет потреблять 5 мА когда находится в ждущем режиме. А зависает он по другой причине… во-первых нужно было бы хоть ссылку на модуль дать, чтобы понимать о каком модуле идёт речь… возможно Вы и сами не особо понимаете работу данного модуля в полном объёме, от того и пляски с бубном. :)

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Чт дек 16, 2021 21:10:57
Dimon456
Emil1 писал(а):это третьея нога микросхемы
какой микросхемы?
Emil1 писал(а):функция Делай не подходит. приемник зависает.
а куда это делай влепили?
Emil1 писал(а):у меня есть хекс файл передатчика
на кой нам хекс, код давай.

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Чт дек 16, 2021 23:20:22
neid
Emil1, в интернете есть рабочая библиотека с alexgyver таких поделок с 433 и тинькой 13... и снижение потребления энергии мк до 1uA - будет жить года два на одной батарейке, и всякие фичи, всякие датчики! Вообщем тебе туда!

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Пт дек 17, 2021 00:50:05
Emil1
[uquote="VNS",url="/forum/viewtopic.php?p=4142855#p4142855"]Вы меня совсем запутали
[uquote="Emil1",url="/forum/viewtopic.php?p=4142830#p4142830"]Да приемник реализован в программном коде.[/uquote]
Если приёмник реализован в программном коде, тогда как понять это:
Приемник берет питание от 3 ноги. сам модуль китайского приемника в ждущем режиме потребляет 5ма.
Видимо МК управляет лишь питанием модуля приёмника? Так? Допустим… а что ещё делает МК? Кстати, а какой ток максимальный у этого китайского модуля (приёмника)? Ногу МК не перегрузите?
Emil1 писал(а):Вот я и решил таким образом снизить потребленные до 2.5ма. функция Делай не подходит. приемник зависает.
Если приёмник (модуль) потребляет в ждущем режиме 5 мА, то как можно снизить потребление его до 2,5 мА? Или Вы пишите одно, а предполагаете совсем другое? Ведь так не бывает… если модуль потребляет 5 мА, то он так и будет потреблять 5 мА когда находится в ждущем режиме. А зависает он по другой причине… во-первых нужно было бы хоть ссылку на модуль дать, чтобы понимать о каком модуле идёт речь… возможно Вы и сами не особо понимаете работу данного модуля в полном объёме, от того и пляски с бубном. :)[/uquote]

Вы не совсем правильно поняли меня да и я сам не правильно изложил мысли.
attiny13 принимает сигнал с приемника, декодирует его и включает нагрузку через транзисторный ключ. на данный момент все прекрасно работает,только китайский модуль жрет 5ма и это очень много для моего проекта. Я хочу чтоб attiny13 кроме докодирования сигнала еще и включал и отключал питание приемного модуля по таймеру или как то иначе по две секунды. Именно по этому я назначил вторую ногу тинки как питание для приемного модуля. А насчет 2.5ма это так и получается если приемник пол часа будет обесточен а пол часа работать. Надеюсь более менее внятно смог объяснить. вот и сам модуль. https://aliexpress.ru/item/32966646508. ... 1577695128

Добавлено after 1 minute 35 seconds:
[uquote="neid",url="/forum/viewtopic.php?p=4142943#p4142943"]Emil1, в интернете есть рабочая библиотека с alexgyver таких поделок с 433 и тинькой 13... и снижение потребления энергии мк до 1uA - будет жить года два на одной батарейке, и всякие фичи, всякие датчики! Вообщем тебе туда![/uquote]
Спасибо щас посмотрю

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Пт дек 17, 2021 10:02:24
VNS
Теперь всё понятно… так в начале и нужно было написать. :)
Теперь о реализации работы вывода, который подаёт питание на модуль приёмника… уберите из алгоритма функцию делей, она при такой задаче нужна как корове седло. Вам для отсчёта интервалов в таком случае нужно задействовать таймер-счётчик. А так же определить переменную или рабочий регистр который будет отсчитывать интервалы. А так же необходимо выделить бит для флага в каком не будь из рабочих регистров (может у Вас уже есть регистр флагов, так вот там нудно выделить один бит для нового флага, назовём его к примеру F_ON_OFF). Так как у Вас тини тактируется на частоте 1,2 МГц, то при установке предделителя СК/1024 период переполнения таймер-счётчика составит 218,453 мс. Если в регистр TCNT0 записать десятичное число 21, то период переполнения составит примерно 200 мс. Данное число необходимо записывать и при наступлении прерывания. Таким образом, Вы получаете стабильный интервал времени при котором основной цикл программы идёт своим чередом. При каждом прерывании Вы увеличиваете счётный регистр (или счётную переменную – смотря что Вы выбрали. Далее я буду считать что выбран рабочий регистр к примеру R18) на единицу. А затем проверяете этот регистр (R18)… в Вашем случае нужен интервал 2 сек… значит когда в регистре R18 будет десятичное число 10, значит с момента отсчёта времени прошло 2 сек. И значит нужно выполнить то или иное действие. При этом счётный регистр R18 необходимо очистить для подсчёта очередного интервала времени. Допустим при подаче питания на МК, питание на модуль было отключено… После очистки счётного регистра R18, нужно посмотреть в каком состоянии флаг F_ON_OFF. Если он сброшен (лог 0), то поднять этот флаг, который будет означать необходимость подачи питания на модуль. В основном цикле программы Вы пропишите процедуру проверки этого флага, если он поднят (лог 1), значит на вывод 3 подайте лог 1. А если флаг сброшен (лог 0), то на вывод 3 нужно подать лог 0.
Вот примерно так можно организовать Ваш интервал времени в 4 сек. При котором 2 секунды будет модуль под питанием и 2 сек модуль будет обесточен. Такая реализация интервала не будет мешать работе основного алгоритма. Надеюсь и виснуть приёмник не будет, так как виснет не приёмник, а Ваш МК при таком неправильном алгоритме... :beer:

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Пт дек 17, 2021 10:36:20
Dimon456
VNS писал(а):TCNT0 ... R18
:facepalm:
Начнем заново
Dimon456 писал(а):
Emil1 писал(а):// Initialize timer and ports
trf_init();
видимо инициализация какого-то таймер
Код, в студию.

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Пт дек 17, 2021 12:35:40
Emil1
[uquote="VNS",url="/forum/viewtopic.php?p=4143071#p4143071"]Теперь всё понятно… так в начале и нужно было написать. :)
Теперь о реализации работы вывода, который подаёт питание на модуль приёмника… уберите из алгоритма функцию делей, она при такой задаче нужна как корове седло. Вам для отсчёта интервалов в таком случае нужно задействовать таймер-счётчик. А так же определить переменную или рабочий регистр который будет отсчитывать интервалы. А так же необходимо выделить бит для флага в каком не будь из рабочих регистров (может у Вас уже есть регистр флагов, так вот там нудно выделить один бит для нового флага, назовём его к примеру F_ON_OFF). Так как у Вас тини тактируется на частоте 1,2 МГц, то при установке предделителя СК/1024 период переполнения таймер-счётчика составит 218,453 мс. Если в регистр TCNT0 записать десятичное число 21, то период переполнения составит примерно 200 мс. Данное число необходимо записывать и при наступлении прерывания. Таким образом, Вы получаете стабильный интервал времени при котором основной цикл программы идёт своим чередом. При каждом прерывании Вы увеличиваете счётный регистр (или счётную переменную – смотря что Вы выбрали. Далее я буду считать что выбран рабочий регистр к примеру R18) на единицу. А затем проверяете этот регистр (R18)… в Вашем случае нужен интервал 2 сек… значит когда в регистре R18 будет десятичное число 10, значит с момента отсчёта времени прошло 2 сек. И значит нужно выполнить то или иное действие. При этом счётный регистр R18 необходимо очистить для подсчёта очередного интервала времени. Допустим при подаче питания на МК, питание на модуль было отключено… После очистки счётного регистра R18, нужно посмотреть в каком состоянии флаг F_ON_OFF. Если он сброшен (лог 0), то поднять этот флаг, который будет означать необходимость подачи питания на модуль. В основном цикле программы Вы пропишите процедуру проверки этого флага, если он поднят (лог 1), значит на вывод 3 подайте лог 1. А если флаг сброшен (лог 0), то на вывод 3 нужно подать лог 0.
Вот примерно так можно организовать Ваш интервал времени в 4 сек. При котором 2 секунды будет модуль под питанием и 2 сек модуль будет обесточен. Такая реализация интервала не будет мешать работе основного алгоритма. Надеюсь и виснуть приёмник не будет, так как виснет не приёмник, а Ваш МК при таком неправильном алгоритме... :beer:[/uquote]

Благодарю за подробный ответ! Я больше электроник чем кодер) и половину того что вы написали я не понял к сожалению. я только недавно начил изучать программирование. Здесь LED_1_PIN.. set_led_pin(LED_1_PIN, 1); // Turn on LED1
_delay_ms (2500);
set_led_pin(LED_1_PIN, 0); // Turn off LED1
Это нагрузка .его включение через делей мне какраз таки не мешает,потому что во время срабатывании нагрузки с удержанием 2.5 секунд приемник не должен реагировать на повторный сигнал.

Добавлено after 3 minutes 18 seconds:
[uquote="Dimon456",url="/forum/viewtopic.php?p=4143091#p4143091"]
VNS писал(а):TCNT0 ... R18
:facepalm:
Начнем заново
Dimon456 писал(а):
Emil1 писал(а):// Initialize timer and ports
trf_init();
видимо инициализация какого-то таймер
Код, в студию.[/uquote]

Добрый день! вот собственно и сам код.

#define F_CPU 1200000UL // Clock speed 1.2 MHz (-Ulfuse:w:0x6A:m)
#define TRF_RX_PIN PB0 // Receiver on Pin 0
#define TRF_DATA_SIZE 2 // Command size 2 bytes
#define TRF_TX_DISABLED // Exclude transmitter code to preserve space
#define TX_VCC_PIN PB4 // Контакт приемника
#define LED_1_PIN PB3 // Pin definitions for 1 LED
#include "tinyrf.h"
#include <util/delay.h>
// LED pins control macro
#define init_led_pins() DDRB |= (1 << LED_1_PIN)
#define set_led_pin(pin, state) state ? PORTB |= (1 << pin) : PORTB &= ~(1 << pin)

int main(void)
{
// Initialize timer and ports
trf_init();
init_led_pins();

while (1)
{
// If a new command is available
if (trf_has_received_data()) {

// Get received data
uint8_t data_buffer[TRF_DATA_SIZE];
trf_get_received_data(data_buffer);

// Check data integrity (second byte must have inverted value of the first)
if (data_buffer[0] == (uint8_t)(~data_buffer[1])) {
switch (data_buffer[0]) {
case 11:
set_led_pin(LED_1_PIN, 1); // Turn on LED1

_delay_ms (2500);
set_led_pin(LED_1_PIN, 0); // Turn off LED1

}
}

// Reset state to listen for new messages
trf_reset_received();
}
}
}

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Пт дек 17, 2021 13:05:21
Dimon456
Emil1 писал(а):#include "tinyrf.h"
где файлик?
Если код написан корректно, то кроме h файла и c файл будет.
Весь проект в архив zip (rar не все скачивают) и сюда.

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Пт дек 17, 2021 13:56:11
Emil1
[uquote="Dimon456",url="/forum/viewtopic.php?p=4143191#p4143191"]
Emil1 писал(а):#include "tinyrf.h"
где файлик?
Если код написан корректно, то кроме h файла и c файл будет.
Весь проект в архив zip (rar не все скачивают) и сюда.[/uquote]

Да я вас понял.

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Пт дек 17, 2021 14:43:41
VNS
[uquote="Emil1",url="/forum/viewtopic.php?p=4143168#p4143168"]Это нагрузка .его включение через делей мне какраз таки не мешает,[/uquote]
Ещё как мешает… просто Вы об этом не догадываетесь. :) Когда происходит отсчёт паузы по делей, МК ничего более не может делать, то есть тупо отсчитывает данную паузу и всё. А это не есть хорошо. Но решать конечно Вам, что Вам подходит, а что нет.
Что именно Вы не поняли о чём я писал? Я писал про использования таймер-счётчика0… Вы его пробовали использовать или для Вас это в новинку?

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Пт дек 17, 2021 15:28:17
Emil1
[uquote="VNS",url="/forum/viewtopic.php?p=4143269#p4143269"][uquote="Emil1",url="/forum/viewtopic.php?p=4143168#p4143168"]Это нагрузка .его включение через делей мне какраз таки не мешает,[/uquote]
Ещё как мешает… просто Вы об этом не догадываетесь. :) Когда происходит отсчёт паузы по делей, МК ничего более не может делать, то есть тупо отсчитывает данную паузу и всё. А это не есть хорошо. Но решать конечно Вам, что Вам подходит, а что нет.
Что именно Вы не поняли о чём я писал? Я писал про использования таймер-счётчика0… Вы его пробовали использовать или для Вас это в новинку?[/uquote]

Да вы правы,это пока мне трудно. Но по вотчдогу кое что получилось. в ждущем режиме 4.7ма ,вовремя сна 1ма. думаю тинка не полностью уходит в сон.

#define F_CPU 1200000UL // Clock speed 1.2 MHz (-Ulfuse:w:0x6A:m)
#define TRF_RX_PIN PB0 // Receiver on Pin 0
#define TRF_DATA_SIZE 2 // Command size 2 bytes
#define TRF_TX_DISABLED // Exclude transmitter code to preserve space
//#define TX_VCC_PIN PB4 // Выход 3.6V к приемнику
#define LED_1_PIN PB3 // Pin definitions for 1 LED
#include <util/delay.h>
#define init_led_pins() DDRB |= (1 << LED_1_PIN) // LED pins control macro
#define set_led_pin(pin, state) state ? PORTB |= (1 << pin) : PORTB &= ~(1 << pin)
#include <avr/wdt.h> // здесь организована работа с ватчдогом
#include <avr/sleep.h> // здесь описаны режимы сна
#include <avr/interrupt.h> // работа с прерываниями
#include "tinyrf.h"

ISR (WDT_vect) {
PORTB ^= _BV(PB4); // переключаем светодиод
WDTCR |= _BV(WDTIE); // разрешаем прерывания по ватчдогу. Иначе будет резет.
}

int main() {

// инициализация порта светодиода
DDRB = _BV(PB4); // на этом пине висит светодиод
PORTB = _BV(PB4); // зажгем его
// Initialize timer and ports
trf_init();
init_led_pins();
//инициализация ватчдога
wdt_reset(); // сбрасываем
wdt_enable(WDTO_4S); // разрешаем ватчдог 1 сек
WDTCR |= _BV(WDTIE); // разрешаем прерывания по ватчдогу. Иначе будет резет.
sei(); // разрешаем прерывания

set_sleep_mode(SLEEP_MODE_PWR_DOWN); // если спать - то на полную
//PORTB = 0; // Отключаем пины, заводим "будильник" на 4 секунд и выключаемся
sleep_mode();
while(1) {

// If a new command is available
if (trf_has_received_data()) {

// Get received data
uint8_t data_buffer[TRF_DATA_SIZE];
trf_get_received_data(data_buffer);

// Check data integrity (second byte must have inverted value of the first)
if (data_buffer[0] == (uint8_t)(~data_buffer[1])) {
switch (data_buffer[0]) {
case 11:
set_led_pin(LED_1_PIN, 1); // Turn on LED1
_delay_ms (2500);
set_led_pin(LED_1_PIN, 0); // Turn off LED1
}
}

// Reset state to listen for new messages
trf_reset_received();
sleep_enable();
sleep_cpu();
}
}
}

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Пт дек 17, 2021 17:54:54
VNS
[uquote="Emil1",url="/forum/viewtopic.php?p=4143301#p4143301"]Но по вотчдогу кое что получилось. в ждущем режиме 4.7ма ,вовремя сна 1ма.[/uquote]
Если в режиме Power Down, то это много. Аналоговый компаратор не забыли выключить? По умолчанию он всегда включен. И к неиспользуемым портам подтяните внутренние резисторы. Это поможет уменьшить потребление.

ЗЫ. Если не секрет, чем управляет приёмник? При такой борьбе за экономию?

ЗЫ. ЗЫ. Кстати, если научились использовать сторожевой таймер, то можно его как раз использовать для пробуждения… а именно, алгоритм примерно такой: как сделали все нужные дела, перед уходом в сон включать сторожевой таймер (настроив его предварительно на 2 сек.). После пробуждения сторожевой таймер отключаете, делаете всё, что необходимо и затем опять в сон. Таким образом, сон будет составлять именно 2 сек. Ну а сколько потребуется для бодрствования, это уже другой вопрос. :)

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Сб дек 18, 2021 00:20:16
neid
Emil1, в PWR_DOWN режиме у меня тинька13 потребляет 4uA и то я считаю много... должно меньше быть - десятые микроампер! а у вас 1милиампер, это вообще перебор!

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Сб дек 18, 2021 17:28:20
Emil1
Да много однозначно но я справился. Щас 25мка. подправил код в вотчдоге.

Добавлено after 12 minutes 42 seconds:
Спасибо VNS за советы..Вопрос решен.

Re: 433 МГЦ ПРИЕМНИК НА ATTINY13

Добавлено: Сб дек 18, 2021 18:03:21
VNS
Замечательно! :)