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

Contents of /trunk/Embedded/main.c

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20