mikrocontroller.net

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


Autor: Thomas S. (lenoxef)
Datum:

Bewertung
0 lesenswert
nicht 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??

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#pragma vector=USART_RX_vect
__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.

Autor: Markus L. (lucky79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sollte dass
#pragma vector=USART_RX_vect
__interrupt void rx_buffer_full(void)

nicht eher
ISR (USART_EXC_vect)

heißen?

Hruß,
Markus

Autor: Thomas S. (lenoxef)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus t. Firefly wrote:
>
> #pragma vector=USART_RX_vect
> __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.

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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.