/Designs/GPSnavigator/SW/GPS/GPS.h/GPS.h
0,0 → 1,193
/* mija 2008
demo for LCD NOKIA5110 and MCP9800 and GPS modul
 
CPU ATMEGA644P
fcpu = 1MHz
 
!! define PIN,PORT,DDR for IOpin !!
*/
 
#include <stdint.h>
 
#define MAX_RX_BUF 150
#define MAX_NMEA_LOAD 100
 
// PIN TL1
#define TL1 PB4 // input
#define TL1_DDR DDRB
#define TL1_PORT PORTB
#define TL1_PIN PINB
 
// PIN TL2
#define TL2 PB2 // input //int2
#define TL2_DDR DDRB
#define TL2_PORT PORTB
#define TL2_PIN PINB
 
// PIN TL3
#define TL3 PB3 // input
#define TL3_DDR DDRB
#define TL3_PORT PORTB
#define TL3_PIN PINB
 
// PIN GPS
#define GPS PD4
#define GPS_DDR DDRD
#define GPS_PORT PORTD
 
// UART SW
#define RX PD2 // input
#define RX_DDR DDRD
#define RX_PORT PORTD
#define RX_PIN PIND
 
// i2C SW
#define SDA PC1
#define SDA_PORT PORTC
#define SDA_DDR DDRC
#define SDA_PIN PINC
 
#define SCL PC0
#define SCL_PORT PORTC
#define SCL_DDR DDRC
 
// LED
#define LED PD7
#define LED_PORT PORTD
#define LED_DDR DDRD
 
// Vref
#define REF PA0
#define REF_PORT PORTA
#define REF_DDR DDRA
 
// interni
#define TL1_INIT TL1_DDR &= ~(_BV(TL1))
#define TL1_INPUT (TL1_PIN & _BV(TL1))
#define TL1_PULLUP TL1_PORT |= _BV(TL1)
 
#define TL2_INIT TL2_DDR &= ~(_BV(TL2))
#define TL2_INPUT (TL2_PIN & _BV(TL2))
#define TL2_PULLUP TL2_PORT |= _BV(TL2)
 
#define TL3_INIT TL3_DDR &= ~(_BV(TL3))
#define TL3_INPUT (TL3_PIN & _BV(TL3))
#define TL3_PULLUP TL3_PORT |= _BV(TL3)
 
#define GPS_OFF GPS_PORT |= _BV(GPS)
#define GPS_ON GPS_PORT &= (~(_BV(GPS)))
#define GPS_INIT GPS_DDR |= _BV(GPS)
#define GPS_INPUT (!(GPS_PORT & _BV(GPS)))
 
#define RX_INIT RX_DDR &= ~(_BV(RX))
#define RX_INPUT (RX_PIN & _BV(RX))
#define RX_PULLUP RX_PORT |= _BV(RX)
 
#define SCL_INIT SCL_DDR |= _BV(SCL)
#define SCL_L SCL_PORT &= ~(_BV(SCL))
#define SCL_H SCL_PORT |= _BV(SCL)
 
#define SDA_OUT SDA_DDR |= _BV(SDA)
#define SDA_L SDA_PORT &= ~(_BV(SDA))
#define SDA_H SDA_PORT |= _BV(SDA)
#define SDA_IN SDA_DDR &= ~(_BV(SDA))
#define SDA_INPUT (SDA_PIN & _BV(SDA))
#define SDA_FLOAT SDA_IN;SDA_L
 
#define LED_ON LED_PORT |= _BV(LED)
#define LED_OFF LED_PORT &= (~(_BV(LED)))
#define LED_INIT LED_DDR |= _BV(LED)
#define LED_INPUT (LED_PORT & _BV(LED))
 
#define REF_ON REF_PORT |= _BV(REF)
#define REF_OFF REF_PORT &= (~(_BV(REF)))
#define REF_INIT REF_DDR |= _BV(REF)
 
#define ADC_ON ADCSRA |= _BV(ADEN)
#define ADC_OFF ADCSRA &= ~(_BV(ADEN))
 
#define KEY1 0
#define KEY2 1
#define KEY3 3
 
#define ID_OFF 100
#define ID_START 101
#define ID_SETUP 102
 
#ifndef TYPEDEF_OK
//typedef struct{uint8_t a; uint8_t b}GPS_SEND;
typedef struct
{
uint8_t sec;
uint8_t min;
uint8_t hour;
}TIME_T;
 
typedef struct
{
uint8_t day;
uint8_t mon;
uint8_t year;
}DATE_T;
 
typedef struct
{
double lat;
double lon;
double alt;
double speed;
double course;
int16_t temperature;
TIME_T time;
DATE_T date;
}POINT_T;
 
typedef struct
{
uint8_t id;
uint8_t elevation;
uint16_t azimut;
uint8_t SNR;
}SATELITE_DETAIL;
 
typedef struct
{
//GGA
uint8_t fix_position;
uint8_t satelites_used;
double altitude;
double geoid;
uint16_t age_diff_corr;
uint16_t diff_id;
//GSA
char mode1;
char mode2;
uint8_t satelite_id[12];
double PDOP;
double HDOP;
double VDOP;
//GSV
uint8_t gsv_num_msg;
uint8_t gsv_msg;
uint8_t gsv_satelites_view;
SATELITE_DETAIL satelit_detail[12];
//RMC
uint8_t second;
uint8_t minute;
uint8_t hour;
uint8_t day;
uint8_t month;
uint8_t year;
double latitude;
double longitude;
char ns_indicator;
char we_indicator;
char status;
//VTG
double course;
double speed;
}DATA_GPS;
 
#endif
 
#define TYPEDEF_OK