PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : asuro.c vertehen - Motorrichtung



bergowitch
18.09.2005, 15:02
Hallo,
da ich bemüht bin C zu lernen versuche ich gerde die ASURO -Dateien zu verstehen.
Es geht mir um die Bestimmung der Richtung - genauer um diese Zeile aus der asuro.c:
PORTD = (PORTD &~ ((1 << PD4) | (1 << PD5))) | left_dir;
mir hat schon jemand erklärt (im C-Fourm), dass aus den Klammern folgendes wird: PORTD AND 1100 1111
Dies ist also der Wert des PORTD - Bytes und die beiden Bits werden 0.
Gut nun fehlt noch: | left_dir also OR left_dir
Die Werte für left_dir sind in der asuro.h definiert:


#define FWD (1 << PB5) /* (1 << PD5) */
#define RWD (1 << PB4) /* (1 << PD4) */
#define BREAK 0x00
#define FREE (1 << PB4) | (1 << PB5) /* (1 << PD4) | (1 << PD5)*/

Also ist FWD 0010 0000 dies mit OR PORTD verknüpft ergibt also:
xx10 xxxx wobei x die alten Werte von PORTD bedeutet.
Richtig?
Habe ich jetzt die Bitmanipulation verstanden - ganz schön mühselig ...
Gruß
Stefan

bergowitch
18.09.2005, 15:40
ps: BREAK und FREE sollten mit dem RN-Control nicht verwendet werden?

Dino Dieter
18.09.2005, 17:08
Hallo


Also ist FWD 0010 0000 dies mit OR PORTD verknüpft ergibt also:
xx10 xxxx wobei x die alten Werte von PORTD bedeutet.


Jo, so stimmt es.

MFG
Dieter

bergowitch
18.09.2005, 19:13
Hallo Dino,
nochmals vielen Dank für Deine Bemühungen
Gruß
Stefan