Go Down

Topic: #if defined und Interrupt Vector wollen nicht (Read 1 time) previous topic - next topic

Doc_Arduino

Hallo,

ich möchte je nach µC die passenden Register, Bits und Interrupt Vectoren verwenden.
Nur bekomme ich das nicht kompiliert.
Mit den Fehlermeldungen weiß ich nichts so recht anzufangen was wirklich gemeint ist.
Irgendwie kommt er mit der volatilen Variablen oder den ISR Vectoren nicht klar.
Wo liegt mein Fehler?

Code: [Select]
/*
 * Doc_Arduino - german Arduino Forum
 * IDE 1.6.12
 * Arduino Mega2560
 * 14.10.2016
 */

#include <util/atomic.h>    // für cli() und sei() mit SREG Sicherung

volatile unsigned long micros_time;

#if defined(__AVR_ATmega2560__)
  EIMSK = (1<<INT5) | (1<<INT4);
  EICRB = (1<<ISC51) | (1<<ISC41) | (1<<ISC40);

  ISR(INT4_vec)
  {
    micros_time = micros();
  }
 
  ISR(INT5_vec)
  {
    micros_time = micros();
  }
#endif


#if defined(__AVR_ATmega328P__)
  EIMSK = (1<<INT1) | (1<<INT0);
  EICRA = (1<<ISC11) | (1<<ISC01) | (1<<ISC00);
 
  ISR(INT0_vec)
  {
    micros_time = micros();
  }

  ISR(INT1_vec)
  {
    micros_time = micros();
  }
#endif

const byte PIN_IN_RISI = 2;     
const byte PIN_IN_FALL = 3;     


void setup() {

  pinMode (PIN_IN_RISI, INPUT_PULLUP);
  pinMode (PIN_IN_FALL, INPUT_PULLUP);
}


void loop() {

     
}  // end of loop




Quote
Arduino: 1.6.12 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\Datalogger_002.ino.cpp:1:

Datalogger_002:13: error: expected unqualified-id before 'volatile'

   EIMSK = (1<<INT5) | (1<<INT4);

   ^

Datalogger_002:13: error: expected ')' before 'volatile'

Datalogger_002:13: error: expected ')' before 'volatile'

Datalogger_002:14: error: expected unqualified-id before 'volatile'

   EICRB = (1<<ISC51) | (1<<ISC41) | (1<<ISC40);

   ^

Datalogger_002:14: error: expected ')' before 'volatile'

Datalogger_002:14: error: expected ')' before 'volatile'

In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:30:0,

                 from sketch\Datalogger_002.ino.cpp:1:

C:\Users\Worker\AppData\Local\Temp\arduino_modified_sketch_310567\Datalogger_002.ino: In function 'void INT4_vec()':

C:\Users\Worker\AppData\Local\Temp\arduino_modified_sketch_310567\Datalogger_002.ino:16:7: warning: 'INT4_vec' appears to be a misspelled signal handler, missing __vector prefix [-Wmisspelled-isr]

   ISR(INT4_vec)

       ^

C:\Users\Worker\AppData\Local\Temp\arduino_modified_sketch_310567\Datalogger_002.ino: In function 'void INT5_vec()':

C:\Users\Worker\AppData\Local\Temp\arduino_modified_sketch_310567\Datalogger_002.ino:21:7: warning: 'INT5_vec' appears to be a misspelled signal handler, missing __vector prefix [-Wmisspelled-isr]

   ISR(INT5_vec)

       ^

exit status 1
expected unqualified-id before 'volatile'
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Whandall

Warum glaubst du als einziger Zuweisungen ausserhalb von Funktionen schreiben zu dürfen?

Code: [Select]
  EIMSK = (1<<INT5) | (1<<INT4);
  EICRB = (1<<ISC51) | (1<<ISC41) | (1<<ISC40);
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

Doc_Arduino

Hallo,

ich gehe gern neue Wege.  :)
Ne, jetzt wo du es sagst, sehe ich das auch. War mir nicht aufgefallen das es außerhalb steht.
Danke.

Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Whandall

Compiler sind eher old-fashioned und werden von neuen Wegen verwirrt.  ;)
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

Doc_Arduino

Hallo,

das die sich selbst einfach nicht anpassen können. Der DAU davor muß es doch auch. ;)
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Go Up