Нужноотправлять по UARTу температуру в градусах цельсия раз в секунжу. По UARTу нормально передаёт, только какую то константу, а не температуру
const int ADC_RETURN_TEMPERATURA_32[]={500,500,499,499,499,498,498,498,497,497,496,496,496,495,495,495,494,494,49
4,493,493,492,492,492,491,491,491,490,490,490,489,489,489,
488,488,487,487,487,486,486,486,485,485,485,484,484,484,483,483,483,482,482,481,
481,481,480,480,480,479,479,479,478,478,478,477,477,
477,476,476,476,475,475,475,474,474,474,473,473,473,472,472,472,471,471,471,470,
470,469,469,469,468,468,468,467,467,467,466,466,466,
465,465,465,464,464,464,463,463,463,462,462,462,462,461,461,461,460,460,460,459,
459,459,458,458,458,457,457,457,456,456,456,455,455,
455,454,454,454,453,453,453,452,452,452,451,451,451,451,450,450,450,449,449,449,
448,448,448,447,447,447,446,446,446,446,445,445,445,
444,444,444,443,443,443,442,442,442,441,441,441,441,440,440,440,439,439,439,438,
438,438,437,437,437,437,436,436,436,435,435,435,434,
434,434,434,433,433,433,432,432,432,431,431,431,431,430,430,430,429,429,429,429,
428,428,428,427,427,427,426,426,426,426,425,425,425,
424,424,424,424,423,423,423,422,422,422,422,421,421,421,420,420,420,420,419,419,
419,418,418,418,418,417,417,417,416,416,416,416,415,
415,415,414,414,414,414,413,413,413,413,412,412,412,411,411,411,411,410,410,410,
409,409,409,409,408,408,408,408,407,407,407,406,406,
406,406,405,405,405,405,404,404,404,403,403,403,403,402,402,402,402,401,401,401,
401,400,400,400,399,399,399,399,398,398,398,398,397,
397,397,397,396,396,396,396,395,395,395,395,394,394,394,393,393,393,393,392,392,
392,392,391,391,391,391,390,390,390,390,389,389,389,
389,388,388,388,388,387,387,387,387,386,386,386,386,385,385,385,385,384,384,384,
384,383,383,383,383,382,382,382,382,381,381,381,381,
380,380,380,380,379,379,379,379,378,378,378,378,377,377,377,377,377,376,376,376,
376,375,375,375,375,374,374,374,374,373,373,373,373,
372,372,372,372,371,371,371,371,371,370,370,370,370,369,369,369,369,368,368,368,
368,368,367,367,367,367,366,366,366,366,365,365,365,
365,365,364,364,364,364,363,363,363,363,362,362,362,362,362,361,361,361,361,360,
360,360,360,360,359,359,359,359,358,358,358,358,358,
357,357,357,357,356,356,356,356,356,355,355,355,355,354,354,354,354,354,353,353,
353,353,352,352,352,352,352,351,351,351,351,350,350,
350,350,350,349,349,349,349,349,348,348,348,348,348,347,347,347,347,346,346,346,
346,346,345,345,345,345,345,344,344,344,344,344,343,
343,343,343,343,342,342,342,342,341,341,341,341,341,340,340,340,340,340,339,339,
339,339,339,338,338,338,338,338,337,337,337,337,337,
336,336,336,336,336,335,335,335,335,335,334,334,334,334,334,333,333,333,333,333,
332,332,332,332,332,331,331,331,331,331,330,330,330,
330,330,329,329,329,329,329,328,328,328,328,328,328,327,327,327,327,327,326,326,
326,326,326,325,325,325,325,325,324,324,324,324,324,
324,323,323,323,323,323,322,322,322,322,322,321,321,321,321,321,321,320,320,320,
320,320,319,319,319,319,319,318,318,318,318,318,318,
317,317,317,317,317,316,316,316,316,316,316,315,315,315,315,315,314,314,314,314,
314,314,313,313,313,313,313,313,312,312,312,312,312,
311,311,311,311,311,311,310,310,310,310,310,309,309,309,309,309,309,308,308,308,
308,308,308,307,307,307,307,307,307,306,306,306,306,
306,305,305,305,305,305,305,304,304,304,304,304,304,303,303,303,303,303,303,302,
302,302,302,302,302,301,301,301,301,301,301,300,300,
300,300,300,300,299,299,299,299,299,299,298,298,298,298,298,298,297,297,297,297,
297,297,296,296,296,296,296,296,295,295,295,295,295,
295,294,294,294,294,294,294,294,293,293,293,293,293,293,292,292,292,292,292,292,
291,291,291,291,291,291,290,290,290,290,290,290,290,
289,289,289,289,289,289,288,288,288,288,288,288,287,287,287,287,287,287,287,286,
286,286,286,286,286,285,285,285,285,285,285,285,284,
284,284,284,284,284,283,283,283,283,283,283,283,282,282,282,282,282,282,281,281,
281,281,281,281,281,280,280,280,280,280,280,280,279,
279,279,279,279,279,278,278,278,278,278,278,278,277,277,277,277,277,277,277,276,
276,276,276,276,276,276,275,275,275,275,275,275,275,
274,274,274,274,274,274,274,273,273,273,273,273,273,272,272,272,272,272,272,272,
271,271,271,271,271,271,271,270,270,270,270,270,270,
270,269,269,269,269,269,269,269,269,268,268,268,268,268,268,268,267,267,267,267,
267,267,267,266,266,266,266,266,266,266,265,265,265,
265,265,265,265,264,264,264,264,264,264,264,264,263,263,263,263,263,263,263,262,
262,262,262,262,262,262,261,261,261,261,261,261,261,
261,260,260,260,260,260,260,260,259,259,259,259,259,259,259,259,258,258,258,258,
258,258,258,257,257,257,257,257,257,257,257,256,256,
256,256,256,256,256,255,255,255,255,255,255,255,255,254,254,254,254,254,254,254,
254,253,253,253,253,253,253,253,253,252,252,252,252,
252,252,252,251,251,251,251,251,251,251,251,250,250,250,250,250,250,250,250,249,
249,249,249,249,249,249,249,248,248,248,248,248,248,
248,248,247,247,247,247,247,247,247,247,246,246,246,246,246,246,246,246,245,245,
245,245,245,245,245,245,244,244,244,244,244,244,244,
244,243,243,243,243,243,243,243,243,242,242,242,242,242,242,242,242,241,241,241,
241,241,241,241,241,241,240,240,240,240,240,240,240,
240,239,239,239,239,239,239,239,239,238,238,238,238,238,238,238,238,238,237,237,
237,237,237,237,237,237,236,236,236,236,236,236,236,
236,236,235,235,235,235,235,235,235,235,234,234,234,234,234,234,234,234,234,233,
233,233,233,233,233,233,233,232,232,232,232,232,232,
232,232,232,231,231,231,231,231,231,231,231,231,230,230,230,230,230,230,230,230,
229,229,229,229,229,229,229,229,229,228,228,228,228,
228,228,228,228,228,227,227,227,227,227,227,227,227,227,226,226,226,226,226,226,
226,226,226,225,225,225,225,225,225,225,225,225,224,
224,224,224,224,224,224,224,224,223,223,223,223,223,223,223,223,223,222,222,222,
222,222,222,222,222,222,221,221,221,221,221,221,221,
221,220,220,220,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,218,
218,218,218,218,218,218,218,218,217,217,217,217,217,
217,217,217,217,217,216,216,216,216,216,216,216,216,216,215,215,215,215,215,215,
215,215,215,214,214,214,214,214,214,214,214,214,214,
213,213,213,213,213,213,213,213,213,212,212,212,212,212,212,212,212,212,212,211,
211,211,211,211,211,211,211,211,210,210,210,210,210,
210,210,210,210,210,209,209,209,209,209,209,209,209,209,208,208,208,208,208,208,
208,208,208,208,207,207,207,207,207,207,207,207,207,
207,206,206,206,206,206,206,206,206,206,206,205,205,205,205,205,205,205,205,205,
204,204,204,204,204,204,204,204,204,204,203,203,203,
203,203,203,203,203,203,203,202,202,202,202,202,202,202,202,202,202,201,201,201,
201,201,201,201,201,201,201,200,200,200,200,200,200,
200,200,200,200,199,199,199,199,199,199,199,199,199,199,198,198,198,198,198,198,
198,198,198,198,197,197,197,197,197,197,197,197,197,
197,196,196,196,196,196,196,196,196,196,196,195,195,195,195,195,195,195,195,195,
195,194,194,194,194,194,194,194,194,194,194,193,193,
193,193,193,193,193,193,193,193,193,192,192,192,192,192,192,192,192,192,192,191,
191,191,191,191,191,191,191,191,191,190,190,190,190,
190,190,190,190,190,190,189,189,189,189,189,189,189,189,189,189,189,188,188,188,
188,188,188,188,188,188,188,187,187,187,187,187,187,
187,187,187,187,187,186,186,186,186,186,186,186,186,186,186,185,185,185,185,185,
185,185,185,185,185,185,184,184,184,184,184,184,184,
184,184,184,183,183,183,183,183,183,183,183,183,183,183,182,182,182,182,182,182,
182,182,182,182,181,181,181,181,181,181,181,181,181,
181,181,180,180,180,180,180,180,180,180,180,180,180,179,179,179,179,179,179,179,
179,179,179,179,178,178,178,178,178,178,178,178,178,
178,177,177,177,177,177,177,177,177,177,177,177,176,176,176,176,176,176,176,176,
176,176,176,175,175,175,175,175,175,175,175,175,175,
175,174,174,174,174,174,174,174,174,174,174,174,173,173,173,173,173,173,173,173,
173,173,173,172,172,172,172,172,172,172,172,172,172,
172,171,171,171,171,171,171,171,171,171,171,171,170,170,170,170,170,170,170,170,
170,170,170,169,169,169,169,169,169,169,169,169,169,
169,168,168,168,168,168,168,168,168,168,168,168,167,167,167,167,167,167,167,167,
167,167,167,166,166,166,166,166,166,166,166,166,166,
166,166,165,165,165,165,165,165,165,165,165,165,165,164,164,164,164,164,164,164,
164,164,164,164,163,163,163,163,163,163,163,163,163,
163,163,163,162,162,162,162,162,162,162,162,162,162,162,161,161,161,161,161,161,
161,161,161,161,161,160,160,160,160,160,160,160,160,
160,160,160,160,159,159,159,159,159,159,159,159,159,159,159,158,158,158,158,158,
158,158,158,158,158,158,158,157,157,157,157,157,157,
157,157,157,157,157,157,156,156,156,156,156,156,156,156,156,156,156,155,155,155,
155,155,155,155,155,155,155,155,155,154,154,154,154,
154,154,154,154,154,154,154,154,153,153,153,153,153,153,153,153,153,153,153,152,
152,152,152,152,152,152,152,152,152,152,152,151,151,
151,151,151,151,151,151,151,151,151,151,150,150,150,150,150,150,150,150,150,150,
150,150,149,149,149,149,149,149,149,149,149,149,149,
149,148,148,148,148,148,148,148,148,148,148,148,148,147,147,147,147,147,147,147,
147,147,147,147,147,146,146,146,146,146,146,146,146,
146,146,146,146,145,145,145,145,145,145,145,145,145,145,145,145,145,144,144,144,
144,144,144,144,144,144,144,144,144,143,143,143,143,
143,143,143,143,143,143,143,143,142,142,142,142,142,142,142,142,142,142,142,142,
142,141,141,141,141,141,141,141,141,141,141,141,141,
140,140,140,140,140,140,140,140,140,140,140,140,140,139,139,139,139,139,139,139,
139,139,139,139,139,139,138,138,138,138,138,138,138,
138,138,138,138,138,137,137,137,137,137,137,137,137,137,137,137,137,137,136,136,
136,136,136,136,136,136,136,136,136,136,136,135,135,
135,135,135,135,135,135,135,135,135,135,135,134,134,134,134,134,134,134,134,134,
134,134,134,134,133,133,133,133,133,133,133,133,133,
133,133,133,133,132,132,132,132,132,132,132,132,132,132,132,132,132,132,131,131,
131,131,131,131,131,131,131,131,131,131,131,130,130,
130,130,130,130,130,130,130,130,130,130,130,130,129,129,129,129,129,129,129,129,
129,129,129,129,129,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,127,127,127,127,127,127,127,127,127,127,127,127,127,127,
126,126,126,126,126,126,126,126,126,126,126,126,126,
126,125,125,125,125,125,125,125,125,125,125,125,125,125,125,124,124,124,124,124,
124,124,124,124,124,124,124,124,124,124,123,123,123,
123,123,123,123,123,123,123,123,123,123,123,122,122,122,122,122,122,122,122,122,
122,122,122,122,122,122,121,121,121,121,121,121,121,
121,121,121,121,121,121,121,121,120,120,120,120,120,120,120,120,120,120,120,120,
120,120,120,119,119,119,119,119,119,119,119,119,119,
119,119,119,119,119,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,
118,117,117,117,117,117,117,117,117,117,117,117,117,
117,117,117,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,115,
115,115,115,115,115,115,115,115,115,115,115,115,115,
115,115,115,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,113,
113,113,113,113,113,113,113,113,113,113,113,113,113,
113,113,113,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,
112,111,111,111,111,111,111,111,111,111,111,111,111,
111,111,111,111,111,111,110,110,110,110,110,110,110,110,110,110,110,110,110,110,
110,110,110,110,109,109,109,109,109,109,109,109,109,
109,109,109,109,109,109,109,109,109,109,108,108,108,108,108,108,108,108,108,108,
108,108,108,108,108,108,108,108,108,107,107,107,107,
107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,106,106,106,
106,106,106,106,106,106,106,106,106,106,106,106,106,
106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,
105,105,105,105,105,105,105,104,104,104,104,104,104,
104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,103,103,103,
103,103,103,103,103,103,103,103,103,103,103,103,103,
103,103,103,103,103,103,103,103,102,102,102,102,102,102,102,102,102,102,102,102,
102,102,102,102,102,102,102,102,102,102,102,102,102,
102,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,
101,101,101,101,101,101,101,101,101,101,100,100,100,
100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
100,100,100,100,100,100,100,100};
int main( void )
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer to prevent time out reset
_DINT(); // Запрещаем прерывания
InitializationPortIO (); // Вызов функции инициализации портов ввода/вывода микроконтроллера
InitializationTimersMSP430 (); // Вызов функции инициализации внутренних аппаратных таймеров микроконтроллера MSP430F135
InitializationUSART (); // Вызов функции инициализации модуля USART
InitializationADC (); // Вызов Функции инициализации модуля АЦП микроконтроллера
_EINT(); // Разрещаем прерывания
while (1)
{
if (Flag_1s == true)
{
Temperatura_CPU = ADC_RETURN_TEMPERATURA_32[(ADC12MEM15 - L_ADRES_MASSIV_ADC)];
UART_printf ("\r\n Temperatura=%u",Temperatura_CPU);
ADC12MEM15 = 0;
Flag_1s = false;
}
}
// return 0;
}
//********************************************************************************
*********************************************************************************
******************************
//********************************************************** ОБРАБОТЧИКИ ПРЕРЫВАНИЙ ********************************************************************************
*********************
#pragma vector = TIMERA0_VECTOR // Прерывание от таймера А (срабатывает каждые 50 мс)
__interrupt void isr_TACCR0()
{
ProgramCounter_1 ++;
if (ProgramCounter_1 >= 20)
{
Flag_1s = true;
TimeSecond ++;
if (TimeSecond > 59)
{
TimeSecond = 0;
TimeMinute ++;
}
if (TimeMinute > 59)
{
TimeMinute = 0;
TimeHour ++;
}
if (TimeHour > 250)
{
TimeHour = 0;
}
ProgramCounter_1 = 0;
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#pragma vector = USART0RX_VECTOR // Прерывание от приёмника UART ()
__interrupt void isr_URXIFG0(void)
{
BUFER_UART_RXD [Counter_UART_RXDATA] = U0RXBUF;
if (BUFER_UART_RXD [Counter_UART_RXDATA] == 0x0d)
{
FlagAcceptDataUART = true;
}
Counter_UART_RXDATA ++;
if (Counter_UART_RXDATA > MAX_BUFER_UART_RXD)
{
Counter_UART_RXDATA = 0;
FlagOverloadBuferUART = true;
}
}
//********************************************************************************
*********************************************************************************
******************************
//************************************************************* ОПИСАНИЯ ФУНКЦИЙ ********************************************************************************
************************
void InitializationTimersMSP430 (void) // Функция инициализации внутренних аппаратных таймеров микроконтроллера MSP430F135
{
// Общая инициализвция модуля тактирования микроконтроллера
BCSCTL1 = 0x00; // Обнуление управляющего регистра BCSCTL1
BCSCTL2 = 0x00; // Обнуление управляющего регистра BCSCTL2
BCSCTL1 = RSEL0 | RSEL1 | RSEL2; // Сопротивление внутреннего резистора -> МАКСИМУМ
BCSCTL2 = SELM_2 | // Источник тактирования MCLK -> XT2CLK
DIVM_0 | // Делитель MCLK -> 1
SELS | // Источник тактирования SMCLK -> XT2CLK
DIVS_0; // Делитель SMCLK -> 1
DCOCTL = DCO0 | DCO1 | DCO2 | // Частота генератора -> МАКСИМУМ (8000000 Гц)
MOD0 | MOD1 | MOD2 | MOD3 | MOD4; // Модулятор тактовой частоты DCO -> МАКСИМУМ
LPM4; // Генераторы DCO и LFXT1 отключены
// Инициализация таймера А
TACTL = TASSEL_2 | // Источник тактирования таймера -> сигнал SMCLK
MC_1 | // Режим работы таймера -> счёт вверх до значения TACCR0
ID_3; // Предделитель таймера -> 8
TACCR0 = 50000; // Счёт до значения -> 50000
TACCTL0 = CCIE; // Разрешение прерывания по захвату/сравнению
// Инициализация таймера B
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void InitializationPortIO (void) // Функция инициализации портов ввода вывода микроконтроллера
{
// Инициализация порта ввода/вывода №1
// Инициализация порта ввода/вывода №2
// Инициализация порта ввода/вывода №3
P3SEL |= BIT4 | BIT5; // Выводы 4 и 5 порта 3 настроены как выводы альтернативных функций (USART)
P3DIR |= BIT4; // Вывод 4 порта 3 настраиваем как выход - TXD
P3DIR &= ~BIT5; // Вывод 5 порта 3 настраиваем как вход - RXD0
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void InitializationUSART (void) // Функция инициализации модуля USART микроконтроллера
{
// Инициализации модуля USART0
UTCTL0 = SSEL1 | SSEL0; // Источник тактирования таймера -> сигнал SMCLK
UCTL_0 = CHAR; // Количество бит во фрейме -> 8
UBR00 = 0x45; // Установка коэффициента предделителя USART для скорости приёма/передачи = 115200 при тактовой частоте 8000000 МГц
UBR10 = 0x00; // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||||||||||||
UMCTL0 = 0xBA; // Установка коэффициента модулятора USART для скорости приёма/передачи = 115200 при тактовой частоте 8000000 МГц
ME1 = UTXE0 | // Включаем передатчик UART
URXE0; // Включаем приёмник UART
IE1 |= URXIE0; // Enable USART0 RX interrupt
// U1CTL &= ~SWRST; //reset UART logic
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void UART_putChar (char c) // UART1 Transmit Subroutine. Send ony byte via UART. @param c Character to send.
{
while ((IFG1 & UTXIFG0) == 0); // Wait for ready U1TXBUF
U0TXBUF = c; // send data
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
char UART_getCharIsReady (void) // Check UART's input buffer. @return TRUE: if input buffer contains received data.
{
return (IFG1 & URXIFG0) != 0;
}
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
char UART_getChar (void) // Receive one byte via UART. This function waits for the input (blocking).@return Received character.
{
while (!UART_getCharIsReady ());
return U0RXBUF;
}
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void UART_write (const char *buf, int length) // Write string buffer to UART. @param buf String buffer to send. @param length Length of string buffer.
{
int i;
for (i = 0; i < length; i++)
{
UART_putChar (buf[i]);
}
}
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void UART_printf (const char *fmt, ...) // Printf function which uses UART interface to send. @param fmt Printf format string. Example: "Value: %02i\r\n"
{ // UART_printf ("Number: %02i\r\n", number);
static va_list valist;
char buf[UART_PRINTF_BUF_SIZE];
va_start (valist, fmt);
vsnprintf (buf, sizeof (buf), fmt, valist);
va_end (valist);
UART_write (buf, strlen (buf));
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void InitializationADC (void) // Функция инициализации модуля АЦП микроконтроллера
{
//ПЕРВЫЙ ВАРИАНТ КОДА ДЛЯ РАБОТЫ С АЦП (повтаряющаяся последовательность каналов)
// Управляющий регистр 0 АЦП12 - ADC12CTL0
ADC12CTL0 = ADC12ON | // Включаем модуль АЦП
REF2_5V | // Выбираем значение опорного напряжения равным 2,5 В
REFON | // Включаем генератор опорного напряжения
MSC | // Разрешаем режим множественных выборок и преобразований (только для последовательных и повторных режимов преобразования)
SHT0_3 | // Устанавливаем время выборки и хранения для ячеек памяти результатов преобразования с 0 по 7 равным 32 циклам
SHT1_3; // Устанавливаем время выборки и хранения для ячеек памяти результатов преобразования с 8 по 15 равным 32 циклам
// Управляющий регистр 1 АЦП12 - ADC12CTL1
ADC12CTL1 = SHP | // Источник сигнала SAMPCON -> таймер выборки и хранения
ADC12SSEL0 | ADC12SSEL1 | // Источник тактирования АЦП -> тактовая частота SMCLK
CONSEQ_3 | // Режим работы АЦП -> повторяющаяся последовательность каналов
CSTARTADD_0 | // Стартовый адрес начала преобразования АЦП -> ADC12MEM0
ADC12DIV_2; // Тактовый делитель частоты тактирования = 3
// Управляющий регистр памяти преобразований АЦП12
ADC12MCTL15 = INCH_11; // Для ячейки памяти №15 выбираем внутренний источник опрного напряжения, внутренний датчик температуры
// Управляющий регистр разрешения прерываний АЦП - ADC12IE
ADC12IE = ADC12IV_ADC12IFG15; // Разрешаем прерывание от АЦП при заполнении 15 ячейки памяти
}