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. { 
  13.         stan = ~ stan; // zmiana stanu na przeciwny
  14. } 
  15. int main(void)
  16. {
  17.     initUsart();
  18.     sckInit;
  19.     stan = 0xFF; // 0xFF = procesor aktywny, 0x00 = procesor w trybie sleep
  20.     DDRB &=~(1<<PB2);   // pin od INT2
  21.     PORTB |=(1<<PB2);   // włacz rezystor podciągający
  22.     // 00 Niski poziom INT2 generuje żądanie przerwania.
  23.     // 01 Każda zmiana logiczna w INT2 generuje żądanie przerwania.
  24.     // 10 Spadające zbocze INT2 generuje żądanie przerwania.
  25.     // 11 Rosnące zbocze INT2 generuje żądanie przerwania.
  26.     EICRA = (1 << ISC21); // 0b00100000 włącz tylko INT2, 
  27.                           // reakcja na zbocze opadające
  28.     EIMSK = (1 << INT2);  // włacz tylko przerwanie INT2
  29.     sei();
  30.     while(1)
  31.     {
  32.       // blokując ten warunek zobaczymy jak działa przerwanie i zmienna stan
  33.       if (stan==0) 
  34.        {  
  35.          _delay_ms(20);
  36.          while(!(PINB) & 0x01);  // opuść pętlę jeżeli stan logiczny = 0
  37.          sck0;
  38.          //...... kontrola wszystkiego co trzeba !!!
  39.          set_sleep_mode(SLEEP_MODE_PWR_SAVE);
  40.          sleep_mode();
  41.          _delay_ms(20);
  42.          while(!(PINB) & 0x01);  // opuść pętlę jeżeli stan logiczny = 0
  43.        }
  44.        sck1;
  45.        rsPrint("Terminal stan >> ");
  46.        rsInt(stan); // wyprowadź liczbę do terminala
  47.        rsPrint("\n\r");
  48.     }
  49. }
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