Matt23

watchdog interval

Oct 15th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.94 KB | None | 0 0
  1. #include <msp430f149.h>
  2.  
  3. long count = 0;
  4. #pragma vector = WDT_VECTOR
  5. __interrupt void watchdog_timer(void) {
  6.     if (++count == 183) { // po podzieleniu przez DIVA_2 wychodzi 61 operacji na 1s, czyli 183 na 3s
  7.         P1OUT ^= BIT5;
  8.         count = 0;
  9.     }
  10.     // miganie diody po przez zastosowanie Xor'owania
  11. }
  12.  
  13. void main(void) {
  14.     unsigned int i;
  15.     WDTCTL = WDTPW + WDTHOLD;
  16.     P1DIR |= BIT5;
  17.     // wyłączenie układu WDT
  18.     // bit P 1 jako wyjście
  19.     BCSCTL1 |= XTS + DIVA_2; // podzielnik ustawiamy na 4
  20.     do {
  21.         IFG1 &= ~OFIFG;
  22.         for (i = 255; i > 0; i--);
  23.         // Czyszczenie flgi OSCFault
  24.         // odczekanie
  25.     }
  26.     while ((IFG1 & OFIFG));
  27.     // dopóki OSCFault jest ciągle ustawiona
  28.  
  29.     WDTCTL = WDT_ADLY_1000; // czyszczenie WDT ustaienie w tryb interval ACLK
  30.     IE1 |= WDTIE; // Włączenie przerwań od WDT
  31.     _EINT(); // Włączenie przerwań
  32.     while (1); //infinity loop ;)
  33. }
Add Comment
Please, Sign In to add comment