Hi. Ich versuche gerade das Beispiel aus dem GCC Tutorial in C zu programmieren. Jedoch kriege ich dauernd diese Fehlermeldung : "6: error: parse error before numeric constant" Ich habe schon viel ausprobiert nur ich krieg den Fehler einfach nicht weg. Ich benütze den ATMega16 dazu. Noch eine frage, wie kann ich dann (falls es klappen sollte) aus dem 10 bit werd der ja in 2 Bytes verpackt ist, eine ganze zahl also eine gesamte Variable bilden?
Gast
#284554
Schau mal, ob Du nicht ein Semikolon irgendwo vergessen hast. Zur Frage: Mit uint16_t wird eine Variable definiert, die 16 bit (= 2 Byte) groß ist. Man muß dann nicht mehr zwischen Low- und High-Byte unterscheiden.
Ach ich trottel hab den Code vergessen sorry. Im Moment lese ich nur die ersten 8bit aus. Ich muss beim Mega16 die 10Bits aus 2 Registern auslesen. Wenn ich das beim Auslesen wie im Tutorial abtippe, dann gibt es dort auch schon einen Fehler deswegen lasse ich im Moment nur 8bit auslesen.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
Da ist tatsaechlich ein Fehler im Tutorial
#define mux (1<<MUX2)
uint16_t rachannel (unsigned byte mux)
{
das kann nicht gut gehen.
#define macht textuelle Ersetzung. dh. aus
uint16_t rachannel (unsigned byte mux)
wird
uint16_t rachannel (unsigned byte 1<<MUX2)
und das ist keine gueltige C Syntax.
2 Moeglichkeiten:
* lass den #define weg. Dann muss beim Aufruf der Funktion
das Kanal angageben werden.
* definiere die Funktion so
uint16_t rachannel ()
dann kannst Du beim Aufruf zwar nicht mehr den Kanal angeben,
aber das Compiliert zumindest
Und ganz wichtig:
C lernen !
Gast
#284557
Tutorial -hoffentlich- korrigiert. Wo "byte" definiert wird, sehe ich allerdings im oben gezeigten Code nicht. Ebenfalls moegliche Fehlerquelle. Martin Thomas
Jo ich bin ja gerade fleissig dabei mim C lernen. Also ich habe deinen fehler jetzt korrigiert und der Compiler gibt keinen Fehler mehr raus. Nur mein MEGA16 lässt sich nicht mehr beschreiben. Immer wenn ich ihn z. B. nur "erasen" will krieg ich ne fehlermeldung. Ich habe keine Ahnung warum. Vorgestern konnte ich ihn noch beschreiben. Deswegen kann ich es leider nich testen. Was ist eigentlich der Analog Comparator z.B. im 8151? Macht der auch so etwas oder was macht der genau?
Gast
#284559
Guten Tag, eine Frage an Markus, bist Du zufällig Wien? Falls ja, habe ich Dir im August zwei Pakete gesandt. Ich habe massiven Äger mit der Post. Wäre nett, wenn Du Dich melden könntest. Danke, Frank
Hallo Frank. Ne Sorry ich wohne hier in München.
Gast
#284561
Danke :)