Ceos
11.08.2009, 12:44
in einem anderen topic bin ich grad auf eine ganz bekloppte idee gekommen, nämlich die peripherie des µC in bibliotheken zu fassen und als structs zu schreiben
struct {
word Port = 0;
byte TxPin = 0;
byte RxPin = 0;
...
unsigned int BaudRate = 0;
void init(word DPort, byte DTxPin, byte DRxPin)
{
...
}
void setBauRate(unsigned int BR)
{
...
}
} UART;
die ISR wollte ich auch standartisieren und die daten in einen buffer leiten der auch über das struct erreichbar ist
um aber die ISR nicht ganz unnahbar zu fassen wollt ich nen RPC einbauen, quasi eine methode an das struct übergeben, die aufgerufen wird, wenn z.B. die ISR behandelt wird
so ungefähr wie die eventbehandlung unter cpp
...
tempbyte = readbyte();
doByteReceived(tempbyte);
...
void doByteReceived(byte data)
{
if ("function-pointer" != null) "function-pointer"(data);
}
leider finde ich im moment nur begrenzt informationen wie ich das mittels winavr bewerkstelligen kann, hab bisher gerne die makros verwendet die mir von der entwicklungsumgebung gestellt wurden um sowas zu machen ^^
struct {
word Port = 0;
byte TxPin = 0;
byte RxPin = 0;
...
unsigned int BaudRate = 0;
void init(word DPort, byte DTxPin, byte DRxPin)
{
...
}
void setBauRate(unsigned int BR)
{
...
}
} UART;
die ISR wollte ich auch standartisieren und die daten in einen buffer leiten der auch über das struct erreichbar ist
um aber die ISR nicht ganz unnahbar zu fassen wollt ich nen RPC einbauen, quasi eine methode an das struct übergeben, die aufgerufen wird, wenn z.B. die ISR behandelt wird
so ungefähr wie die eventbehandlung unter cpp
...
tempbyte = readbyte();
doByteReceived(tempbyte);
...
void doByteReceived(byte data)
{
if ("function-pointer" != null) "function-pointer"(data);
}
leider finde ich im moment nur begrenzt informationen wie ich das mittels winavr bewerkstelligen kann, hab bisher gerne die makros verwendet die mir von der entwicklungsumgebung gestellt wurden um sowas zu machen ^^