mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MC9S12


Autor: Malve (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

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


Peter

Autor: Malve (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Benjamin,

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


Peter

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Malve (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Malve (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die Fehlermeldungen sehen folgendermaßen aus.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Malve (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Malve (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.