Hi,
//global
uint8_t portB;
//...
uint8_t *pPortB = a();
*pPortB = wert;
printf("%d\n",portb); //Ausgabe: wert
printf("%d\n",PORTB); //Ausgabe: wert
//...
das erste printf liefert ein anderes Ergebnis als das zweite.
Ich habe Funktionen, die mit einem Pin am Mikrocontroller arbeiten, z. B. setze diesen als aktivierten Ausgang. Damit eine Funktion diese Aufgabe erfüllen kann müssen ihr zwei Register (DDRB, DDRC oder DDRD und PORTB, PORTC oder PORTD) übergeben werden und die Nummer des Pins, für den diese Änderung angewendet wird (PB15 ist z. B. Pin Nr. 1 an Port B). Insgesamt gibt es 23 Aus- bzw. Eingänge die jeweils PORTB, PORTC oder PORTD zugeordnet sind. Ein Port hat 7 bis 8 Pins. Das übergeben dieser Register sieht dann z. B. so aus: io\_set(&PORTB, &DDRB, 1); - äußerst unpraktisch, da sich nicht automatisch alle Pins in einer Scheife durchgehen lassen (bzw. wenn dann ginge es theoretisch nur innerhalb eines Ports, nicht für alle 23 Pins), ich nicht in EINER Konstante die Pinnummer festlegen kann, ich bei einer Pinänderung 3 Variablen ändern muss usw. Deshalb hätte ich gerne, dass ich die Funktion so aufrufe: io\_set(15); io\_set soll dann io\_info aufrufen und sich von io\_info die zu Pin 15 zugehörigen Register abholen. Das würde das Hauptprogramm ungemein übersichtlicher machen.
Schöne Grüße
Julian
--
<http://lighttraffic.de> | <http://derjulian.net>