hallo!
Ich habe ein kleines Problem damit, den Pin eines Portes in eine
Struktur zu übernehmen.
Aufhänger ist es, Leds, Weichen, o.ä als Array einer Struktur zu
schreiben. Größe soll beliebig sein. Sprich ich initialisiere x-mal eine
Struktur mit entsprechendem Zeitverhalten und zugehörigem Port/Pin,
ändere einen define NUMBER und die isr verarbeitet alle vorhandenen
Einheiten. Frage ist : welchen Typ hat ein Port wenn ich quasi die
Adresse direkt verwende?
also konkreter:
1 | typedef struct TSignale
|
2 | {
|
3 | char counter; //dec in isr. Toggeln wenn Null
|
4 | char defaultCounter; //Nach Togglen initialisieren
|
5 |
|
6 | portTyp port;
|
7 | pinTyp pin; //??HIER DAS PROBLEM, SOLL DIRKET DER PORT/PIN STEHEN
|
8 | //wie macht man das?
|
9 |
|
10 |
|
11 | }TSignale;
|
12 |
|
13 |
|
14 | TSignale Signal[NUMBER];
|
15 | (...)
|
16 |
|
17 | ISR(TIMER2_COMP_vect)
|
18 | {
|
19 | int n=0;
|
20 |
|
21 | for(; n<NUMBER; n++)
|
22 | {
|
23 | if(!Signal[n].counter--)
|
24 | {
|
25 | Signal[n].pin ^= Signal[n].pin;
|
26 | Signal[n].counter = Signal[n].defaultCounter;
|
27 | }
|
28 | }
|
29 | }
|
Ich hoffe ich könnte mein Problem ausreichend erklären. Oder wie mache
ich das besser ganz anders?