www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu Interrupt


Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Ich sitze grad an einem Projekt und bekomm beim "builden" im AVR-Studio 
eine Warnung. Ich benutze den AT90CAN32 und will am Eingang ADC0 eine 
Spannung messen. Dann soll er nach jedem Messvorgang den Wert mit einem 
fixen Wert vergleichen und dann die entsprechende Aktion durchführen.
Hier mein Code:
//------------------------------------------------------------------------------
//--- Interrupt routine
//------------------------------------------------------------------------------
ISR (ADC_vect)
  {
  value = ADCL;
  value += (ADCH<<8);
  if (value > MAXVAL)
  MOTOR_Move (STOP);
  return 0;
  }

//------------------------------------------------------------------------------
//--- Initialize inputs and outputs of controller
//------------------------------------------------------------------------------
void ADC_Init (void)
  {
  uint16_t x;
  ADCSRA  |= (1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (1<<ADIE) | (1<<ADPS1) | (1<<ADPS2);
  ADMUX |= (1<<REFS0) | (1<<MUX0);
  while (ADCSRA &(1<<ADSC)){
    ;
    }
  x = ADCL;
  x += (ADCH<<8);

  
  }

In der main-Funktion mache ich dann den Aufruf
 ADC_Init();

Nun bekomme ich folgende Warnungen:

../adc.c:37: warning: return type defaults to 'int'
../adc.c: In function 'ISR':
../adc.c:37: warning: type of '__vector_25' defaults to 'int'

Was bedeutet das?

Danke für Eure Antworten
Gruss
Patrick

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast vermutlich die interrupt.h nicht eingebunden...

Die Warnungen besagen im Prinzip nichts anderes, als dass dem Compiler 
"ISR" unbekannt ist.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick wrote:

> Nun bekomme ich folgende Warnungen:
>
> ../adc.c:37: warning: return type defaults to 'int'
> ../adc.c: In function 'ISR':
> ../adc.c:37: warning: type of '__vector_25' defaults to 'int'
>
> Was bedeutet das?

Das der Compiler nicht erkannt hat, dass
ISR (ADC_vect)
ein Interrupt Handler sein soll.

Hast du avr/interrupt.h inkludiert?
Hast du überprüft, ob der Name ADC_vect richtig ist? Das findest
du am schnellesten raus, indem du in die µC-spezifische ioxxxx.h
schaust. xxxx ist dabei ein Kürzel welches für deinen Prozessor
steht. Diese Datei wird über avr/io.h eingebunden.

Nachtrag: Hab gerade in die iom16.h (io für den Mega16) geschaut.
ADC_vect dürfte stimmen. Also: Hast du avr/interrupt.h eingebunden

#include "avr/io.h"
#include "avr/interrupt.h"

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Danke für die schnellen Antworten. Genau das wars. Muss ich 
übersehen haben.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Name ADC_vect sollte stimmen, den hab ich aus iocanxx.h rausgelesen. 
Komischerweise hat der Vector lau header-file die Nummer 25, aber laut 
Datenblatt müsste es die 26 sein. Im Datenblatt ist die Nummer 1 als 
Reset definiert, der kommt im header-file aber nicht vor. Was ist jetzt 
richtig?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schnellschuss aus der Hüfte.

Dürfte wieder mal das leidige Thema sein:
Normale Menschen beginnen bei 1 zu zählen, C-Programmierer
bei 0.

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.