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

Contents of /trunk/Embedded/main.c

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

  ViewVC Help
Powered by ViewVC 1.1.20