www.mikrocontroller.net

Forum: Compiler & IDEs Fehlermeldung in delay_basic.h


Autor: lui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin zusammen,

Ich habe ein Problem und zwar spuckt mir neuerdings der Compiler 3 
meldungen raus die aus der delay_basic.h kommen aber ich hab keine 
ahnung warum die erzeugt werden. hier die genauen fehler meldungen

e:/programme/winavr/bin/../avr/include/util/delay_basic.h:65: error: 
storage class specified for parameter '_delay_loop_1'
e:/programme/winavr/bin/../avr/include/util/delay_basic.h:66: error: 
storage class specified for parameter '_delay_loop_2'
e:/programme/winavr/bin/../avr/include/util/delay_basic.h:82: error: 
expected ';', ',' or ')' before '{' token

und hier der abschnitt aus der basic.h wo diese "erzeugt" werden.
#if !defined(__DOXYGEN__)
static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
#endif

/** \ingroup util_delay_basic

    Delay loop using an 8-bit counter \c __count, so up to 256
    iterations are possible.  (The value 256 would have to be passed
    as 0.)  The loop executes three CPU cycles per iteration, not
    including the overhead the compiler needs to setup the counter
    register.

    Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
    can be achieved.
*/
void
_delay_loop_1(uint8_t __count)
{
  __asm__ volatile (
    "1: dec %0" "\n\t"
    "brne 1b"
    : "=r" (__count)
    : "0" (__count)
  );
}

was läuft da falsch ? weiss das jmd eventuell ?

Autor: lui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende in meinem Programm aber nur die funktion _delay_ms(200)

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du bei dir im Programm irgendwelche dubiosen #defines oder 
typedefs, die "uint8_t" verändern?

Versuch mal ein Mini-Programm, das nur aus main mit einem _delay_ms 
besteht, und schau ob das compiliert.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vermute den Fehler irgendwo in der Datei, die den Delay-Header 
einbindet.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast in der Datei die delay.h includet oder in einer anderen
Header-Datei, die vor dem delay.h includet wird, vergessen, eine runde
Klammer zu schließen.

Autor: lui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein einfaches Programm alá

#include <util/delay.h>

int main(void)
{
     
  _delay_ms(200);

}


funktioniert.

Also an Code verwende ich hier aus dem tutorial die LCD steuerung und 
dort wird sowas hier verwendet aber das hat sonst auch eigentlich 
funktioniert.
ich bekomm das programm auch irgenwie nicht mehr in den ursprungs 
zustand.
das sind insgesamt 4 kleine dateien soll ich die auch ma posten ? weil 
aus den codschnippseln wird bestimmt keiner schlau oder ?
// setzt den Cursor in Zeile y (1..4) Spalte x (0..20)
 
void set_cursor(uint8_t x, uint8_t y)
{
  uint8_t tmp;
 
  switch (y) {
    case 1: tmp=0x80+0x00+x; break;    // 1. Zeile
    case 2: tmp=0x80+0x40+x; break;    // 2. Zeile
    case 3: tmp=0x80+0x14+x; break;    // 3. Zeile
    case 4: tmp=0x80+0x54+x; break;    // 4. Zeile
  }
  lcd_command(tmp);
}

Autor: lui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhm eine klammer vergessen :D ok bin mal auf der suche

Autor: lui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ja gefunden.


Arg.

sagt diese fehlermeldung aus das irgenwo was fehlt ? oder ?

e:/programme/winavr/bin/../avr/include/util/delay_basic.h:82: error:
expected ';', ',' or ')' before '{' token

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses Fehlermeldungs-Kauderwelsch kann man vermutlich nur dann
wirklich interpretieren, wenn man sich den Code nach dem Präprozessor
ansieht, also so, wie der Compiler ihn dann wirklich zu sehen
bekommt.

Dummerweise ist die Syntax von C zuweilen so verkorkst (durch
Mehrdeutigkeiten), dass man als Compiler kaum eine bessere Fehlermeldung
generieren kann, da die Zahl der Möglichkeiten, was die Ursache war,
teilweise recht groß ist.

Du hättest aber auch deinen tatsächlichen Code hier posten können,
glaub' mir, manch erfahrener C-Programmierer hier hätte das fehlende
Semikolon oder die fehlende Klammer schon noch vor dir entdeckt...  Du
kannst prinzipiell erstmal davon ausgehen, dass die Headerdateien als
solche in sich korrekt sind und nicht grundsätzlich bei jedem
derartige Fehlermeldungen generieren.

Autor: lui (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Jo das der fehler nicht an der Header Datei liegt hab ich mir schon 
gedacht. Aber grade deswegen war ich verwundert warum die Header Datei 
als fehler quelle angegeben worden ist.


Und den C-Text hier zu posten das wollte ich euch eigentlich nicht über 
euch ergehen lassen in einem c Text von mir zu lesen. Ich programmier c 
eigentlich erst seit 1ner woche oder so :o)

Aber ich poste mal alles dann kannste ja mal gucken ;).


ich find es immer spannend in "fremden" c code zu schnüffeln und zu 
gucken wie so manch einer die sachen realisiert hat.

Autor: lui (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das ist auch noch von mir

Autor: lui (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
die hab ich etwas verändert

Autor: lui (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und die ist aus dem tutorial.


Wie kann man eigentlich mehrer dateien in eine antwort packen ?

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in dem man es verzipt (*.zip) oder verrart (*.rar)

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir erscheinen keine Fehler, nur ein paar Warnungen wegen
fehlender Funktionsprototypen.

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>in dem man es verzipt (*.zip) oder verrart (*.rar)
Wenn, dann zip - rar wird nicht gerne gesehen. Solange es nicht zu viel 
wird ist es auch kein Problem mehrere Beiträge zu verfassen.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lui wrote:

[lcd-routines.h]

> die hab ich etwas verändert

Und seither funktioniert es?

In dieser hätte ich den Fehler gesucht, da sie unmittelbar vor
<avr/delay_basic.h> eingebunden wird.  Damit kann man sich einen
Fehler aus dieser Datei heraus in die nächste ,,verschleppen''.

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.