Forum: Mikrocontroller und Digitale Elektronik MC9S12


von Malve (Gast)


Lesenswert?

Ich versuche gerade ein für einen C167 geschriebenes Programm auf einem
Motorola MC9S12 zum laufen zu bringen, natürlich muss man dazu einige
Dinge ändern, allerdings weiß ich nicht genau welche. Wäre nett, wenn
mir jemand einen Tip geben könnte.

von Peter D. (peda)


Lesenswert?

1:
Einfach compilieren und 1. Fehlermeldung ansehen.
Wenn kein Fehler goto 4:
2:
Fehler beheben
3:
goto 1:
4:
ende


Peter

von Malve (Gast)


Lesenswert?

Darauf wäre ich auch ohne Hilfe gekommen.
Aber meine eigentliche Frage wird damit keineswegs beantwortet.

von Peter D. (peda)


Lesenswert?

Also eine bessere Antwort kann dir keiner auf Deine Flut an
Informationen  geben.

Aber wenn Du was konkreteres willst, must erstmal Du konkret werden
(Stichwort Dateianhang).

In den Kopf schauen kann Dir keiner.


Peter

von Benjamin (Gast)


Lesenswert?

Man kann sich auch etwas anstellen "Herr Dannegger".
Ich weiß nicht wie oft ich schon die überflüssigen Worte "In den Kopf
schauen kann Dir keiner" in diesem Forum lesen musste. Etwas weniger
altklug wäre nicht schlecht :-)
Viele Grüße

von Peter D. (peda)


Lesenswert?

@Benjamin,

offensichtlich erwartet das doch jemand, der fragt, wie er sein
Programm zum laufen bringen kann, ohne dieses beizustellen.


Peter

von Benjamin (Gast)


Lesenswert?

@Peter

Ja das ist schon richtig, allerdings könnte man immer schon einmal
pauschal einige grundlegende Dinge beantworten (Initialisierung der
Ports, blabla). Daraus könnte sich dann so etwas wie ein Dialog ergeben
(der dann nicht im Keim erstickt wird), in dem man dann konkreter
werden kann, ohne dass im Vorfeld gleich der Lehrmeister herausgekehrt
wird.
Also Peter, etwas weniger Phrasen bitte.

Benjamin

von Ralf (Gast)


Lesenswert?

Hallo Malve,

bin auch gerade von einem C166 Derivat am portieren. Zwar nicht auf
einen Motorola aber ich mußte auch mal ins Datenblatt des Motorola
Controllers gucken. Wenn deine Software gut gekapselt ist, hast Du die
meisten probleme eigentlich nur bei der Portierung der hardwarenahen
Teile des Programms. Also bei den Ports, AD-Wandlern und bei den
anderen Perepherieschnittstellen. Weiterhin mußt du dir evtl. ein paar
gedanken machen, wie du deine Interruptstruktur organisierst. Der
MC9S12 unterstützt ja keine gegenseitig unterbrechbaren Interrupts.
Bei mir waren das bis jetzt die wesentlichen Punkte, wo was zu ändern
war. Am besten nimmt man sich Modul für Modul vor und tested es nach
dem Umschreiben z.B. mit dem Emulator.
Was wahrscheinlich auch noch Fehler verursachen kann, ist die
Verwendung unterschiedlicher Compiler und der damit verbundenen
Eigenschaften wie z.B. andere Spracherweiterungen wie z.B. #Pragmas
oder Interruptaufrufe.

Hoffe ich konnte dir etwas helfen.

Viele Grüße,

Ralf

von Malve (Gast)


Angehängte Dateien:

Lesenswert?

@Ralf

Ich denke mein Problem liegt darin, dass ich zwei verschiedene Compiler
verwende. Zum einen ist das µVision2 von Keil und zum anderen ICC von
Imagecraft. Die Software, die ich versuche auf dem Motorola zum laufen
zu bringen, soll eine Tabelleninterpolation erzeugen. Das Problem ist
nun, dass diese Software bei µVision2 einwandfrei lief, sobald ich sie
aber mit dem ICC laufen lassen will, kommen verschiedene Fehler, mit
denen ich nicht wirklich etwas anfangen kann. Das Programm lege ich als
Dateianhang bei.

von Ralf (Gast)


Lesenswert?

Moin Moin,

kann auf den ersten Blick so keinen Fehler erkennen. Was vielleicht
eine Ursache sein kann ist die Bitvariable. Hat der MC9S12 einen
Bitadressierbaren Bereich? Bei meinem Controller ist es jetzt nämlich
so, dass dieser keine mehr hat, im Vergleich zum C164. Bin jetzt an
einem Hitachi dran. Was bei mir auch ziemlich blöde Fehler erzeugt hat
waren die C++ Kommentare '//'. Diese werden beim IAR nicht default
mäßig unterstützt und brachten dann Fehler wie z.B. "Identifier
expected" oder so. Hänge vielleicht nochmal deine Fehlerliste an, dann
kann man vielleicht doch noch was erkennen.

von Malve (Gast)


Angehängte Dateien:

Lesenswert?

Die Fehlermeldungen sehen folgendermaßen aus.

von Ralf (Gast)


Lesenswert?

kann es sein, dass des MC9s12 keine far Zeiger unterstützt? er hat doch
nur einen Speicherbereich von 64k, oder? Da braucht man dann keine far
Zeiger.

von Malve (Gast)


Lesenswert?

Das hab ich mir auch schon gedacht, allerdings kenn ich mich mit Zeigern
nicht aus. Ich kann den Zeiger doch nicht einfach weglassen, oder?

von Ralf (Gast)


Lesenswert?

Nein, das nicht, aber die Tabelle wird ja beim Motorola auch innerhalb
der 64k liegen und dann kannst du dieser far weg lassen. Der Zeiger ist
ja auf jeden Fall near, wenn du nur 64k Speicher hast.

von Malve (Gast)


Lesenswert?

Vielen Dank Ralf,

ich hab ihn jetzt weggelassen und das scheint auch kein Problem zu
sein. Jetzt hab ich nur noch das Problem, die einzelnen Pins
umzubenennen. Kann man eigentlich bei Motorola die Pins der jeweiligen
Ports auch einzeln ansprechen,z.B. mit PTP^3 oder so ähnlich? Oder muss
man immer den ganzen Port ansprechen?

von Ralf (Gast)


Lesenswert?

Das weiß ich nicht. Habe bis jetzt nur mal ins Datenblatt schauen müssen
und sonst noch nicht mit Motorola gearbeitet. Normalerweise sollte das
aber möglich sein. Ich würde mal in der Beschreibung des Compilers
nachsehen. Normalerweise gibt es für sowas C-Funktionen, die sowas
ermöglichen. Beim IAR-Compiler für den Hitachi heißen die z.B.
bset(Bit, Register) und bclr(Bit, Register). Die beiden funktionen sind
dort in der Headerdatei inh8.h abgelegt. Sowas sollte es für den
Motorola auch geben. Ich würde mal in den Header-Dateien für die
Grundlegenden Ein- Ausgabefunktionen nachsehen. Befehle zum setzen oder
löschen von Bits gibt es im Assembler bestimmt und dann gibt es
bestimmt auch Definitionen für C.

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
Noch kein Account? Hier anmelden.