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!
Wahrscheinlich sind alle Profis dafür gerade im Augenblick beim Pinkeln. Wenn Du noch 30 Sekunden wartest, antworten sie alle gleichzeitig!
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 ;)
> #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.
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
1 | void delay(void) { |
2 | volatile unsigned n = 0; |
3 | while(--n) ; |
4 | }
|
5 | void main(void) { |
6 | *(unsigned char volatile *)(0x2B) |= 0x80; |
7 | while(1) { |
8 | *(unsigned char volatile *)(0x29) ^= 0x80; |
9 | delay(); |
10 | }
|
11 | }
|
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 >
1 | > void delay(void) { |
2 | > volatile unsigned n = 0; |
3 | > while(--n) ; |
4 | > } |
5 | > void main(void) { |
6 | > *(unsigned char volatile *)(0x2B) |= 0x80; |
7 | > while(1) { |
8 | > *(unsigned char volatile *)(0x29) ^= 0x80; |
9 | > delay(); |
10 | > } |
11 | > } |
12 | >
|
ist des des richtige? -> mc912d128.h Hoffe doch?
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 >
1 | > void delay(void) { |
2 | > volatile unsigned n = 0; |
3 | > while(--n) ; |
4 | > } |
5 | > void main(void) { |
6 | > *(unsigned char volatile *)(0x2B) |= 0x80; |
7 | > while(1) { |
8 | > *(unsigned char volatile *)(0x29) ^= 0x80; |
9 | > delay(); |
10 | > } |
11 | > } |
12 | >
|
Kannst du mir das Programm noch ein wenig erklären? Es geht nämlich! ;) °Freu° THX!
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!
Jochen R. schrieb: > DDRH ^= 0x80; Da solltest du lieber mit dem Port wackeln anstatt ständig das Direction Register wieder auf Tristate zu schalten.
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!
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.
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! ;)
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
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 :)
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.
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! ;)
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.