Цитата(rezident @ Nov 4 2010, 22:31)

Смотрим прототип функции, читаем комментарий
Код
extern void setDate( int year, char month, char day); //encoded as decimal numbers with Jan = 1 and 1st day = 1, 31st day = 31
и.... понимаем, что лажу в параметрах указали.

месяц задавал 0х10, 10 или 1, в TI_dayOfWeek получал 0х50
Код
хотя "char TI_dayOfWeek; // 0 - 6 .. Sunday = 0"
но дело не в том
Цитата(rezident @ Nov 4 2010, 22:31)

Хотелось бы уточнить, какой именно пример и с какими именно компилятором вы используете? Проблема может быть в том, что в разных компиляторах используются разные способы (регистры, стековые переменные) передачи параметров в/из функции. Это особенно важно, когда функция написана на ASM, а не на Си.
Хотел применить в простеньком приборе. Но с примером из архива ТИ такая же фигня. Пользуюсь IAR C/C++ Compiler for MSP430 4.21.2 [Evaluation] (4.21.2.20066)
Код
//******************************************************************************
// MSP-RTC Demo - Using Timer_A for 1 second interrupt
//
// Description; This example shows the correct setup and usage of the RTC
// Library without automatic ISR generation. LED is toggled on each second
//
// MSP430F149
// ---------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P1.0|-->LED
//
// L. Westlund
// Texas Instruments, Inc
// January 2005
// Updated for IAR Embedded Workbench Version: 2.21B
//******************************************************************************
#include <msp430x16x.h>
#include "RTC_Calendar.h"
void main ( void )
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
setTime( 0x12, 0, 0, 0); // initialize time to 12:00:00 AM
setDate(2010, 1,1); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
P1DIR |= 0x01; // Set P1.0 to output direction
CCR0 = 32768-1;
TACTL = TASSEL_1+MC_1; // ACLK, upmode
CCTL0 |= CCIE; // enable CCRO interrupt
_EINT();
while( 1 )
{
LPM3; // enter LPM3, clock will be updated
P1OUT ^= 0x01; // do any other needed items in loop
_NOP(); // set breakpoint here to see 1 second interrupt
}
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
incrementSeconds();
LPM3_EXIT;
}
что-то типа этого на работе пробовал, убирал оптимизацию.
с программой все просто скопировал, подключил .s43 скомпилировалось без проблем, setTime работает без вопросов, хочется календарь еще.
Спасибо.