winavr codefragment für port-io

Gast #75375
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
Gast #75376
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.
Gast #75377
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 .
Gast #75378
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
Gast #75379
> 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.
Gast #75380
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
Gast #75381
> 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. ;-)
Gast #75382
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

Eine eigene Frage? Dieser Thread ist über 23 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.