сделал включение ))))) выключение почему-то не работает!!! после включения питания нажимаю кнопку - диод загораеца, т.е. частота начинает генерица но когда я еще раз нажимаю на кнопочку - диод остаеца гореть!!!! раньше я имел дело с ШИМ но все работало!!!
процессор MSP430F2131 макетная плата Olimex на выходе - быстрый вентиль, который управляет мощным полевиком на выходе ШИМ подтяжка к земле 50k
компилятор - mspgcc вот мой код:
#include "io.h" #include "signal.h"
#define KEYB_TEST_QUAN 1000
unsigned int i = 0 ; unsigned int j = 0 ; unsigned char cur = 0 ; unsigned char last = 0 ; unsigned int key_cnt = 0 ; unsigned char KeybState = 0 ;
////////////////////////////////////////////////////////////////////////////////
void sound_on ( void ) { P1OUT |= BIT7 ; }
/////////////////////////////////////////////////////
void sound_off ( void ) { P1OUT &= ~BIT7 ; }
/////////////////////////////////////////////////////
int main(void) { volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; // Stop WDT BCSCTL1 |= XTS; // ACLK = LFXT1 = HF XTAL BCSCTL3 |= LFXT1S_2; // 3-16 MHz range
do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i > 0; i--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set?
//BCSCTL2 |= SELM_3; // MCLK = LFXT1 (safe) BCSCTL2 |= BIT7 | BIT6 | BIT3 ;
// button P1REN |= BIT0 ; // pull-up/pull-down option enabled P1OUT |= BIT0 ; // pull-up selected P1IES |= BIT0 ; // high to low interrupt P1IE |= BIT0 ; // enable interrupt // test pin P1DIR |= BIT7 ; // output P1SEL &= ~BIT7 ; // port P1OUT &= ~BIT7 ;
// GUN //P1DIR |= BIT2 ; // output //P1OUT &= ~BIT2 ;
// timer_A1 TACTL = 0 ; // stop TACCTL0 = 0 ; // toggle TACCTL1 = OUTMOD_3 ; // toggle TACCR1 = 47 ; TACCR0 = 94 ; TACTL = BIT4 | BIT9 ;
//P1DIR |= BIT2 ; P1DIR &= ~BIT2 ; P1SEL |= BIT2 ; // Bit = 1: Peripheral module function is selected for the pin
_EINT () ; for ( ;; ) { for ( i = 0 ; i < 0xFFFF ; i ++ ) for ( j = 0 ; j < 0x30 ; j ++ ) ; //P1OUT ^= BIT2 ; //P1DIR ^= BIT2 ; } return 0 ;
}
/////////////////////////////////////////////////////
interrupt ( PORT1_VECTOR ) Keyboard_Handler_1 ( void ) { P1IE &= ~BIT0 ;
// debounce last = P1IN ; key_cnt = KEYB_TEST_QUAN ; while ( key_cnt ) { if ( ( KeybState = P1IN ) == last ) { -- key_cnt ; } else { key_cnt = KEYB_TEST_QUAN ; last = KeybState; } }
// check key if ( ! ( KeybState & BIT0 ) ) { //P1OUT ^= BIT2 ; P1DIR ^= BIT2 ;
if ( P1DIR & BIT2 ) { TACCTL1 = OUTMOD_3 ; } else { TACCTL1 = OUTMOD_0 ; P1OUT &= ~BIT2 ; } } P1IE |= BIT0 ; P1IFG = 0 ; }
|