Добрый день форумчане Пытаюсь реализовать следующую задачу на attiny: Есть attiny85 и rf433. Необходимо посылать слово "test" по rf433 на приемник и затем в целях энергосбережения уходить в сон на 8 секунд, затем снова просыпаться, и так по кругу. Если использовать вместо rf433 и библиотеки virtualwire обычный led чтобы отследить работоспособность то как бы вроде все работает, потребление в режиме сна достаточно мало чтобы заставить работать передатчик без замены батарейки, пример: Код (C++): #include <avr/sleep.h> #include <avr/wdt.h> #ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #endif #ifndef sbi #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #endif int Led = 2; volatile boolean f_wdt = 1; void setup(){ pinMode(Led,OUTPUT); } void loop(){ if (f_wdt==1) { f_wdt=0; digitalWrite(Led,HIGH); delay(300); digitalWrite(Led,LOW); pinMode(Led,INPUT); deep_sleep(); pinMode(Led,OUTPUT); }} void deep_sleep() { int ii = 9; byte bpb; int ww; if (ii > 9 ) ii=9; bb=ii & 7; if (ii > 7) bb|= (1<<5); bb|= (1<<WDCE); ww=bb; MCUSR &= ~(1<<WDRF); // start timed sequence WDTCR |= (1<<WDCE) | (1<<WDE); // set new watchdog timeout value WDTCR = bb; WDTCR |= _BV(WDIE); cbi(ADCSRA,ADEN); set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_mode(); sleep_disable(); sbi(ADCSRA,ADEN); } // Watchdog Interrupt Service / is executed when watchdog timed out ISR(WDT_vect) { f_wdt=1; // set global flag } Но как только я подключаю библиотеку virtualwire, настраиваю датчик и пытаюсь что либо передать, wdt перестает работать, данные через модуль тоже не передаются. Пример: Код (C++): #include <VirtualWire.h> .. void setup(){ pinMode(pinLed,OUTPUT); vw_set_ptt_inverted(true); vw_set_tx_pin(1); vw_setup(2000); } ... void loop(){ if (f_wdt==1) { // wait for timed out watchdog / flag is set when a watchdog timeout occurs f_wdt=0; // reset flag char msg[36]; printf(msg, "test"); vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); digitalWrite(pinLed,HIGH); delay(300); digitalWrite(pinLed,LOW); pinMode(pinLed,INPUT); deep_sleep(2); pinMode(pinLed,OUTPUT); }} ... Подключаю все на прямую, резисторы, емкости, или кварц для теста на макетке не использую. Если пытаться передать что-то без wdt то virtualwire при вышеупомянутой конфигурации(второй пример) работает без проблем. Что я делаю неправильно?