Hallo Gemeinde,
ich habe folgendes Problem:
Ich möchte die Register des AT-Mega 644PU variabel mit einer Funktion
beschreiben können. Der Hintergrund ist der, dass durch aufrufen der
Funktion "gleichzeitig" ein anderes Register geupdatet werden soll.
Beispiel:
1 | uint8_t MeinArray[255];
|
2 | #define maPINA MeinArray[0x13]
|
3 | //#define maSome MeinArray[0-FF] ; Gibt halt mehrere defines
|
4 |
|
5 | void update_reg(uint8_t AVRREG, uint8_t update)
|
6 | {
|
7 | AVRREG = update;
|
8 | maSome = update;
|
9 | }
|
10 |
|
11 | //Späterer Aufruf
|
12 | update_reg(PINA,0xFF);
|
13 |
|
14 | //Dann soll in MeinArray[0x13] bzw. maPINA 0xFF stehen
|
Meine Idee war zunächst das über Zeiger zu realisieren aber so richtig
weiß ich nicht wie ... Die wohl etwas unschönere Variante wäre mit
Switch-case und das Register als String zu übergeben.
Hat jemand sowas schon mal gemacht und kann mir helfen?
Mit freundlichem Gruß
Philipp Heise