Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <msp430x14x.h>
- // procedura obsługi przerwania od WDT
- long count = 0;
- #pragma vector=WDT_VECTOR
- __interrupt void watchdog_timer(void)
- {
- if(++count == 20) {
- P2OUT ^= BIT1; // miganie diody po przez zastosowanie Xor'owania
- count = 0;
- }
- }
- void main( void )
- {
- unsigned int i;
- WDTCTL = WDTPW + WDTHOLD; // wyłączenie układu WDT
- P2DIR |= BIT1; // bit P2.1 jako wyjście
- BCSCTL1 |= XTS + DIVA1 + DIVA0; // (ACLK = LFXT1 = HF XTAL)/8
- do
- {
- IFG1 &= ~OFIFG; // Czyszczenie flgi OSCFault
- for (i = 0xFF; i > 0; i--); // odczekanie
- }
- while ((IFG1 & OFIFG)); // dopóki OSCFault jest ciągle ustawiona
- WDTCTL = WDTPW + WDTTMSEL + WDTCNTCL + WDTSSEL;// czyszczenie WDT ustaienie w tryb interval ACLK
- IE1 |= WDTIE; // Włączenie przerwań od WDT
- _EINT(); // Włączenie przerwań
- for(;;) {
- // pętla nieskończona
- }
- }
- ************************************************************************************************************
- // program demonstruje działanie układu watchdog timer w trybie pracy watchdog
- // podczas normalnej pracy dioda sygnalizacyjna jest zgaszona
- // w przypadku naciśnięcia klawisza następuje zawieszenie programu
- // układ watchdog restartuje program a użytkownikowi jest to oznajmiane po przez
- // zapalenie diody sygnalizacyjnej
- #include <msp430x14x.h>
- #define ZOLTY BIT4&P4IN // klawisz - P4.4
- void main( void )
- {
- unsigned int i;
- WDTCTL = WDTPW + WDTHOLD; // wyłączenie układu WDT
- P2DIR |= BIT1; // bit P2.1 jako wyjście
- P2OUT |= BIT1; // zgaszenie diody
- BCSCTL1 |= XTS + DIVA1 + DIVA0; // (ACLK = LFXT1 = HF XTAL)/8
- do
- {
- IFG1 &= ~OFIFG; // czyszczenie flgi OSCFault
- for (i = 0xFF; i > 0; i--); // odczekanie
- }
- while ((IFG1 & OFIFG)); // dopóki OSCFault jest ciągle ustawiona
- WDTCTL = WDTPW + WDTCNTCL + WDTSSEL ; // tryb watchdog ACLK
- if(WDTIFG & IFG1)
- {
- IFG1 &= ~WDTIFG;
- P2OUT &= ~ BIT1; // demonsrcja po przez zaplenie diody że WDT zadziałał
- }
- for(;;) {
- if ((ZOLTY) == 0) //klawisz został wciśnięty
- {
- for(;;); // pętla nieskończona zawieszenie progrmu
- }else
- {
- WDTCTL=WDTPW +WDTCNTCL; // zerowanie WDT
- }
- }
- }
- ********************************************************************************************************************
- #include <msp430x14x.h>
- #define BUTTON BIT4&P4IN
- #define CZAS_OPOZNIENIA 50000
- #define CZAS_OPOZNIENIA_RESET 5000
- #define CZAS_SYGNALIZACJI 50
- #define true 1
- inline void czekaj(long opoznienie)
- {
- for(long i=opoznienie; i>0; --i)
- WDTCTL=WDTPW+WDTCNTCL;
- }
- void main( void )
- {
- unsigned int i;
- WDTCTL = WDTPW + WDTHOLD;
- P1DIR|=BIT5;
- P1DIR|=BIT6;
- P1OUT|=BIT5;
- P1OUT|=BIT6;
- P2DIR|=BIT1;
- P2OUT|=BIT1;
- BCSCTL1 |= XTS + DIVA1 + DIVA0;
- do
- {
- IFG1 &= ~OFIFG;
- for (i = 0xFF; i > 0; i--);
- }
- while ((IFG1 & OFIFG));
- WDTCTL = WDTPW + WDTCNTCL + WDTTMSEL + WDTSSEL IE1 |= WDTIE;
- _EINT();
- for(;;);
- }
- // procedura obslugi przerwania od WDT
- #pragma vector=WDT_VECTOR
- __interrupt void watchdog_timer(void)
- {
- while(true) // pętla wykonuje się do momentu naciśnięcia przycisku
- {
- if((BUTTON)==0)
- {
- P1OUT|=BIT5;
- P1OUT|=BIT6;
- while(true)
- { }
- }
- else
- {
- P1OUT^=BIT5;
- czekaj(CZAS_OPOZNIENIA);
- P1OUT^=BIT6;
- }
- }
- }
- ********************************************************************************************************************
- #define true 1
- inline void czekaj(long opoznienie)
- {
- for(long i=opoznienie; i>0; --i)
- WDTCTL=WDTPW+WDTCNTCL;
- }
- void main(void)
- {
- WDTCTL=WDTPW+WDTHOLD;
- P1DIR|=BIT5;
- P1DIR|=BIT6;
- P1OUT|=BIT5;
- P1OUT|=BIT6;
- P2DIR|=BIT1;
- P2OUT|=BIT1;
- BCSCTL1 |= XTS + DIVA1 + DIVA0;
- do
- {
- IFG1&=~OFIFG;
- for (short i=0xFF; i>0; --i)
- { }
- }
- while((IFG1&OFIFG));
- WDTCTL=WDTPW+WDTCNTCL+WDTSSEL;
- if(WDTIFG&IFG1)
- {
- IFG1&=~WDTIFG;
- for(long i=CZAS_SYGNALIZACJI; i>0; --i)
- {
- P1OUT^=BIT5;
- czekaj(CZAS_OPOZNIENIA_RESET);
- P1OUT^=BIT6;
- P2OUT^=BIT1;
- }
- }
- while(true)
- {
- if((BUTTON)==0)
- {
- P1OUT|=BIT5;
- P1OUT|=BIT6;
- P2OUT|=BIT1;
- while(true)
- { }
- }
- else
- {
- P1OUT^=BIT5;
- czekaj(CZAS_OPOZNIENIA);
- P1OUT^=BIT6;
- P2OUT^=BIT1;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement