1 | #include <msp430g2452.h>
|
2 | #include "init.h"
|
3 | #include "lcdroutine.h"
|
4 | #include <string.h>
|
5 | #include <stdlib.h>
|
6 | #include <stdio.h>
|
7 |
|
8 |
|
9 |
|
10 | /************************************************************
|
11 | * declarations
|
12 | ************************************************************/
|
13 |
|
14 | void ADC10_start(void); // ADC10 start
|
15 | float f_messureAverage;
|
16 | float f_messure;
|
17 | long l_temperature;
|
18 | char ch_outTemperature[];
|
19 | char ch_repeat = 0;
|
20 | float f_messureSum = 0;
|
21 | float f_messure = 0;
|
22 |
|
23 | void TA_start(void);
|
24 | void ADC10_start(void);
|
25 | //void ADC10_messure(void);
|
26 |
|
27 | /************************************************************
|
28 | * main
|
29 | ************************************************************/
|
30 |
|
31 | int main(void)
|
32 | {
|
33 | INIT_msp(); // Initialisierung MSP
|
34 | LCD_Init(); // Initialisierung LCD
|
35 | LCD_CursorOn(0); // LCD Cursor off
|
36 |
|
37 | LCD_SetCursorPos(1,1); // Cursor Postion setzen
|
38 | LCD_OutString("Temperatur:"); // Ausgabe
|
39 |
|
40 | while(1)
|
41 | {
|
42 | char ch_repeat = 0;
|
43 | float f_messureSum = 0;
|
44 | float f_messure = 0;
|
45 |
|
46 | for ( ch_repeat = 5; ch_repeat > 0; ch_repeat--)
|
47 | {
|
48 | ADC10_start();
|
49 | f_messure = ADC10MEM; // Messergeniss von ADC10 speichern
|
50 | f_messureSum += f_messure;
|
51 | }
|
52 | f_messureAverage = f_messureSum/5;
|
53 |
|
54 | l_temperature = ((((f_messureAverage/1024)*1.5)-0.986)/0.00355);
|
55 | ltoa (l_temperature, ch_outTemperature);
|
56 | LCD_SetCursorPos(2,8); // Cursor Postion setzen
|
57 | LCD_OutString(ch_outTemperature); // Ausgabe
|
58 | LCD_OutString(" Grad "); // Ausgabe
|
59 | }
|
60 | }
|
61 |
|
62 | /************************************************************
|
63 | * functions
|
64 | ************************************************************/
|
65 | void TA_start(void)
|
66 | {
|
67 | TACTL |= TACLR // Clear Timer
|
68 | + MC_1; // UP-Mode/Timer startet
|
69 | }
|
70 | void ADC10_start(void)
|
71 | {
|
72 | TA_start();
|
73 | ADC10CTL0 |= ENC // ADC10 Enable Conversion
|
74 | + ADC10SC; // ADC10 Start Conversion
|
75 | __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
|
76 | }
|
77 |
|
78 | //void ADC10_messure(void)
|
79 | //{
|
80 | //
|
81 | //}
|
82 |
|
83 | /************************************************************
|
84 | * Interrupt Service Routines
|
85 | ************************************************************/
|
86 |
|
87 | #pragma vector=TIMER0_A0_VECTOR
|
88 | __interrupt void ta0_isr(void)
|
89 | {
|
90 | TACCR0 &= ~CCIFG;
|
91 | P1OUT ^= BIT6;
|
92 | }
|
93 |
|
94 | #pragma vector=ADC10_VECTOR
|
95 | __interrupt void ADC10_ISR(void)
|
96 | {
|
97 | __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR) wake up MSP
|
98 | ADC10CTL0 &= ~ADC10IFG; // ADC10 interupt flag reset
|
99 | ADC10CTL0 &= ~ENC; // rest ENC
|
100 | TACTL &= ~(MC0 | MC1); // Timer stoppt
|
101 | }
|