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
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)?
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)
> Bei solchen Makros sollte man etwas mehr Klammern spendieren:
Naja, die Frage nach dem Sinn dieses Threads bleibt.
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
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
Hi, Mir hats auch weitergeholfen. Hab mich jetzt nähmlich seit einer stunde mit altem code und einem neuen WinAVR herumgeplagt. danke!
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
...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.
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...:)
mir hats auch geholfen. Wenn mn mal zwei Stunden mit compiler-Fehlern verseppelt hat, ist DER Thread genau richtig ! tom
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.
ansonsten tut's auch ein : #include <compat/deprecated.h>
Die Rede war von zwei Stunden, nicht von vier Jahren ... scnr, Jörg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.