Interrupt in Klasse

OP #4687520
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
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
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
#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
[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
#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
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.
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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.