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

Diff of /trunk/Embedded/main.lst

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.136  
changed lines
  Added in v.137

  ViewVC Help
Powered by ViewVC 1.1.20