Gast
#1080897
Hallo, ich habe mit der Software für meine Studienarbeit irgendwie
größere Probleme. Ich komme nicht dahinter, was die folgende
Fehlermeldung von mir will:
../gps_studienarbeit_software.c:141: error: expected identifier or '('
before '}' token
Es wäre super, wenn mir da jemand weiterhelfen könnte.
Vielen Dank im Voraus.
Nachfolgend der Quelltext:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include "mydefs.h"
#include "PROTOS.h"
#include "serial.h"
#include "lcd.h"
//"volatile" für alle Variablen die in Interrupt's geändert werden
unsigned int volatile overflow;
char line[80]; //Zeichenpuffer
unsigned char satcount;
unsigned char gsvcount;
//######################################################################
#############
SIGNAL(SIG_OVERFLOW1) /* signal handler for tcnt1 overflow
interrupt */
//######################################################################
#############
{
if(overflow>0) overflow--;
}
//######################################################################
#############
/* Hauptprogramm */
int main(void)
//######################################################################
#############
{
unsigned char c;
DDRA=0xFF; // set io-pins on PortA
PORTA=0; //LCD-Datenbus
DDRD=0xC0; // set io-pins on PortD
PORTD=0x00; //LED's
SFIOR&=!(1<<PUD); //Pullups Enable
// SFIOR=0; //Pullups Enable
LCDInit();
ser_init();
//Timer1
TCCR1A=0;
TCCR1B=0x01; //Timer1 Start Takt = F/1
TIMSK=(1<<TOIE1); /* enable timer1 overflow int */
sei(); //enable interrupts
LCDCls();
LCDWrite("GPS-Display");
LCDPos(2,1);
LCDWrite("Andreas Herrmann");
Delay1ms(1000);
LCDCls();
overflow=TIME_OUT;
ser_puts("$PRWIILOG,???,V,,,\n"); //Alle Messages abschalten
Delay1ms(100);
ser_puts("$PRWIILOG,GGA,A,T,1,0\n"); //GGA Message ein. Jede Sekunde
Delay1ms(100);
ser_puts("$PRWIILOG,RMC,A,T,1,0\n"); //RMC Message ein. Jede Sekunde
Delay1ms(100);
// ser_puts("$PRWIILOG,GSA,A,T,1,0\n"); //GSA Message ein. Jede
Sekunde
// Delay1ms(100);
ser_puts("$PRWIILOG,GSV,A,T,1,0\n"); //GSV Message ein. Jede Sekunde
Delay1ms(100);
//#endif
//#ifdef SIRF
//Checksumme am Ende erforderlich !
//GPS könnte noch auf 9600 Baud stehen.
/* UBRRL=UART_BAUD_SELECT_9600; //Auf höhere Baudrate schalten
Delay1ms(100);
ser_puts("$PSRF100,1,4800,8,1,0*0E\n"); //Neue Baudrate zum GPS
senden
Delay1ms(100);
UBRRL=UART_BAUD_SELECT_4800; //und zurückschalten
Delay1ms(100);
*/
// ser_puts("$PSRF103,01,00,00,01*25\n"); //GLL Message abschalten
// ser_puts("$PSRF103,02,00,00,01*26\n"); //GSA Message abschalten
// ser_puts("$PSRF103,03,00,00,01*27\n"); //GSV Message abschalten
// ser_puts("$PSRF103,04,00,00,01*20\n"); //RMC Message abschalten
// ser_puts("$PSRF103,05,00,00,01*21\n"); //VTG Message abschalten
ser_puts("$PSRF103,00,00,01,01*25\n"); //GGA Message 1s einschalten
Delay1ms(100);
ser_puts("$PSRF103,04,00,01,01*21\n"); //RMC Message 1s einschalten
Delay1ms(100);
ser_puts("$PSRF103,03,00,01,01*26\n"); //GSV Message 1s einschalten
Delay1ms(100);
//#endif
for(;;) // Anfang Programm Endlosschleife
{
do { c=ser_getc(); }while(c!='$'); //Warte auf Anfang einer Message
z.B. "$GPGGA"
GetLine(','); //Hole den Header
if(strcmp(line,"GPGGA")==0) GP_GGA();
if(strcmp(line,"GPRMC")==0) GP_RMC();
if(strcmp(line,"GPGSA")==0) GP_GSA();
if(strcmp(line,"GPGSV")==0) GP_GSV();
if(strcmp(line,"GPVTG")==0) GP_VTG();
} // Ende Programm Endlosschleife
}
void Delay1ms(unsigned int time)
{
unsigned int i;
for(i=0; i<time; i++) Delay100us(10);
}
void Delay100us(unsigned char time) {
unsigned char k,l;
for(k=0; k<time; k++)
{
for(l=0; l<40; l++)
{
//Ein CPU-Clock = 0.125us bei 8MHz
NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP();
NOP();
NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP();
NOP();
}
}
}
}