mikrocontroller.net

Forum: Compiler & IDEs sbi /cbi / inp / outp im neuen WinAVR- workaround


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ggc-Gemeinde,

für alle, die wie ich jede Menge alten code haben und nun Probleme
bekommen, weil sbi, cbi, inp und outp vom neuen WinAVR nicht mehr
unterstützt werden, hier ein paar Zeilen, mit denen man schnell die
alten sources wieder nutzbar machen kann:

#define sbi(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
#define cbi(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
#define outp(VAL,ADRESS) ADRESS=VAL
#define inp(VAL) VAL

Gruß,
Sebastian

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist deine Frage? Ansonsten wäre das besser in der Codesammlung
aufgehoben.

Allerdings stellt sich mir die Frage nach dem Sinn des ganzen. Wer
"jede Menge alten Code" hat, kann programmieren und diese Zeilen
daher in <1min selbst schreiben.
In neuen Projekten oder wenn es vom Zeitaufwand her möglich ist (ist es
bei vielen Hobbyprojekten vermutlich) sollte man in jedem Fall nicht
mehr sbi & Co. verwenden, also ist dieser Code für Anfänger ebenfalls
nutzlos.

Wem hilfst du also mit diesem Code (nehmen wir mal an er stünde in der
Codesammlung)?

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei solchen Makros sollte man etwas mehr Klammern spendieren:

#define sbi(ADDRESS,BIT) ((ADDRESS) |= (1<<(BIT)))
#define cbi(ADDRESS,BIT) ((ADDRESS) &= ~(1<<(BIT)))
#define outp(VAL,ADRESS) ((ADRESS) = (VAL))
#define inp(VAL) (VAL)

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bei solchen Makros sollte man etwas mehr Klammern spendieren:

Naja, die Frage nach dem Sinn dieses Threads bleibt.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

schon gut, schon gut, bevor Ihr über mich herfallt....

Ich hatte nur gerade das oben angesprochene Problem, habe mir die
Zeilen geschrieben und dachte, ich poste sie mal, falls jemand ein
ähnliches Problem hat.

Es gibt ja auch noch die Hobbybastler, die sich Code aus dem Netz
herunterladen und sich wundern, warum er nicht kompiliert werden kann.


Oder die, die die Verwendung von sbi() usw. einfach leserlicher finden,
egal, was c ist und was nicht (zu denen ich gehöre). Code muss
funktionieren und gut zu warten sein. Bitte.

Ich war hin- und hergerissen, ob ichs in der Codesammlung oder hier
posten sollte, habe mich dann aber für dieses Forum entschieden, weils
eben mehr gcc betrifft als wirklicher Code ist. Wenn ich ein solches
oder ähnliches Problem habe, suche ich eben erst mal hier, bevor ich
mich der Codesammlung widme, vielleicht machen das andere anders.

Es war wohl, wenn ich mir die Reaktionen hier anschaue, ein Fehler
überhaupt zu posten.

~Thread closed~
Sebastian

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ein Fehler war es ganz bestimmt nicht. Chris scheint schon ein
Vollprofi zusein der nicht mehr an Anfaenger denkt.

Vielen Dank für die Makro's

mfg
Dirk

Autor: Miguel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Mir hats auch weitergeholfen. Hab mich jetzt nähmlich seit einer stunde
mit altem code und einem neuen WinAVR herumgeplagt.

danke!

Autor: Pete da Heat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Irgendjemand findet immer was zu meckern...Lass Dich von einem
Miesepeter nicht ausm Konzept bringen, gibt bestimmt ein paar denen
damit geholfen ist.

So long!
Pete

Autor: mmm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...das denke ich auch!

Und Chris schein so viel Zeit zu haben, dass er, falls er über tausende
von Zeilen alten Codes verfügte, die sbi und cbi enthielten, diesen Code
vollständig lesen und an jeder einzelnen Stelle von Hand das seit
neuestem empfohlene (und sicherlich alleinseligmachende) Konzept
einfügen würde.

Gruß mmm

Autor: Christoph __ (chris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und Chris schein so viel Zeit zu haben, dass er [...] an jeder
> einzelnen Stelle von Hand das [...] [neue] Konzept einfügen
> würde.
Habe ich das wirklich so geschrieben?
Ich meine nein. :)

--
> Wer "jede Menge alten Code" hat, kann programmieren und
> diese Zeilen daher in <1min selbst schreiben.

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich bin auch sehr froh, dass Sebastian das hier gepostet hat. Habe
auch die cbi und sbi Funktionen im Netz gefunden und mich gewundert
warum mein AVR Studio das nicht kennt und somit meinen Code nicht
compilieren kann. Hat ne weile gedauert aber Dank Sebastian funzt der
Code jetzt...juhu freu

Bis denne und weiter so Sebastian...:)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mir hats auch geholfen.

Wenn mn mal zwei Stunden mit compiler-Fehlern verseppelt hat, ist DER 
Thread genau richtig !


tom

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:

> Wenn mn mal zwei Stunden mit compiler-Fehlern verseppelt hat, ...

...dann könnte man ja auch mal mit dem Studium der Dokumentation
anfangen, nicht?  Zum Beispiel der hier:

http://www.nongnu.org/avr-libc/user-manual/group__...

Ganz davon abgesehen möchte ich bezweifeln, dass die Mehrheit des
entsprechenden Codes von vor dem Jahr 2003 stammt.  Zu diesem Zeitpunkt
wurden die alten Makros nämlich `deprecated', d. h. sie hätten ab da
nicht mehr in neuen Code reingehört (bzw. nur mit der entsprechenden
eigenen Definition).  Das Problem ist also in den allermeisten Fällen
eher hausgemacht.

Autor: min (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ansonsten tut's auch ein :

#include <compat/deprecated.h>

Autor: Jörg G. (joergderxte)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Rede war von zwei Stunden, nicht von vier Jahren ...

scnr, Jörg

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.