Dasej wybudzenie urz±dzenia jednym klawiszem tryb sleep  
Aktykuły które nie zmieściły się w żadnej kategorii

Przedstawiam prosty sposób, wprowadzenia procesor w tryb SLEEP oraz jego budzenia, jednym klawiszem.

  1. #define F_CPU 16000000UL // Atmega644  
  2. #include <avr/io.h>
  3. #include <util/delay.h>
  4. #include <avr/interrupt.h>
  5. #include <avr/sleep.h>
  6. #include "uart.h"
  7. #define sckInit DDRB |=(1<<PB7)
  8. #define sck1 PORTB |=(1<<PB7)
  9. #define sck0 PORTB &=~(1<<PB7)
  10. volatile uint8_t stan; 
  11. ISR (INT2_vect) //obsÅ‚uga przerwania INT2
  12.         stan = ~ stan; // zmiana stanu na przeciwny
  13. int main(void)
  14. {
  15.     initUsart();
  16.     sckInit;
  17.     stan = 0xFF; // 0xFF = procesor aktywny, 0x00 = procesor w trybie sleep
  18.     DDRB &=~(1<<PB2);   // pin od INT2
  19.     PORTB |=(1<<PB2);   // wÅ‚acz rezystor podciÄ…gajÄ…cy
  20.     // 00 Niski poziom INT2 generuje Å¼Ä…danie przerwania.
  21.     // 01 Każda zmiana logiczna w INT2 generuje Å¼Ä…danie przerwania.
  22.     // 10 SpadajÄ…ce zbocze INT2 generuje Å¼Ä…danie przerwania.
  23.     // 11 RosnÄ…ce zbocze INT2 generuje Å¼Ä…danie przerwania.
  24.     EICRA = (1 << ISC21); // 0b00100000 włącz tylko INT2, 
  25.                           // reakcja na zbocze opadajÄ…ce
  26.     EIMSK = (1 << INT2);  // wÅ‚acz tylko przerwanie INT2
  27.     sei();
  28.     while(1)
  29.     {
  30.       // blokujÄ…c ten warunek zobaczymy jak dziaÅ‚a przerwanie i zmienna stan
  31.       if (stan==0) 
  32.        {  
  33.          _delay_ms(20);
  34.          while(!(PINB) & 0x01);  // opuść pÄ™tlÄ™ jeżeli stan logiczny = 0
  35.          sck0;
  36.          //...... kontrola wszystkiego co trzeba !!!
  37.          set_sleep_mode(SLEEP_MODE_PWR_SAVE);
  38.          sleep_mode();
  39.          _delay_ms(20);
  40.          while(!(PINB) & 0x01);  // opuść pÄ™tlÄ™ jeżeli stan logiczny = 0
  41.        }
  42.        sck1;
  43.        rsPrint("Terminal stan >> ");
  44.        rsInt(stan); // wyprowadź liczbÄ™ do terminala
  45.        rsPrint("\n\r");
  46.     }
  47. }
Schemat poglądowy do powyższego algorytmu.

Power sleep



Warning: Uninitialized string offset 0 in /usr/home/dasej/domains/dasej.pl/public_html/autoCreate.php on line 223
Fatal error: Uncaught mysqli_sql_exception: Table 'm1592_php.tab' doesn't exist in /usr/home/dasej/domains/dasej.pl/public_html/autoCreate.php:309 Stack trace: #0 /usr/home/dasej/domains/dasej.pl/public_html/autoCreate.php(309): mysqli_query(Object(mysqli), 'select txt from...') #1 {main} thrown in /usr/home/dasej/domains/dasej.pl/public_html/autoCreate.php on line 309