sbi /cbi / inp / outp im neuen WinAVR- workaround

Gast #182602
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
Gast #182603
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)?
Gast #182606
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
Gast #182610
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
#182611
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.
Gast #182612
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...:)
Moderator Persönliche Seite #716402
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__deprecated__items.html

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren