code:interrupt_driven_ubx
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
code:interrupt_driven_ubx [2009/05/11 06:30] – laurenceb | code:interrupt_driven_ubx [2009/05/11 20:17] (current) – laurenceb | ||
---|---|---|---|
Line 1: | Line 1: | ||
under construction... | under construction... | ||
- | <code c> | ||
+ | |||
+ | |||
+ | |||
+ | ===== demo code ===== | ||
+ | |||
+ | <code c> | ||
#include < | #include < | ||
#include < | #include < | ||
Line 11: | Line 16: | ||
volatile ubx_gps_type Gps; | volatile ubx_gps_type Gps; | ||
- | volatile u08 sats; | + | |
int uart_putchar(char c, FILE *stream) | int uart_putchar(char c, FILE *stream) | ||
{ | { | ||
Line 37: | Line 42: | ||
if(Gps.packetflag==REQUIRED_DATA) | if(Gps.packetflag==REQUIRED_DATA) | ||
{ | { | ||
- | printf(" | + | printf(" |
Gps.packetflag=0; | Gps.packetflag=0; | ||
} | } | ||
Line 45: | Line 50: | ||
ISR(USART_RX_vect) // | ISR(USART_RX_vect) // | ||
{ | { | ||
- | static u08 state, | + | static u08 state, |
static u16 lenght; | static u16 lenght; | ||
static ubx_gps_type gps; | static ubx_gps_type gps; | ||
Line 77: | Line 82: | ||
case 5: //the most significant byte | case 5: //the most significant byte | ||
lenght|=c<< | lenght|=c<< | ||
+ | counter=0; | ||
state=6; | state=6; | ||
break; | break; | ||
Line 94: | Line 100: | ||
if(id==SOL_DATA && lenght==SOL_POS) | if(id==SOL_DATA && lenght==SOL_POS) | ||
gps.status=c; | gps.status=c; | ||
- | if(id==SVINFO_DATA | + | if(id==SOL_DATA |
- | gps.nosats=c; | + | gps.nosats=c; |
+ | / | ||
+ | { | ||
+ | counter++;// | ||
+ | if(counter==SATS_POS) | ||
+ | gps.nosats=c; | ||
+ | }*/ | ||
} | } | ||
lenght--; | lenght--; | ||
Line 142: | Line 154: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
+ | ===== header ===== | ||
+ | <code c> | ||
+ | typedef uint16_t u16; | ||
+ | typedef uint32_t u32; | ||
+ | typedef int32_t s32; | ||
+ | typedef struct | ||
+ | { | ||
+ | u32 time; | ||
+ | s32 vnorth; | ||
+ | s32 veast; | ||
+ | s32 vdown; | ||
+ | s32 longitude; | ||
+ | s32 latitude; | ||
+ | s32 altitude; | ||
+ | u08 packetflag; | ||
+ | u08 status; | ||
+ | u08 nosats; | ||
+ | } ubx_gps_type; | ||
+ | #define REQUIRED_DATA 0x0F | ||
+ | #define LLH_DATA 0x02 | ||
+ | #define VELNED_DATA 0x12 | ||
+ | #define SVINFO_DATA 0x30 | ||
+ | #define SOL_DATA 0x06 | ||
+ | #define NAV_CLASS 0x01 | ||
+ | #define SATS_POS 5 | ||
+ | #define SOL_POS 42 | ||
+ | #define POS_OFFSET 40 | ||
+ | #define POS_START 12 | ||
+ | #define POS_END 25 | ||
+ | #define VEL_OFFSET 36 | ||
+ | #define VEL_START 20 | ||
+ | #define VEL_END 37 | ||
+ | #define SYNC_1 0xB5 | ||
+ | #define SYNC_2 0x62 | ||
+ | |||
+ | #define BAUDRATE 38400UL | ||
+ | #define BAUDDIV 32 | ||
+ | //#define BAUDDIV | ||
+ | #define TOGGLE_PIN PIND=0x20 // | ||
+ | |||
+ | |||
+ | </ | ||
+ |
code/interrupt_driven_ubx.1242023405.txt.gz · Last modified: 2009/05/11 06:30 by laurenceb