проблема в том, что я настраиваю сигналы MCLK и SMCLK на работу от DC0CLK , в свою очередь сигнал DC0CLK должен формироваться автоматически при помощи FFL и внешнего часового кварца 32КГц, который сидит на XIN XOUT, эти порты я вкл в альтернативном режиме. Вот таймерА работает от SCLKA , и должен срабатывать примерно каждые 10мс, соответственно в прерывании счётчик, который каждые 100 (ну т.е. 1 с) и каждые 200 (2с) должен вкл и выкл диоды, но онэто делает каждые 2 и 4 с соответственно...Вообщем я уже проверил, все делители отключены, в чём причина я не понимаю... (осцилографа увы у меня тут нет )
сам код:
Код: Выделить всё
#include "io430f5435.h"
#include <string.h>
/* Pins */
#define pin0 (0x01)
#define pin1 (0x02)
#define pin2 (0x04)
#define pin3 (0x08)
#define pin4 (0x10)
#define pin5 (0x20)
#define pin6 (0x40)
#define pin7 (0x80)
#define i2cMode (0x06)
/* State M
#define M1 (0x01)
#define M2 (0x02)
#define M3 (0x04)
#define M4 (0x08)
#define M5 (0x10)
#define M6 (0x20)
*/
void Initialization();
unsigned char state=0x01; // бит состояния М1 ... М6
unsigned char myAdress=(0x00); // под адресс (GA0-GA2)
unsigned int blinkCounter=0;
#pragma vector = TIMER0_A0_VECTOR
__interrupt void TIMER_A0(void) // прерывание по флагу TA0CCR0 CCIFG0
{
blinkCounter++;
if (blinkCounter==100)
P1OUT |= 0xA0;
//P1OUT &= (~0xA0);
if (blinkCounter==300)
{
P1OUT &= 0x5F;
blinkCounter=0;
}
}
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;
Initialization();
for(;;)
{
}
}
void Initialization() // инициализация периферии
{
/* настройка модуля синхронизации */
{
//UCSCTL1|=DISMOD_L; // UCSCTL1|=DISMOD_L;
// DISMOD_L - откл MODULATION но мб он оключает калибровку DCOCLK
P7SEL |= 0x03;
UCSCTL6|=XT1BYPASS;
UCSCTL4|=SELM_3|SELS_3; // UCSCTL4|=SELM_3|SELS_3;
// SELM_3 - MCLK работает от DCOCLK; fDCOCLK = 2.097152 MHz.
// SELS_3 - SMCLK работает от DCOCLK;
}
/* настрйока таймера А */
{
// TA0R - Регистр счётчика Таймера А, в нём содержится начальное значение таймера, по def =0x0000;
TA0CCTL0|=CCIE ; // CCIE - разрешение прерываний по достижении TA0CCR0
UCSCTL2&=0x8fff;
TA0CTL|=TASSEL1|MC0|TACLR; // TA0CTL|=TASSEL1|MC0|TAIE; TA0CTL - регистр настройки таймера А
// TASSEL1 - тактирование от SMCLK
// MC0 - счет от 0000h до TAxCCR0
// TAIE - включаем прерывание .....откл т.к. это видимо при FFFFh
// TACLR - обнуление таймера-счётчика
TA0CCR0|=0x51EC; // TA0CCR0 - регистр сравнения 51EC = 20972 = 10мс для 2.097МГц
}
P1DIR |= 0xA0;
P1OUT |= 0xA0;
__enable_interrupt();
}

