Arexx RP6 V2 Build your own robot kit RP6 V2 Manual Do Utilizador

Códigos do produto
RP6 V2
Página de 141
RP6 ROBOT SYSTEM -  4. Programmierung des RP6
4.4.4. Variablen
Erstmal fangen wir aber damit an, wie wir denn überhaupt Daten im Arbeitsspeicher 
ablegen und auslesen können. Das geht mit Variablen. Es gibt in C verschiedene Arten 
von   Variablen   -  sog.   Datentypen.  Grundsätzlich   sind   dies   8,   16   oder   32Bit   große, 
ganzzahlige Datentypen, die entweder mit oder ohne Vorzeichen verwendet werden 
können. Wieviel "Bit" eine Variable haben muss, hängt davon ab wie groß die Zahlen 
sind (Wertebereich), die darin gespeichert werden sollen.
Beim RP6 verwenden wir folgende Datentypen:
Typ
Alternative
Wertebereich
Bemerkung
signed char
int8_t
8  Bit: -128 ... +127
1 Byte
char
uint8_t
8  Bit: 0 ... 255
'' vorzeichenlos
int
int16_t
16 Bit: -32768 ... +32767
2 Bytes
unsigned int
uint16_t
16 Bit: 0 ... 65535
'' vorzeichenlos
long
int32_t
32 Bit: –2147483648 ... +2147483647 4 Bytes
unsinged long uint32_t
32 Bit: 0 ... 4294967295
'' vorzeichenlos
Da insbesondere der Datentyp „int“ auf verschiedenen Plattformen nicht standardisiert 
ist und z.B. auf unserem Mikrocontroller 16 bit, auf PCs aber 32 bit groß ist, verwen-
den wir die neuere standardisierte Bezeichnung: int16_t 
Diese Datentypen ist immer so aufgebaut: [u] int N _t
u : unsigned (kein Vorzeichen)
int : Integer (ganze Zahl)
N : Anzahl der Bits, z.B. 8, 16, 32 oder 64
_t : t wie „type“ um Verwechslungen mit anderen Bezeichnern auszuschließen.
Auf einem Mikrocontroller kommt es oft auf jedes Byte Speicherplatz an, daher behält 
man mit dieser Bezeichnung auch besser den Überblick. Man sieht der Bezeichnung 
sofort an, dass es sich um einen 16bit Datentyp handeln muss (wegen der 16 im Na-
men). Steht noch ein „u“ davor, handelt es sich um einen „unsigned“ also vorzeichen-
losen   Datentyp.   Sonst   ist   der   Datentyp   „signed“   also   vorzeichenbehaftet.  
Das  wurde  oben  in   der Tabelle   aber nur  bei  „signed   char“  hinge-
schrieben, denn int und long sind standardmäßig vorzeichenbehaftet 
und nur char ist standardmäßig vorzeichenlos - auch wenn man es 
nicht explizit hinschreibt. Das resultiert aus einer Compileroption die 
wir verwenden und die auch fast immer beim AVR-GCC aktiviert ist. 
Bei Strings (=Engl. für Zeichenketten) wird auch weiterhin „char“ ge-
nutzt da sonst wegen der Definition von uint8_t ein paar Dinge aus 
der C Standard Bibliothek nicht damit kompatibel wären und es oh-
nehin logischer ist, hierfür den Datentyp char (=Engl. für „Zeichen“) 
zu verwenden. Das wird im Kapitel über die RP6Library bei Textaus-
gabe über die serielle Schnittstelle noch etwas genauer behandelt.
Also merken wir uns einfach: Bei Zeichen und Zeichenketten immer 
„char“ verwenden, bei Zahlenwerten immer uintN_t oder intN_t!
- 67 -