Na, einfach in den Konstruktor schreiben! Du hast es doch schon gemacht:
Clemens M. schrieb:
> myTwi(uint8_t twi) :_twi_base_adr(twi) {
> myTwi::InitCode(_twi_base_adr);}
Schreib zwischen die geschweiften Klammern halt alles, was du an
Initialisierung tun möchtest. Wenn es viel Code wird, solltest du den
Konstruktor nur lediglich vom class Body trennen und in eine .cpp Datei
packen, anstelle von direkt in den Class Body in seiner .h Datei - denn
dann ist er automatisch inline und wird u.U. vom Compiler mehrfach ins
Programm übernommen.
1 | class myTwi
|
2 | {
|
3 | public:
|
4 | uint8_t error_status;
|
5 | myTwi(uint8_t twi);
|
6 | // ...
|
7 | };
|
8 |
|
9 | // .cpp Datei:
|
10 |
|
11 | myTwi::myTwi (uint8_t twi) : _twi_base_adr (twi) {
|
12 | // ... Initialisierung ...
|
13 | }
|
Noch ein paar Kleinigkeiten:
Clemens M. schrieb:
> #include <stdint.h>
Das ist der C Header, in C++ heißt der <cstdint> .
Clemens M. schrieb:
> #define TWI0 0xB8
> #define TWI1 0xD8
Makros sind grundsätzlich gefährlich, da sie eine dumme Textersetzung
sind. Im Gegensatz zu C, braucht man sie in C++ seltener. Du kannst und
solltest daher schreiben:
1 | static const uint8_t TWI0 = 0xB8;
|
2 | static const uint8_t TWI1 = 0xD8;
|
So passiert nichts komisches wenn du später versehentlich irgendwo etwas
anderes "TWI0" nennst, oder eine überladene Funktion/Template mit TWI0
als Parameter aufrufst. Aber Achtung, gleich kommen die C-Profis die das
Gegenteil behaupten ;-)
Clemens M. schrieb:
> const uint8_t _twi_base_adr;
Das ist ok so, aber Vorsicht - Namen die mit Unterstrich +
Großbuchstabe, oder zwei Unterstrichen beginnen, sind in C und C++
verboten und der Standard-Library vorenthalten (wie z.B. __twi_base_adr
oder _Twi_base_adr).
Clemens M. schrieb:
> #if defined(_AVR_ATmega168_) || defined(_AVR_ATmega168P_) ||
> defined(_AVR_ATmega328_) || defined(_AVR_ATmega328P_)
Eine Alternative zu so etwas wäre, den Controller-Typ per
template-Parameter an die Klasse zu übergeben. So kannst du im selben
Projekt Code für verschiedene Controller kompilieren. Ist aber zugegeben
u.U. viel komplizierter und eher akademisch...