Hallo UlliC
Da hast Du recht.
DDRD|=(1<<PD5)|(1<<PD4);
ist gleich wie
DDRD|=0x30;
in die 'included' Datei avr/io.h wird Datei iom8.h angerufen und darin steht zum Beispiel:ich gehe mal davon aus, daß PD5 = 5 ist etc.
#define PD5 5
io.h und iom8.h sind die Dateien:
C:\WinAVR\Avr\include\avr\io.h
C:\WinAVR\Avr\include\avr\iom8.h
Dass ganze Program kann mann auch so schreiben:
DDRB = 0x33;
PORTB = 0x20;
DDRD = 0x30;
PORTD = 0x20;
TCCR1A = 0xF1;
TCCR1B = 0x0D;
OCR1A = 0xA0;
OCR1B = 0xA0;
Aber hier werden alle 8 bits pro byte geschrieben.
Da sollte mann sich genau bedenken wie die ubrige bits (die nicht fur
die Motorsteurung benotigt sind) zu schalten sind so dass keine unerwunsten effekte auftreten.
Dass Vorteil ist dass mann nur die bits zur sache andert und die ubrige bits nicht andert.Wo ist der Vorteil bei der Bitschieberei ?
Die schreibeweise (1<<PD5) wird in Atmega datasheets genutzt und die Asuro entwickler haben dass so ubernommen.
Deshalb hab ich dass beispiel auch so geschrieben und alles etwas ausfuhrig notiert, nur zum besseren verstandnis.
Persohnlich finde ich die schreibweise (1<<PD5) ein bischen unschon und unubersichtlich, wenn mann ein bichen die bits kent ist DDRD|=0x20 besser zu lesen als DDRD|=(1<<PD5), aber vielleicht ist dass gesmacksache und sollte mann sich daran gewohnen.
gruss
Henk
Lesezeichen