Eclipse mit AVR-Plugin

OP #971834
Also ich sitze gerade an meinem netten, neuen Eclipse mit dem AVR-Plugin 
und es funktioniert alles nicht genau so wie in AVR-Studio.

Wenn ich schreibe PORTD = 0b00000000;
sagt er dass ein fehlerhaftes decimales Format vorliegt.
PORTD = 0x00; (funktioniert)

Ich dacht ich könnte nun so etwas hier in meine Headerdatei schreiben:
1
#define BIN0000 0
2
#define BIN0001 1
3
#define BIN0010 2
4
#define BIN0011 3
5
#define BIN0100 4
6
#define BIN0101 5
7
#define BIN0110 6
8
#define BIN0111 7
9
#define BIN1000 8
10
#define BIN1001 9
11
#define BIN1010 A
12
#define BIN1011 B
13
#define BIN1100 C
14
#define BIN1101 D
15
#define BIN1110 E
16
#define BIN1111 F

Dann könnte ich 0xBIN0000BIN1111;  schreiben und er macht daraus 0x0F;

Irgendwie funktioniert das aber nicht.

Ich würde es besser finden wenn ich die Pins binäre darstellen könnte.
Gibt es dafür eine gute Lösung?
Persönliche Seite #971867
Ah ich seh' schon. Ja, man müsste dem CDT-Plugin bei der Just-in-Time 
Syntaxüberprüfung noch mitteilen, dass es dieses Prefix gibt.
Wundert mich, dass das noch nicht aufgefallen ist. Ich vermute mal 
Thomas Holland (Der Ersteller von AVR-Eclipse) könnte da was dran 
drehen. Wissen tu ich es aber nicht.

Die Meisten benutzen wahrscheinlich ohnehin für sowas die Hexadezimale 
Variante (beginnend mit 0x), weil die binäre Variante nicht im 
C-Standard enthalten ist und das Verwenden Dieser nicht standardkonform 
ist.
OP #971914
Danke Simon K. !

#define B8(y)  ( 0##y       &   1 \
    | 0##y >>  2 &   2 \
    | 0##y >>  4 &   4 \
    | 0##y >>  6 &   8 \
    | 0##y >>  8 &  16 \
    | 0##y >> 10 &  32 \
    | 0##y >> 12 &  64 \
    | 0##y >> 14 & 128 )

Das war die Lösung :)

Weshalb funktionier es mit meinen #define nicht?
#971975
Simon K. wrote:
> Ich hab's mal als Feature Request bei AVR-Eclipse eingereicht:
> 
https://sourceforge.net/tracker/index.php?func=detail&aid=2085485&group_id=189165&atid=928234
>
> Ich glaube aber, dass man das bei den Entwicklern vom CDT Plugin
> einreichen müsste um daran was zu ändern.

Ich habe es mal in der eclipse.tools.cdt newsgroup plaziert. Mal schauen 
ob es da irgendeine Antwort drauf gibt.

http://www.eclipse.org/newsportal/article.php?id=17092&group=eclipse.tools.cdt#17092
Persönliche Seite #971987
Thomas Holland wrote:
> Simon K. wrote:
>> Ich hab's mal als Feature Request bei AVR-Eclipse eingereicht:
>>
> 
https://sourceforge.net/tracker/index.php?func=detail&aid=2085485&group_id=189165&atid=928234
>>
>> Ich glaube aber, dass man das bei den Entwicklern vom CDT Plugin
>> einreichen müsste um daran was zu ändern.
>
> Ich habe es mal in der eclipse.tools.cdt newsgroup plaziert. Mal schauen
> ob es da irgendeine Antwort drauf gibt.
>
> 
http://www.eclipse.org/newsportal/article.php?id=17092&group=eclipse.tools.cdt#17092

Super! :-)
OP #981520
Es gab eine Antwort von Chris Recoskie
> File a bug... the GNU parser in CDT should be enhanced to handle this.

Heißt dies dass man etwas machen kann?

Ich würde gern mal wissen ob das nur mir so geht oder ob andere auch 
diesen Fehler haben.

Vielleicht geht das ja nur bei mir nicht.
#981621
Nein, das Problem haben alle, da CDT "0b" Binärzahlen noch nicht kennt.

Ich werde in den nächsten Tagen mal einen Bug Report für CDT schreiben. 
Im Moment wühle ich mich noch durch den CDT Sourcecode um zu dem 
Bug-Report auch gleich einen Patch zu liefern (habe aber bisher noch 
nicht die Stelle gefunden wo der Parser den C Sourcecode analysiert. Die 
Innereien von CDT sind ziemlich verworren und fast vollständig 
Kommentarfrei).

AFAIK kennt GCC "0b" binärzahlen offiziell erst seit Version 4.3, und 
die ist erst im März erschienen (war im avr-gcc wohl schon etwas länger 
drin). Zu der Zeit war CDT aber schon kurz vor dem Ganymede Release und 
es ist m.E. durchaus verständlich, dass CDT dieses eher unscheinbare und 
nicht C Standard konforme Feature von GCC noch nicht kennt.

Auch mit einem Bug Report würde ich keine allzu schnelle Bearbeitung 
erwarten. Bei der großen Anzahl von offenen Bug Reports für CDT ist das 
sicherlich eher ein low priority item.

Ich sehe es auch eher als kosmetisches Problem. Programme mit "0b" 
lassen sich problemlos kompilieren und die Warnung wird nur im Editor 
angezeigt und taucht nicht in der "Problems" Liste auf.

brgds,

Thomas
#1008077
so, mein Patch für CDT ist auf Anhieb akzeptiert worden und ab CDT 5.0.2 
wird Eclipse/CDT auch Binär-Konstanten richtig erkennen.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=249698

Bis zum Release von 5.0.2 kann es aber noch dauern, da 5.0.1 gerade erst 
herausgekommen ist und der nächste Release erst in ca. 3 Monaten ansteht 
(vierteljährlicher Ganymede Release Schedule).

Ein klein wenig müsst ihr euch also noch mit dem bit-frickeln gedulden 
:-)
Sofern noch nicht geschehen könnt ihr ja die Zeit nutzen schon mal auf 
Eclipse 3.4 (Ganymede) upzudaten, denn CDT 5.0.2 gibt es nur mit 
selbigem.

Thomas
OP #1020702
@ Thomas Holland
Vielen Dank für die Mühe!

Irgendwie finde ich keine "CDT 5.0.2" :( nicht mal wann es 
vorraussichtlich veröffentlicht wird.

Hab jetzt Eclipse 3.4.1 (Ganymede) mit CDTool 5.0.1 :)

> ... nächste Release erst in ca. 3 Monaten ansteht ...
Dann wird das CDT 5.0.2 das Weihnachtsgeschenk vom Thomas.
#1022506
Da CDT ein Ganymede Projekt ist, wird es, wie für alle anderen Ganymede 
Projekte auch, ein synchrones Update geben. Ich hatte mal was von 
ungefähr vierteljährlichen Updates gelesen, aber so wie es aussieht wird 
es nicht mit dem Weihnachtsgeschenk - 
http://wiki.eclipse.org/Ganymede#Coordinated_Service_Releases

5.0.2 kommt also erst Ende Februar 2009 als Teil des zweiten Ganymede 
Service Release (SR2).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.