Atxmega 128a1

Gast #4047471
Lesenswert?

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.
Angehängte Dateien:
Moderator Persönliche Seite #4047477
Lesenswert?

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 …
(Firma: matzetronics) #4052906
Lesenswert?

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.
Gast #4052982
Lesenswert?

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!
Moderator Persönliche Seite #4055750
Lesenswert?

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.

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