Hallo alle zusammen Ich versuche eine bibliothek(Ansteuerung) für nokia 5110 zu schreiben für Atxmega 128a1.Dafür habe ich bibliothek von atmega8 genommen und versuche die umzuschreiben.Ständig kriege ich folgende Fehlermeldung:siehe Anhang kann mir jemand sagen wie man dieser fehler lösen kann? Für jeder Hilfe würde ich dankbar.
Erik schrieb: > kann mir jemand sagen wie man dieser fehler lösen kann? Indem du den Code wirklich portierst. Das fängt doch schon damit an, dass ein ATxmega eben nun einmal kein Register namens DDRB hat, sondern dass man dort mit PORTB.DIR und dergleichen arbeiten muss. p.s.: Wenn du das überflüssige Semikolon hinter dem #define für den LCD-Port wegnimmst, könnten sich ja vielleicht erstmal die Syntaxfehler in Luft auflösen …
:
Bearbeitet durch Moderator
Erik schrieb: > Soll ich auch statt PB1, PIN1_bp schreiben muss? Du musst erstmal das Datenblatt eines ATxmega lesen und verstehen. Mit trial&error portiert man den Code von alten MegaAVR auf Xmega keineswegs.
Erik schrieb: > Wiso Antwortest du wenn du selber nicht weist? So wird das nichts. Wie Jörg schon sagte, ist die Syntax zwischen den ATMega und dem XMega deutlich geändert worden, so das es z.B. kein DDR Register mehr gibt, sondern PORT.DIRSET und PORT.DIRCLR. Man schreibt auch nicht mehr (1<<PB2), sondern PIN2_bm, wie z.B. so:
1 | PORTF.DIRSET = PIN3_bm; // Pin 3 (TXD0) as output. |
2 | PORTF.DIRCLR = PIN2_bm; // Pin 2 (RXD0) as input. |
Du wirst den Grossteil des Codes umschreiben müssen, und evtl. an deiner Kommunikation arbeiten müssen, denn sonst werden dir hier nicht viele Leute weiterhelfen.
:
Bearbeitet durch User
Matthias Sch. schrieb: > Erik schrieb: >> Wiso Antwortest du wenn du selber nicht weist? > > So wird das nichts. Wie Jörg schon sagte, ist die Syntax zwischen den > ATMega und dem XMega deutlich geändert worden, so das es z.B. kein DDR > Register mehr gibt, sondern PORT.DIRSET und PORT.DIRCLR. > > Man schreibt auch nicht mehr (1<<PB2), sondern PIN2_bm, wie z.B. so: > PORTF.DIRSET = PIN3_bm; // Pin 3 (TXD0) as output. > PORTF.DIRCLR = PIN2_bm; // Pin 2 (RXD0) as input. > Du wirst den Grossteil des Codes umschreiben müssen, und evtl. an deiner > Kommunikation arbeiten müssen, denn sonst werden dir hier nicht viele > Leute weiterhelfen. Danke dir fürs Antwort!
Erik schrieb: > Wiso Antwortest du wenn du selber nicht weist? Weil du mich nicht damit beauftragt hast, die Portierung für dich zu erledigen, sondern den Eindruck erweckst, dass du das selbst tun willst. Dafür solltest du dich aber zumindest bemühen, die Unterschiede zwischen beiden Architekturen so weit zu verstehen, dass du wenigstens einen Anfang einer Portierung machen kannst. Im Moment ist es mein Eindruck, dass du schlicht und ergreifend rein gar nichts hast, was irgendwie den Namen „Portierung“ verdienen würde. Klar kann das auch jemand anders für dich tun, aber dann solltest du 1.) exakt danach fragen und 2.) lernst du dann dabei nichts für die Zukunft. Beim nächsten Mal müsstest du also wieder jemanden finden, der es für dich tut (und dabei ist es egal, ob das nächste Mal wieder Code von einem MegaAVR auf einen Xmega zu portieren ist oder welcher von einem ARM auf einen anderen mit anderen Peripherals). Matthias Sch. schrieb: > so das es z.B. kein DDR Register mehr gibt Gibt's auch noch, heißt dort “DIR”. Kann man benutzen, wenn man die Datenrichtung der Pins eines ganzen Ports auf einmal festlegen will. Meist will man aber an einer Stelle eher einzelne Pins festlegen, da sind DIRSET und DIRCLR handlicher.
:
Bearbeitet durch Moderator
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.