Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe beim Implementieren von PID-Regler von App AVR221


von Ghodhbani W. (walid)


Lesenswert?

Hallo,

ich versuche gerade den PID -Regler von App Note avr221 in mein Projekt 
hinein zu implementieren.

es hackt gerade bei mir an der stelle:
/*! \brief Timer interrupt to control the sampling interval
 */
#pragma vector = TIMER0_OVF_vect
__interrupt void TIMER0_OVF_ISR( void )
{
  static uint16_t i = 0;
  if(i < TIME_INTERVAL)
    i++;
  else{
    gFlags.pidTimer = TRUE;
    i = 0;
  }
}
 da zeigt AVRStudio folgende Fehlermeldungen:

../main.c:51: warning: ignoring #pragma vector
../main.c:52: error: expected constructor, destructor, or type 
conversion before 'void'

kann mir vielleicht jemand, wie man so ein fehler beheben kann?
Danke schön in Voraus

MfG
Walid

von Oliver J. (skriptkiddy)


Lesenswert?

#pragma vector = TIMER0_OVF_vect

Sieht mir nach IAR-Embedded Workbench für AVR aus. Du nutzt doch sicher 
den AVR-GCC. Da werden die ISR anders deklariert.

Gruß Skriptkiddy

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Die #pragma/__interrupt Kombination ist für den IAR-Compiler 
(EWAVR/ICC). Für avr-gcc/avr-libc ist dies anzupassen, siehe 
http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html .
1
// IAR:
2
#pragma vector = TIMER0_OVF_vect
3
__interrupt void TIMER0_OVF_ISR( void )
4
// GNU:
5
ISR(TIMER0_OVF_vect)
Lektüre des AVR-GCC-Tutorials erscheint angeraten.

von Ghodhbani W. (walid)


Lesenswert?

Hallo,
Ich danke allen für die Hilfreichen Tipps,
Es Funktioniert jetzt :)
Mfg
Walid

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.