Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.46 KB | None | 0 0
  1. // ATtiny85 sleep mode, wake on pin change interrupt demo
  2. // Author: Nick Gammon
  3. // Date: 12 October 2013
  4.  
  5. // ATMEL ATTINY 25/45/85 / ARDUINO
  6. //
  7. //                  +-\/-+
  8. // Ain0 (D 5) PB5  1|    |8  Vcc
  9. // Ain3 (D 3) PB3  2|    |7  PB2 (D 2) Ain1
  10. // Ain2 (D 4) PB4  3|    |6  PB1 (D 1) pwm1
  11. //            GND  4|    |5  PB0 (D 0) pwm0
  12. //                  +----+
  13.  
  14. #include <avr/sleep.h>    // Sleep Modes
  15. #include <avr/power.h>    // Power management
  16.  
  17. const byte LED = 3;  // pin 2
  18. const byte SWITCH = 4; // pin 3 / PCINT4
  19.  
  20. ISR (PCINT0_vect)
  21.  {
  22.  // do something interesting here
  23.  }
  24.  
  25. void setup ()
  26.   {
  27.   pinMode (LED, OUTPUT);
  28.   pinMode (SWITCH, INPUT);
  29.   digitalWrite (SWITCH, HIGH);  // internal pull-up
  30.  
  31.   // pin change interrupt (example for D4)
  32.   PCMSK  |= bit (PCINT4);  // want pin D4 / pin 3
  33.   GIFR   |= bit (PCIF);    // clear any outstanding interrupts
  34.   GIMSK  |= bit (PCIE);    // enable pin change interrupts
  35.  
  36.   }  // end of setup
  37.  
  38. void loop ()
  39.   {
  40.   digitalWrite (LED, HIGH);
  41.   delay (500);
  42.   digitalWrite (LED, LOW);
  43.   delay (500);
  44.   goToSleep ();
  45.   }  // end of loop
  46.  
  47.  
  48. void goToSleep ()
  49.   {
  50.   set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  51.   ADCSRA = 0;            // turn off ADC
  52.   power_all_disable ();  // power off ADC, Timer 0 and 1, serial interface
  53.   sleep_enable();
  54.   sleep_cpu();                            
  55.   sleep_disable();  
  56.   power_all_enable();    // power everything back on
  57.   }  // end of goToSleep
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement