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

Gast #182602
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
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
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
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
Gast
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
Gast
...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
> 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
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
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

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