www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einfaches Programm für Card12 mit HC12


Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe folgendes Programm für einen HC12 Controller:

#include <hcs12dp256.h>
void delay(void) {
volatile unsigned n = 0;
while(--n) ;
}
void main(void) {
DDRH |= 0x80;
while(1) {
PTH ^= 0x80;
delay();
}
}

wenn ich dies jetzt in ICC12 kompiliere dann geht das zwar, jedoch 
blinkt die Led auf dem MC912DG128A nicht wie sie soll? Ich bin jetzt 
momentan etwas ratlos, da ich ein Anfänger in dem Bereich bin. Ich 
vermute das Problem besteht darin, dass 
http://elmicro.com/files/elmicro/dev12_tutorial.pdf dieses Tutorial für 
eine andere Card geschrieben ist wie ich habe!
Vlt kann mir ja jmd von euch Tipps geben, bzw ein Programm das geht... 
:)

Ich bin für jede Hilfe dankbar!

THX!

Ich habe auch das Hochladen auf die Card12 richtig ausgeführt.... soweit 
ich weiß, da in dem Speicherbereich das Programm angezeigt wird!

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiß niemand was??? :(

Autor: Fix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahrscheinlich sind alle Profis dafür gerade im Augenblick beim Pinkeln. 
Wenn Du noch 30 Sekunden wartest, antworten sie alle gleichzeitig!

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fix schrieb:
> Wahrscheinlich sind alle Profis dafür gerade im Augenblick beim Pinkeln.
> Wenn Du noch 30 Sekunden wartest, antworten sie alle gleichzeitig!

schön wärs ;)

Autor: Karl M. (movex)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> #include <hcs12dp256.h>

Also da sollte es doch klingeln. Das ist ein ganz anderes Derivat.
Ein Blick in das Reference Manual von MC912DG128A sagt, dass PORTH I/O 
Register auf Adresse 0x29 liegt. Das Headerfile vom S12DP256 zeigt auf 
0x260 für PORTH. Die Register liegen anders. Also richtige Dateien 
einbinden, dann sollte es klappen.


Jochen R. schrieb:
> Weiß niemand was??? :(

RTFM.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist denn kein Header-File für deinen Controller dabei? Die Addressen 
z.B. für die Ports sind natürlich unterschiedlich. Beim HC12 ist DDRH 
0x002B beim HCS12 ist es 0x0262.
Vermutlich würde sowas gehen
void delay(void) {
  volatile unsigned n = 0;
  while(--n) ;
}
void main(void) {
  *(unsigned char volatile *)(0x2B) |= 0x80;
  while(1) {
   *(unsigned char volatile *)(0x29) ^= 0x80;
   delay();
  }
}

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timmo H. schrieb:
> Ist denn kein Header-File für deinen Controller dabei? Die Addressen
> z.B. für die Ports sind natürlich unterschiedlich. Beim HC12 ist DDRH
> 0x002B beim HCS12 ist es 0x0262.
> Vermutlich würde sowas gehen
>
> void delay(void) {
>   volatile unsigned n = 0;
>   while(--n) ;
> }
> void main(void) {
>   *(unsigned char volatile *)(0x2B) |= 0x80;
>   while(1) {
>    *(unsigned char volatile *)(0x29) ^= 0x80;
>    delay();
>   }
> }
> 

ist des des richtige? -> mc912d128.h

Hoffe doch?

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timmo H. schrieb:
> Ist denn kein Header-File für deinen Controller dabei? Die Addressen
> z.B. für die Ports sind natürlich unterschiedlich. Beim HC12 ist DDRH
> 0x002B beim HCS12 ist es 0x0262.
> Vermutlich würde sowas gehen
>
> void delay(void) {
>   volatile unsigned n = 0;
>   while(--n) ;
> }
> void main(void) {
>   *(unsigned char volatile *)(0x2B) |= 0x80;
>   while(1) {
>    *(unsigned char volatile *)(0x29) ^= 0x80;
>    delay();
>   }
> }
> 

Kannst du mir das Programm noch ein wenig erklären? Es geht nämlich! ;)

°Freu°

THX!

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So nun geht meins auch ;)

#include <mc912d128.h>

void delay(void) {
  volatile unsigned n = 0;
  while(--n) ;
  }

void main(void) {

  DDRH |= 0x80;
  while(1) {
    DDRH ^= 0x80;
    delay();
    }
  }

