Subversion Repositories Projects

Rev

Rev 783 | Rev 826 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 783 Rev 800
Line 16... Line 16...
16
 *   along with this program; if not, write to the                          *
16
 *   along with this program; if not, write to the                          *
17
 *   Free Software Foundation, Inc.,                                        *
17
 *   Free Software Foundation, Inc.,                                        *
18
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.              *
18
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.              *
19
 ****************************************************************************/
19
 ****************************************************************************/
20
 
20
 
-
 
21
#include "main.h"
21
#include <avr/io.h>
22
#include <avr/io.h>
22
#include <avr/interrupt.h>
23
#include <avr/interrupt.h>
23
#include <util/delay.h>
24
#include <util/delay.h>
24
#include "main.h"
-
 
25
#include "usart1.h"
25
#include "usart1.h"
26
 
26
 
27
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
27
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
28
 
28
 
29
volatile uint8_t rxd_buffer_locked = 0;
29
volatile uint8_t rxd_buffer_locked = 0;
Line 209... Line 209...
209
        if (len--) rxd_buffer[ptrOut++] = z;
209
        if (len--) rxd_buffer[ptrOut++] = z;
210
        else break;
210
        else break;
211
    }
211
    }
212
    pRxData = &rxd_buffer[3];
212
    pRxData = &rxd_buffer[3];
213
    RxDataLen = ptrOut - 3;
213
    RxDataLen = ptrOut - 3;
214
}
214
}
215
 
-
 
216
 
215
 
217
/**
216
/**
218
 * Request Data through usart1 until a answer is received
217
 * Request Data through usart1 until a answer is received
219
 */
218
 */
220
void usart1_request_blocking(unsigned char answer, const char* message) {
219
void usart1_request_blocking(unsigned char answer, const char* message) {
221
        rxd_buffer[2] = answer + 1;    
220
    rxd_buffer[2] = answer + 1;
222
        while (rxd_buffer[2] != answer) {
221
    while (rxd_buffer[2] != answer) {
223
                rxd_buffer_locked = 0;                 
222
        rxd_buffer_locked = 0;
224
                usart1_EnableTXD();
223
        usart1_EnableTXD();
225
                usart1_puts_pgm(message);                              
224
        usart1_puts_pgm(message);
226
                usart1_DisableTXD();
225
        usart1_DisableTXD();
227
                static uint8_t wait = 0;
226
        static uint8_t wait = 0;
228
                wait = 0;
227
        wait = 0;
229
                while (rxd_buffer_locked == 0 && wait < 150) {
228
        while (rxd_buffer_locked == 0 && wait < 150) {
230
                        wait++;
229
            wait++;
231
                        _delay_ms(10);
230
            _delay_ms(10);
232
                }                      
231
        }
233
        }              
232
    }
234
        Decode64();
233
    Decode64();
235
}
234
}
236
 
235
 
237
/**
236
/**
238
 * Request UART Redirect from NC to itself
237
 * Request UART Redirect from NC to itself
239
 */
238
 */
240
void usart1_request_nc_uart(void) {
239
void usart1_request_nc_uart(void) {
241
        usart1_EnableTXD();
240
    usart1_EnableTXD();
242
        usart1_putc(0x1B);
241
    usart1_putc(0x1B);
243
        usart1_putc(0x1B);
242
    usart1_putc(0x1B);
244
        usart1_putc(0x55);
243
    usart1_putc(0x55);
245
        usart1_putc(0xAA);
244
    usart1_putc(0xAA);
246
        usart1_putc(0x00);
245
    usart1_putc(0x00);
247
        usart1_DisableTXD();
246
    usart1_DisableTXD();
248
}
247
}
249
 
248
 
250
 
249
 
251
/**
250
/**
252
 * request Data through USART in special MK format by adding checksum and
251
 * request Data through USART in special MK format by adding checksum and
253
 * encode data in modified Base64
252
 * encode data in modified Base64
254
 * portions taken and adapted from
253
 * portions taken and adapted from