Forum: PC-Programmierung Fehlermeldung in C Programm auf AVR Studio


von Thomas S. (lenoxef)


Lesenswert?

hier mal der Teil des Quellcodes der den Fehler verursacht:

#pragma vector=USART_RX_vect
__interrupt void rx_buffer_full(void) // <-- diese Zeile verursacht den 
Fehler !!!
{
  unsigned char ucValue;
  static unsigned char ucRXPrompt = 0;
                        // yes -> reset transmission
    ucValue = UDR2;              // read character from RX-buffer
    if(ucRXI == WAIT_STATE)          // last instruction evaluated?
    {
        if( ucValue == 0x3e )  // Prompt (>) detected
        {
          ucRXPrompt = 1;                            // set flag, that 
prompt was received
        }
        if( (ucValue == 0x0d) && (ucRXPrompt == 1) )  // Carriage Return 
detected
        {
          ucRXI = PROMPT_DETECTED;            // set flag, that answer 
was received completely
          ucRXPrompt = 0;
          ucSioPointer = 0;
        }
        else if(ucValue == 0x0d)
        {
        PORTH ^= (1<<PB5);
          if( (ucSioBuffer[ucSioPointer-2] == 'B') && ( 
ucSioBuffer[ucSioPointer-1] == 'C') )
          {
            PORTH ^= (1<<PB5);
            ucRXI = BAD_COMMAND;
          }
          else if( (ucSioBuffer[ucSioPointer-2] == 'C') && ( 
ucSioBuffer[ucSioPointer-1] == 'F') )
          {
            PORTH ^= (1<<PB5);
            ucRXI = COMMAND_FAILURE;
          }
          else if( (ucSioBuffer[ucSioPointer-2] == 'N') && ( 
ucSioBuffer[ucSioPointer-1] == 'D') )
          {
            PORTH ^= (1<<PB5);
            mode = 3;
            ucRXI = NO_DISK;
            PORTH ^= (1<<PB5);
          }
          ucSioPointer = 0;
        }
        else
        {
          if(ucSioPointer < SIO_BUFFER_SIZE)      // buffer full?
            ucSioBuffer[ucSioPointer++] = ucValue;// no->save character
          else                                    // yes -> buffer 
overflow (error)
          {
            ucRXI = WAIT_STATE;
            ucRXPrompt = 0;
            ucSioPointer = 0;
          }
        }
    }
}



Die Fehlermeldung ist wie folgt:

../uart.c:76: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'void'



??? Was will er mir damit bloß sagen??

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

1
#pragma vector=USART_RX_vect
2
__interrupt void rx_buffer_full(void)

Bist Du Dir sicher, daß das die von Deinem Compiler verstandene Art der 
Deklaration/Definition eines Interrupthandlers ist? Mir riecht das arg 
nach IAR-Syntax.

von Markus L. (lucky79)


Lesenswert?

sollte dass
1
#pragma vector=USART_RX_vect
2
__interrupt void rx_buffer_full(void)

nicht eher
1
ISR (USART_EXC_vect)

heißen?

Hruß,
Markus

von Thomas S. (lenoxef)


Lesenswert?

Rufus t. Firefly wrote:
>
1
> #pragma vector=USART_RX_vect
2
> __interrupt void rx_buffer_full(void)
3
>
>
> Bist Du Dir sicher, daß das die von Deinem Compiler verstandene Art der
> Deklaration/Definition eines Interrupthandlers ist? Mir riecht das arg
> nach IAR-Syntax.

Nein, bin ich nicht. Du hast recht, das Prog wurde in IAR-Syntax 
geschrieben. Ich hab da echt fast keine Erfahrung mit und dachte ich 
bekomms unter AVR Studio zum laufen...aber...falsch gedacht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.