Interrupt in Klasse

OP #4687520
Lesenswert?

Hallo liebe Community,


ich habe folgendes Problem:


Ich möchte eine Klasse konstruieren, in welcher eine Methode aufgerufen 
wird, welche einen Timer startet.

Innerhalb der Klasse, soll es dann eine Methode geben, welche beim 
Überlauf ausgeführt wird.

Meine Frage: Wie macht man das am Besten?

C++
OP #4687551
Lesenswert?

Ok, vielen Dank

Noch eine Frage, ich habe eine Klasse, mit Namen Test.

Diese Klasse besitzt keinen Default Konstruktor.

Um ein Objekt dieser Klasse zu erzeugen müssen jeweils zwei Pinnamen 
übergeben werden.

Wenn ich nun ein Objekt der Testklasse in einer anderen Klasse erzeugen 
möchte und dabei die Pinnamen übergeben möchte, wie müsste das aussehen?
Gast #4687558
Lesenswert?

Christian K. schrieb:
> Wenn ich nun ein Objekt der Testklasse in einer anderen Klasse erzeugen
> möchte und dabei die Pinnamen übergeben möchte, wie müsste das aussehen?

einfach mit übergeben

1
//constructor
2
foo::foo( port, pin ) 
3
: bar( port, pin )
4
{
5
}
6

7
//oder mit festen parametern
8

9
//constructor
10
foo::foo() 
11
: bar( PORTA, PIN1 )
12
{
13
}
OP #4687594
Lesenswert?

#include "DMX.h"
#include "mbed.h"

DMX dmx_interface;

int main ( void ) {

                                      //Application Code

    while ( 1 ) {

        dmx_interface.dmx.printf("Test");
    };
};



#ifndef DMX_H_
#define DMX_H_

#include "mbed.h"

class DMX {

    private:

        char dmx_data [ 512 ];

    public:

        DMX ( );
        ~ DMX ( );

        void dmx_interrupt ( void );

        Timer dmx_timer;
        Ticker dmx_ticker;

        Serial dmx ( PinName, PinName );
};

#endif



Frage: Wie weise ich Serial nun die Pins zu? Der Konstruktor benötigt 
zwei Pinnamen...
Gast #4687603
Lesenswert?

[c]
class DMX {
    private:
        char dmx_data [ 512 ];
    public:
        DMX ( );
        ~ DMX ( );

        void dmx_interrupt ( void );
        Timer dmx_timer;
        Ticker dmx_ticker;
        Serial dmx;
};

DMX::DMX()
: Serial( PinName, PinName )
{ };

[c]
OP #4687646
Lesenswert?

#ifndef DMX_H_
#define DMX_H_

#include "mbed.h"

class DMX {

    private:

        char dmx_data [ 512 ];

    public:

        DMX ( );
        ~ DMX ( );

        void dmx_interrupt ( void );

        Timer dmx_timer;
        Ticker dmx_ticker;
        Serial dmx;
};

#endif



#include "DMX.h"
#include "Configuration.h"

DMX :: DMX ( ) : dmx ( PinName, PinName ) { };

DMX :: ~ DMX ( ) { };

void DMX :: dmx_interrupt ( ) {

}

Wie meinst Du das?
Gast #4688190
Lesenswert?

Christian K. schrieb:

> Bin gerade erst dabei es zu lernen... Leider rennt man da oft gegen eine
> Wand...

Ja, klar. Jeder hat mal angefangen und mit Problemen zu kämpfen gehabt.

Aber: nur wenn man selber nachdenkt und selber versucht, die Fehler 
zu beseitigen, kann man Programmieren lernen. Genau genommen besteht 
"Programmieren lernen" sogar genau darin.
#4688330
Lesenswert?

Christian K. schrieb:
> Ok, habe es abgeändert, macht natürlich Sinn.
>
> Nun spuckt er mir allerdings den Fehler aus:

PinName ist offensichtlich ein Typ oder eine Klasse. Du musst an der 
Stelle wo der Compiler meckert aber einen Wert von dieser Klasse als 
Parameter angeben. Vergleich sin(double) versus sin(3.14). Wie ein Wert 
von Typ PinName aussieht, findest du wahrscheinlich irgendwo in der 
Header-Datei "mbed.h".

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren