www.mikrocontroller.net

Forum: Compiler & IDEs winavr codefragment für port-io


Autor: Uwe Seidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

also ich werd jetzt so langsam warm mit winavr.
aber da sind ein paar sachen, die ich nicht verstehe:
warum geht
1. DDRB = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);
2. PORTB = (inp(PINB)|0x10);
nicht.
Der erste Fall ist aus dem Datenblatt von Atmel, wobei ich die
#define-Geschichte schon gemacht hab.
den zweiten Fall hätte ich gern so oder so ähnlich.

Kann mir mal jemand einen bitte einen Tip geben.

Uwe

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Davon abgesehen, daß der inp()-Makro in der zweiten Zeile überflüssig
ist, was genau geht denn nicht?  Schau Dir auch mal den generierten
Assemblercode (avr-gcc -S) an.

Autor: Uwe Seidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OH, sorry hab mich falsch ausgedrückt.
zu 1.
der compiler meldet schon:
1_main.c:30: error: parse error before ';' token

zu 2. nochmal sorry,
das funktioniert jetzt, warum auch immer es vorher nicht ging.
*Vielleicht sollte ich nachts nicht zu lange machen.*

Danke Dir aber schon mal .

Autor: Uwe Seidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK , ich bins nochmal....
ist mir ja echt peinlich, hab aber den Fehler gefunden:

Ganz doof ist es nämlich, wenn man die #define DD_MOSI 5
mit einem ";" abschließt.

Anscheinend ist das aus "Reflex" am Zeilenende passiert. Ist bestimmt

ein Firmware-Fehler in meiner Fingersteuerung-->arbeite am Upgrade.

:-)
Danke für die Hilfe
Uwe Seidel

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> der compiler meldet schon:
> 1_main.c:30: error: parse error before ';' token

Hmm, dann hast Du irgendwas mit Deinen #defines versaut.

Ich sehe mir in solchen Fällen immer den Output des Präprozessors an.
Aufruf

avr-gcc -E <alle -D oder -I optionen, die man braucht> filename.c

Ausgabe nach »more« oder »less« pipen oder in eine Datei umlenken und
diese dann ansehen.

Auch wenn 2. jetzt tut: das inp() ist überflüssig.

Autor: Uwe Seidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo , hab bei 2. das inp() rausgenommen.

Allerdings ist mir das mit :
> avr-gcc -E <alle -D oder -I optionen, die man braucht> filename.c

noch nicht so geläufig. hab mir bis jetzt einfach ein makefile
umgeschrieben, und in winavr/pn make aufgerufen. läuft.

Interessant wäre eine Sammlung der avr-gcc-optionen schon. Grad für
solche Art von debugging. Wo steht das denn drin?

Hab bis vorgestern eigentlich ausschließlich asm in AVR-Studio gemacht.
C kann ich von früher noch ein wenig. Aber die Compiler-Spezialitäten
bezüglich AVR sind mir NOCH ein Rätsel.

Uwe Seidel

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Allerdings ist mir das mit :
> > avr-gcc -E <alle -D oder -I optionen, die man braucht> filename.c

> noch nicht so geläufig.

Nun, im einfachsten Falle suchst Du Dir aus dem Log alle -D, -I (und
-U :-) Optionen raus, die Dein Projekt normalerweise benutzt (das sind
all die Optionen, die den Präprozessor beeinflussen).  Vermutlich sind
es keine. ;-)

> Interessant wäre eine Sammlung der avr-gcc-optionen schon. Grad für
> solche Art von debugging. Wo steht das denn drin?

Im GCC-Manual, wird von WinAVR mit auf Deiner Platte installiert.

Wichtige Optionen finden sich auch unter ``Using the GNU Tools'' im
avr-libc Manual, ebenfalls auf Deiner Platte. ;-)

Autor: Uwe Seidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HUCH

ich sag jetzt nicht, dass ich das .pdf die ganze Zeit offen hatte und
nach Lösungen gesucht hab. ;-)

Ich denke, da hab ich ne Weile zu lesen.....

Danke für Deine Hilfe

Uwe Seidel

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.