Цитата(VVlad @ Mar 15 2010, 13:08)

За долгое молчание прошу прощения, получил и
изучил Ваши программы, грубых ошибок пока не вижу, опробовал аналогичный алгоритм на Ассемблере.
Добрый день. Все равно спасибо.
Цитата(VVlad @ Mar 15 2010, 13:08)

Пробовали Вы, Григорий, тактировать от внешнего кварцевого резонатора?
Первоначально был установлен часовой кварц. Потом решил эксперименты
ставить с внутренним генератором. Другого пока ничего не делал.
Цитата(VVlad @ Mar 15 2010, 13:08)

Нормально ли работает у Вас такой код
Код немного подправил (надеюсь я не изменил ход Ваших мыслей):
Код
#include <msp430x20x3.h>
#include ....
void main(void)
{
BCSCTL3 = LFXT1S_2;
BCSCTL2 = SELM_0 + DIVS_3;
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;[
//задержка для стабилизации генератора
for (INT16U i = 0; i < 65535; i ++)
__no_operation();
P1SEL = 0x00; P2SEL = 0x00;
P1DIR = 0xFF; P2DIR = 0xFF;
P1SEL |= BIT3;
WDTCTL = WDT_MDLY_32; // WDT Timer interval
IE1 |= WDTIE; // Enable WDT interrupt
SD16CTL = SD16REFON +SD16SSEL_1; // 1.2V ref, SMCLK
SD16INCTL0 = SD16INCH_6; // A6+/-
SD16CCTL0 = SD16SNGL + SD16IE; // Single conv, interrupt
InitUART();
SD16CCTL0 |= SD16SC; // Start SD16 conversion
while (TRUE)
{
__bis_SR_register(CPUOFF + GIE);
//отправка результата измерения на ПК
SendUARTByte( (INT08U)(__ADCResult__ ));
SendUARTByte( (INT08U)(__ADCResult__ ));
}
}
#pragma vector=SD16_VECTOR
__interrupt void SD16ISR(void)
{
if (SD16CCTL0 & SD16IFG)
{
__ADCResult__ = SD16MEM0;
__bic_SR_register_on_exit(CPUOFF);
}
}
// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
SD16CCTL0 |= SD16SC; // Start SD16 conversion
}
На выходе при комнатной температуре наблюдаю код в диапазоне 0xD40A - 0xD40E (54282 - 54286).
Вернул предыдущие настройки АЦП (настройки системы тактирования оставил теже). Получил код
в диапазоне 0xA82C - 0xA82F (43052 - 43055).
Напряжение питание при этих экспериментах было 3,1 В. На выходе Vref 1,17 В. Снижение напряжение
питания до 2,95 В обоих случаях приводит к получение максимального АЦП по каналу.
В общем пока получается, что при напряжении питания 3 В все работает более или менее нормально
(по крайней мере при +60 гр. код АЦП максимального значения еще не достигает). При понижении
питания все идет вразнос, а как следствие этого от батареи CR2032 мой "термометр" пока не работает.