mikrocontroller.net

Forum: Compiler & IDEs Eclipse mit AVR-Plugin


Autor: Peter Bandhauer (basejump)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
#define BIN0000 0
#define BIN0001 1
#define BIN0010 2
#define BIN0011 3
#define BIN0100 4
#define BIN0101 5
#define BIN0110 6
#define BIN0111 7
#define BIN1000 8
#define BIN1001 9
#define BIN1010 A
#define BIN1011 B
#define BIN1100 C
#define BIN1101 D
#define BIN1110 E
#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?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Bandhauer wrote:
> Wenn ich schreibe PORTD = 0b00000000;
> sagt er dass ein fehlerhaftes decimales Format vorliegt.
> PORTD = 0x00; (funktioniert)

Sagt wer?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab's mal als Feature Request bei AVR-Eclipse eingereicht:
https://sourceforge.net/tracker/index.php?func=det...

Ich glaube aber, dass man das bei den Entwicklern vom CDT Plugin 
einreichen müsste um daran was zu ändern.

Autor: Peter Bandhauer (basejump)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sagt Eclipse 3.4.0 mit AVR_Eclipse_Plugin 2.2.0

Kann ich das irgendwie mit der #define Anweisung so hinbekommen dass er 
mir
0b00001111
zu 0x0F konvertiert?

0xBIN0000BIN1111 zu 0x0F wär auch okay, nur bekomme ich das nicht hin.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Bandhauer wrote:
> Sagt Eclipse 3.4.0 mit AVR_Eclipse_Plugin 2.2.0
>
> Kann ich das irgendwie mit der #define Anweisung so hinbekommen dass er
> mir
> 0b00001111
> zu 0x0F konvertiert?
>
> 0xBIN0000BIN1111 zu 0x0F wär auch okay, nur bekomme ich das nicht hin.

Nein, das geht so wahrlich nicht. Schau aber mal hier:
Beitrag "Binär  -- wie in C schreiben?"

Autor: Peter Bandhauer (basejump)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Thomas Holland (innot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon K. wrote:
> Ich hab's mal als Feature Request bei AVR-Eclipse eingereicht:
> 
https://sourceforge.net/tracker/index.php?func=det...
>
> 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=1...

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas Holland wrote:
> Simon K. wrote:
>> Ich hab's mal als Feature Request bei AVR-Eclipse eingereicht:
>>
> 
https://sourceforge.net/tracker/index.php?func=det...
>>
>> 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=1...

Super! :-)

Autor: Peter Bandhauer (basejump)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thomas Holland (innot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas Holland (innot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Hinweis und gute Arbeit mit dem Patch! :-)

Autor: Peter Bandhauer (basejump)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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.

Autor: Thomas Holland (innot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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_Servi...

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.