Schön... das wäre geschafft! :) Bloß ich wäre wirklich für eine kleine 
Erklärung des Programmes sehr dankbar!

THX!

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jochen R. schrieb:
>     DDRH ^= 0x80;
Da solltest du lieber mit dem Port wackeln anstatt ständig das Direction 
Register wieder auf Tristate zu schalten.

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey!

Kennt jmd von euch auch noch gute Unterlagen aus dem Inet wenn ich 
diesen Controller jetzt mit C programmieren will? Weil für Assembler 
habe ich eigentlich doch schon relativ viel gefunden... aber halt net so 
viel für C!

THX!

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In C? Schön wär's, aber C Compiler für den HC12 sind richtig teuer, 
soweit ich weiß. Jedenfalls nichts für Hobbyzwecke. In einer Firma mag 
das anders aussehen. Angeblich soll HC11-GCC auch für den HC12 gehen, 
aber über die Include-Dateien kann ich nichts sagen.

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian schrieb:
> In C? Schön wär's, aber C Compiler für den HC12 sind richtig teuer,
> soweit ich weiß. Jedenfalls nichts für Hobbyzwecke. In einer Firma mag
> das anders aussehen. Angeblich soll HC11-GCC auch für den HC12 gehen,
> aber über die Include-Dateien kann ich nichts sagen.

Es gibt doch ICC12 :) des net so teuer! ;)

Autor: Eckhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


also erstmal gibt es die Codewarrior Special Edition, die immerhin bis 
zu 32 KB Code erzeugen kann, denke mal das es noch ein langer weg ist 
bis Du so große Programme schreibst. Ansonsten gibt es noch den GCC für 
den HC12.

Was nicht ganz klar ist, wie du das Ding programmierst. Nutzt Du den 
Twin Peeks Monitor ? Da wirds schwer mit Unterstützung. Sonst such Dir 
ein geeignetes BDM Tool. Ich weiss aber nicht welches von GCC/GDB 
unterstützt wird.

Hier die GNU Toolchain : 
http://www.gnu.org/software/m68hc11/m68hc11_port.html

Eckhard

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eckhard schrieb:
> Hallo,
>
>
> also erstmal gibt es die Codewarrior Special Edition, die immerhin bis
> zu 32 KB Code erzeugen kann, denke mal das es noch ein langer weg ist
> bis Du so große Programme schreibst. Ansonsten gibt es noch den GCC für
> den HC12.
>
> Was nicht ganz klar ist, wie du das Ding programmierst. Nutzt Du den
> Twin Peeks Monitor ? Da wirds schwer mit Unterstützung. Sonst such Dir
> ein geeignetes BDM Tool. Ich weiss aber nicht welches von GCC/GDB
> unterstützt wird.
>
> Hier die GNU Toolchain :
> http://www.gnu.org/software/m68hc11/m68hc11_port.html
>
> Eckhard

Warum so kompliziert -> http://elmicro.com/de/icc12.html ist ein gutes 
Tool für den Anfang ... und als BDM-Tool nehme ich:
http://elmicro.com/de/compod12.html

Meine Frage war aber eigentlich: ne Doku für C zu bekommen mit Befehlen 
für den HC12 :)

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doku sollte bei einem kommerziellen C-Compiler aber dabei sein. Kein 
Handbuch, nicht mal digital in der Hilfe?
Sicher, C ist C, aber jeder Compiler für Mikrocontroller kennt 
irgendwelche spezifischen Konstrukte. Für die Namen der Register und 
Peripheriefunktionen allerdings muß man das Datenblatt des verwendeten 
Mikros bemühen. CodeWarrior ist hier eine Ausnahme, der hat 
Bibliotheken/Assistenten für die Peripherie.

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian schrieb:
> Doku sollte bei einem kommerziellen C-Compiler aber dabei sein. Kein
> Handbuch, nicht mal digital in der Hilfe?
> Sicher, C ist C, aber jeder Compiler für Mikrocontroller kennt
> irgendwelche spezifischen Konstrukte. Für die Namen der Register und
> Peripheriefunktionen allerdings muß man das Datenblatt des verwendeten
> Mikros bemühen. CodeWarrior ist hier eine Ausnahme, der hat
> Bibliotheken/Assistenten für die Peripherie.

Stimmt! ^^ Sehe auch gerade das reicht erstmal an Doku! Aber trotzdem 
Thx! ;)

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.