--- trunk/PIC/main.c 2007/01/31 08:47:47 25 +++ trunk/PIC/main.c 2007/01/31 10:45:20 26 @@ -67,10 +67,9 @@ bit global_comm_error; unsigned char global_comm_slipstate; -unsigned char global_comm_currentrate; +unsigned char global_comm_baudrate; -unsigned char global_lcd_buffer[20]; -unsigned char global_lcd_index; +unsigned char global_lcd_buffer[2][20]; bit global_led_0; @@ -90,6 +89,9 @@ { unsigned char data = RCREG; + if (global_comm_length == BUFFERLEN) //avoid buffer overrun + global_comm_slipstate == SlipError; + switch (global_comm_slipstate) { case SlipNormal: @@ -145,7 +147,6 @@ //timer overflow ca hvert sekund void timer1_interrupt(void) { - RB2 = !RB2; TMR1H = 0xEF; TMR1L = 0xFF; } @@ -173,6 +174,7 @@ /////////////////////////////////////////////////////////////////// // Slip funktioner + void slip_reset(void) { global_comm_error = 0; @@ -253,7 +255,10 @@ { //we can only handle 1200,2400,9600,19200 if (data == 0 || data == 1 || data == 3 || data == 4) + { global_reset_baudrate = 1; + global_comm_baudrate = data; + } else global_comm_error = 1; } @@ -312,7 +317,7 @@ } /////////////////////////////////////////////////////////////////// -// Gennerelle funktioner +// init funktioner void interrupt_init(void) { @@ -433,6 +438,10 @@ TMR1ON = 1; } +/////////////////////////////////////////////////////////////////// +// Gennerelle funktioner + + char ReadTemp(void) { char temp; @@ -444,6 +453,34 @@ return temp; } +void update_lcd(void) +{ +} + +void reset_baudrate(void) +{ + SPEN = 0; //disable serial port + + //set baudrate generator, i henhold til side 171 af PIC18F452 dokumentationen + switch (global_comm_baudrate) + { + case Baud1200: + SPBRG = 207; + break; + case Baud2400: + SPBRG = 103; + break; + case Baud9600: + SPBRG = 25; + break; + case Baud19200: + SPBRG = 12; + break; + default: + SPBRG = 25; // this should not be possible, but default to 9600 anyway + } + SPEN = 1; // enable the serial port again +} /////////////////////////////////////////////////////////////////// //Main @@ -461,7 +498,7 @@ slip_reset(); //take SLIP FSM into normal state - global_comm_currentrate = Baud9600; //default baudrate = 9600 + global_comm_baudrate = Baud9600; //default baudrate = 9600 (allready set in serial_init) global_reset_baudrate = 0; // initialisation completed and we are ready to recieve commands - enable serial reception @@ -478,10 +515,11 @@ if ( global_reset_baudrate == 1) { + reset_baudrate(); } RB1 = global_led_0; - // RB2 = global_led_1; + RB2 = global_led_1; RB3 = global_led_2; global_temp = ReadTemp();