attacheInterrupt gebruiken in een Class
4 berichten
• Pagina 1 van 1
- astrofrostbyte
- Berichten: 229
- Geregistreerd: 20 Jan 2013, 12:01
attacheInterrupt gebruiken in een Class
Zit ff te oefenen met classes :
Probleem waar ik tegen loop is het gebruik van een interrupt routine in een Class, zie onderstaande voorbeeld :
Een truuk die ik nu gebruik is om het buiten de class te doen
nog steeds geen syntax highlighting....
Probleem waar ik tegen loop is het gebruik van een interrupt routine in een Class, zie onderstaande voorbeeld :
- Code: Alles selecteren
class PulsSensor
{ public:
PulsSensor(int );
unsigned long get();
void set(unsigned long);
private:
void pulse();
unsigned long _ml;
};
PulsSensor::PulsSensor(int pin)
{ attachInterrupt( pin, pulse, RISING); // <-------- hier zit m'n probleem
}
void PulsSensor::pulse() // interrupt handler
{ if ( _ml ) _ml--; // countdown to zero
}
unsigned long PulsSensor::get()
{ return _ml;
}
void PulsSensor::set(unsigned long in)
{ _ml = in;
}
void setup() { }
void loop() { }
Een truuk die ik nu gebruik is om het buiten de class te doen
- Code: Alles selecteren
PulseSensor PulseIn(2);
PulseSensor PulseOut(3);
// map interrupt service routines
void isr_pulsein(){ PulseIn.pulse(); }
void isr_pulseout(){ PulseOut.pulse(); }
void setup()
{ attachInterrupt(0,isr_pulsein,RISING);
attachInterrupt(1,isr_pulseout,RISING);
}
nog steeds geen syntax highlighting....
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate
Advertisement
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: attacheInterrupt gebruiken in een Class
wat zegt de compiler?
probleem is al eerder voorgekomen : http://forum.arduino.cc/index.php/topic,41713.0.html
probleem is al eerder voorgekomen : http://forum.arduino.cc/index.php/topic,41713.0.html
- astrofrostbyte
- Berichten: 229
- Geregistreerd: 20 Jan 2013, 12:01
Re: attacheInterrupt gebruiken in een Class
thanks Nico,
De compiler error :
sketch_jun15a.ino: In constructor 'PulsSensor::PulsSensor(int)':
sketch_jun15a:12: error: argument of type 'void (PulsSensor::)()' does not match 'void (*)()'
regel 12 is de regel : attachInterrupt( pin, pulse, RISING);
De link die je geeft is al vrij oud en ik hoopte eigenlijk dat er mischien al een andere 'oplossing' was gevonden.
Ik denk dat ik de interrupt gewoon buiten de class laat , het is op deze manier duidelijk voor iedereen , ipv. van een complexe 'truuk' die bijna niemand kan lezen.
De compiler error :
sketch_jun15a.ino: In constructor 'PulsSensor::PulsSensor(int)':
sketch_jun15a:12: error: argument of type 'void (PulsSensor::)()' does not match 'void (*)()'
regel 12 is de regel : attachInterrupt( pin, pulse, RISING);
De link die je geeft is al vrij oud en ik hoopte eigenlijk dat er mischien al een andere 'oplossing' was gevonden.
Ik denk dat ik de interrupt gewoon buiten de class laat , het is op deze manier duidelijk voor iedereen , ipv. van een complexe 'truuk' die bijna niemand kan lezen.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: attacheInterrupt gebruiken in een Class
Ik snap dat het zo zonder meer niet kan. En dat zit hem in de implicite referentie naar this (oftewel dit object). En een ISR mag een parameter hebben dacht ik.
4 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 32 gasten