/[H9]/trunk/Embedded/main.lst
ViewVC logotype

Contents of /trunk/Embedded/main.lst

Parent Directory Parent Directory | Revision Log Revision Log


Revision 137 - (show annotations) (download)
Mon Dec 3 14:24:50 2007 UTC (16 years, 5 months ago) by hedin
File size: 5348 byte(s)
WIP commit of embedded, about to init sms modem etc.
1 1: #include <pic18.h>
2 2: #include <stdio.h>
3 3: #include <string.h>
4 4: #include "lcd.h"
5 5: #include "Delay.h"
6 6: // Delay.h is included inside lcd.c
7 7:
8 8: #define LCD_LENGTH 16
9 9: #define LCD_ROWS 2
10 10:
11 11:
12 12: unsigned char global_Pot_Hi, global_Pot_Lo;
13 13: unsigned char global_LCD_Buffer[LCD_ROWS][LCD_LENGTH];
14 14: unsigned char global_serial_data;
15 15: unsigned char global_serial_recieve_buffer[LCD_LENGTH];
16 16: bit global_recieve_done = 0;
17 17: int global_serial_byte_counter = 0;
18 18:
19 19: void serial_recieved(void);
20 20:
21 21: // Nicked from H7
22 22: void ad_init(void)
23 23: {
24 24: // AD Conversion clock
25 25: ADCS0 = 0;
26 26: ADCS1 = 0;
27 27: ADCS2 = 0;
28 28:
29 29: //Select AN0/RA0 for AD source
30 30: // In this (000) setup, it's only RA0/AN0 that does ad convertion.
31 31: CHS0=0;
32 32: CHS1=0;
33 33: CHS2=0;
34 34:
35 35: //Only AN0 is selected for AD and with Vdd/Vss as limits
36 36: PCFG0=0;
37 37: PCFG1=1;
38 38: PCFG2=1;
39 39: PCFG3=1;
40 40:
41 41: //Result is left justified
42 42: ADFM=0;
43 43:
44 44: //Fire up for A/D converter module
45 45: ADON=1;
46 46: }
47 47:
48 48: void rs232_init(void)
49 49: {
50 50: SPEN = 0; // Serial Port Enable Bit... 0 = disabled
51 51: TRISC6 = 0;
52 52: TRISC7 = 1;
53 53:
54 54: SPBRG = 207; // 1200 baud rate... 25 = 9600
55 55: // x = (Fosc / (16*[baud rate]) )-1
56 56: TXSTA = 0x24; // Enables BRGH and TXEN inthe TXSTA register
57 57: RCSTA = 0x90; // 0x90 enables SPEN and CREN in the RCSTA register
58 58: }
59 59:
60 60: void interrupt_init(void)
61 61: {
62 62: // Assumes that all interrupts default is 0
63 63: PEIE = 1;
64 64: GIE = 1;
65 65: RCIE = 1; // Recieve interrupt enable.
66 66: IPEN = 0; // Nfo interrupt priority
67 67: TXIE = 0; // Serial interrupt enabled
68 68: }
69 69:
70 70: void pic18_io_init(void)
71 71: {
72 72: TRISA0 = 1; // analog input
73 73: TRISB1 = 1; // TRISB1-4 Digital input
74 74: TRISB2 = 1;
75 75: TRISB3 = 1;
76 76: TRISB4 = 1;
77 77: }
78 78:
79 79:
80 80:
81 81: void interrupt interrupt_handler(void)
82 82: {
83 83: // Finds out what interrupt have been trigged, and starts the respective function.
84 84: if(RCIF == 1) // Serial recieve interrupt
85 85: {
86 86: serial_recieved();
87 87: RCIF = 0;
88 88: }
89 89: }
90 90:
91 91:
92 92:
93 93: void serial_send(void)
94 94: {
95 95: int i;
96 96: char tosend[3];
97 97: char data;
98 98: sprintf(tosend,"%s", "at\r");
99 99: for(i = 0; i < 3; i++)
100 100: {
101 101: data = tosend[i];
102 102: TXREG = data;
103 103: while(TRMT==0)
104 104: DelayMs(1000);
105 105: }
106 106: }
107 107:
108 108: void serial_recieved(void)
109 109: {
110 110: char data, saved_data[LCD_LENGTH];
111 111:
112 112: data = RCREG;
113 113:
114 114: global_serial_recieve_buffer[global_serial_byte_counter] = data;
115 115: if(data == '\r')
116 116: {
117 117: global_recieve_done = 1;
118 118: global_serial_byte_counter = 0;
119 119: }
120 120: else
121 121: {
122 122: global_serial_byte_counter++;
123 123: }
124 124:
125 125: }
126 126:
127 127: void main()
128 128: {
129 129: /////////////////////////////////////////////
130 130: // Running Init's
131 131:
132 132: // Running init for various components.
133 133: //AD_init();
134 134: ad_init();
135 135: rs232_init();
136 136: pic18_io_init();
137 137: lcd_init(0);
138 138: interrupt_init();
139 139:
140 140: /////////////////////////////////////////////
141 141: // Main loop
142 142:
143 143: while(1)
144 144: {
145 145: DelayMs(3000);
146 146: serial_send();
147 147: // Checking if A/D convertion is done, and save the data in global_Pot_??
148 148: if(GODONE==0)
149 149: {
150 150: global_Pot_Hi = ADRESH;
151 151: global_Pot_Lo = ADRESL;
152 152: GODONE = 1;
153 153: }
154 154:
155 155: if( global_recieve_done == 1 )
156 156: {
157 157: lcd_clear();
158 158: lcd_goto(0x00);
159 159: lcd_puts(global_serial_recieve_buffer);
160 160: }
161 161: //update_lcd();
162 162: }
163 163: }

  ViewVC Help
Powered by ViewVC 1.1.20