/* mija 2008demo for LCD NOKIA5110 and MCP9800 and GPS modulCPU ATMEGA644Pfcpu = 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 USB PD5 // input#define USB_DDR DDRD#define USB_PORT PORTD#define USB_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 USB_INIT USB_DDR &= ~(_BV(USB))#define USB_INPUT (USB_PIN & _BV(USB))#define USB_PULLUP USB_PORT |= _BV(USB)#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 USART_PC_ON UCSR1B = _BV(RXCIE1) | _BV(RXEN1) | _BV(TXEN1)#define USART_PC_OFF UCSR1B = 0#define KEY1 0#define KEY2 1#define KEY3 2#define KEY1_LONG 1#define KEY2_LONG 2#define KEY3_LONG 3#define KEY1_SHORT 4#define KEY2_SHORT 5#define KEY3_SHORT 6#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{//GGAuint8_t fix_position;uint8_t satelites_used;double altitude;double geoid;uint16_t age_diff_corr;uint16_t diff_id;//GSAchar mode1;char mode2;uint8_t satelite_id[12];double PDOP;double HDOP;double VDOP;//GSVuint8_t gsv_num_msg;uint8_t gsv_msg;uint8_t gsv_satelites_view;SATELITE_DETAIL satelit_detail[12];//RMCuint8_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;//VTGdouble course;double speed;}DATA_GPS;#endif#define TYPEDEF_OK