PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmierung des C2 mit C



Buddy
16.03.2005, 16:00
Hi @ all,

kann mir jemand sagen, ob es möglich ist den C-Controll auch mit der Keil-Software zu programmieren? Wenn ja, was muss ich beachten?

mfG Buddy

andi-58
03.04.2005, 18:25
Hi, hast du schon etwas heraus bekommen?
Ich möchte auch die C2 mit der Keil-Software betreiben.
Melde dich mal
GRuß Andi

Bernhard667
04.04.2005, 18:12
Hallo,

das sollte natürlich gehen.

Auch ich habe bei meiner CC2 den Conrad Code gelöscht und lade meine Programme jetzt so rein.
Wie gehts.
Der Conrad Downloader kann eine Datei OS.hex runterladen. Dadrin ist normalerweise das Conrad OS. Da drin solltest Du dann dein Programm haben.

Ereugen der OS.hex
Mit Keil habe ich noch nichts gemacht, nur mit Hightec und mal mit Tasking.
Also:
-Speicherbelegung der CC2 einstellen (war für mich ne ziemliche Fummelei, ging aber dann doch)
-Programm schreiben, Startpunkt ist wie für jedes C Programm die main()
-Nun compilieren, Outputformat Intel Hex
-in OS.hex umbenennen und dem Downloader unterjubeln.
-CC2 in Stimmung bringen (Boot drücken, Reset drücken, Reset auslassen, Boot auslassen). Achtung, die mag nicht jedes mal, dann halt nochmal probieren
-OS Download starten.

Alles klar?
Vermutlich nicht, aber denk dir nichts, ich habe auch lange gebraucht.
Schlimmstenfalls kann ich mal die Hightec Sourcen schicken.

Schau doch mal, was ich mit dem C164 gemacht habe, nachdem ich C2 gelöscht hatte.
Mit C2 wär das nie gegangen. Der Zugriff auf die wichtigsten Funktionen des C164 (Timer, Timer, Timer) wird dort verstellt.

http://b-duschinger.homepage.t-online.de

Bernhard

andi-58
07.04.2005, 20:07
Hat alles funktioniert... jetzt hat die c-control II mal richtig power

ACU
08.04.2005, 23:25
@andi-58
Kannst du mal paar genauere Infos geben, wie du es nun hinbekommen hast und was die Verbesserung ist (mehr Speed nehme ich an).
Kannst du mal nen Beispielcode posten?
Würde mich mal interessieren


MfG ACU

09.04.2005, 12:27
@acu
ich habe es so gemacht wie Bernhard667 es oben beschrieben hat nur das ich mein Hex-File mit der Demoversion von Keil erzeugt habe. Die Demoversion ist zwar code size limited aber es reicht um kleine Programme zu schreiben und sie zu testen. Probier es einfach mal aus....

andi-58
21.04.2005, 21:27
Hallo Bernhard667

Hast du den PWM Ausgang zum laufen bekommen? ich habe das mit CC24 und CC25 versucht und P1H4 oder P1H5 ausgegen. Passiert aber leider nichts. Gruß Andi

Bernhard667
25.04.2005, 22:07
Hallo Andi,

siehe Seite 230 des C164 Manuals.

CC24 bis 27 sind nur für Capture, d.h. für Input zuständig.
Output (PWM) geht über CC16-19.
Dann geht es einwandfrei ;-)))

Bernhard

Hier ein kleiner Beispielscode:
//PWM Output für Motortreiber konfigurieren
_putbit(1,DP8,0); //CC16IO MC0_IN1 auf Output
_bfld(CCM4, 0x0000F, 0x00007); //CC16 an T7 haengen, Compare Mode 3 kein Interrupt
CC16 = 64500;

_putbit(1,DP8,2); //CC18IO MC1_IN1 auf Output
_bfld(CCM4, 0x00F00, 0x00700); //CC18 an T7 haengen, Compare Mode 3 kein Interrupt
CC18 = 64500;

_putbit(1,DP8,3); //CC19IO MC1_IN1 auf Output
_bfld(CCM4, 0x0F000, 0x07000); //CC19 an T7 haengen, Compare Mode 3 kein Interrupt
CC19 = 64500;



Each capture/compare register may be programmed individually for capture or compare function,
and each register may be allocated to either timer. Each capture/compare register has one port pin
associated with it which serves as an input pin for the capture function or as an output pin for the
compare function (except for CC27...CC24, which only provide the capture function). The capture
function causes the current timer contents to be latched into the respective capture/compare
register triggered by an event (transition) on its associated port pin. The compare function may
cause an output signal transition on that port pin whose associated capture/compare register
matches the current timer contents. Specific interrupt requests are generated upon each capture/
compare event or upon timer overflow.

andi-58
26.04.2005, 07:13
Hallo Bernhard,
vielen Dank für Deine nützlichen Tips.
Kannst Du nochmal beschreiben wie Du den Speicher eingestellt hast! Ich glaube bei mir gibt es dabei boch Probleme.
Die PWM werde ich gleich mal testen.
Vielen Dank
Gruß Andi

Bernhard667
26.04.2005, 20:07
Hallo Andi,

zuerst war die Entscheidung zu fällen, welches Speichermodell man wählt.
Komplizierte Sache. die einem Freund der Motorola Adressierung nicht wirklich Freude macht.
Nach einer Weile habe ich mich auf small festgelegt.

Dann muß man dem Compiler auch noch die Speicherbelegung mitteilen.
Bei Hightec muß man das in einem locfile machen (siehe unten).
Bei Tasking stellst Du es im Menü ein.
Keil kenne ich nicht.

Die Speicherbelegung steht im Conrad Manual der CC2.

So habe ich es gemacht. Ich bin mir nicht mal sicher, ob ich es exakt richtig mache, aber es hat bei 2 Projekten soweit geklappt, wird also so falsch nicht sein.

Die ganze Segmentierung ist nicht besonders elegant (finde ich).
Hat man jedoch sich jedoch mal durgebissen (=memory model gewählt, Speicherbelegung eingestellt), kann man es zum Glück wieder vergessen, den Rest macht der Compiler.

Man erreicht auch von C aus die ganzen Goodies des Controllers, Timer, PEC, ADCs, ....


Bernhard

dpp3: 3

0x0000, 0x7ffe: text,data
0x30000,0x3fffe: text,data
0x0f600,0x0f800: bss
0x88000,0x8fffe: bss

andi-58
02.05.2005, 18:51
Hallo Bernhard,
vielen Dank für deine Tips. Mittlerweile läuft jetzt der I2C Bus und die PWM (Capcom6).
Gruß Andi

harri81
04.08.2005, 11:53
Hallo Andi

du hast doch die CC2 Unit mit Keil zum laufen bekommen und sicherlich mit C-Code oder??

Kannst du uns da mal ein paar Tips geben?? Wir hängen ziemlich inder Luft!

Wir bekommen einfach nix auf den Controller geladen mit Keil!!
Verwendest du denn das Application Board von Conrad mit???

andi-58
05.08.2005, 14:09
Ja das ist richtig. Ich hab mit der freien Version von µVision ein kleines Programm geschrieben. Dieses habe ich dann mit einem Flashtool auf die CC2 geladen. Ich habe es mit den App. Board gemacht aber auch schon eine eigenes Board entwickelt. Damit funktioniert es auch. Willst du die Unit unbedingt mit C Programmieren. Diese C2-Programmiersprache ist viel einfacher mit der CC2-Unit zu verbinden.
Bekommt ihr denn eine Verbindung zur Unit?

harri81
09.08.2005, 11:22
Naja das ist so:

Wir mache nen Studienbeleg und müssen dazu die CC2 mit C programmieren!
Aber irgendwie gibt es da keine so richtige Anleitung oder Hilfe dazu! Basiert halt alles auf C2 und das hilft uns nicht sonderlich viel!!
Kannst du mir sagen ob ich Ports und alles weitere unter C genauso wie bei C2 ansprechen kann??

Und mit welchem Flashtool hast dun das auf deine CC2 bekopmmen??
Haben es ja mit Keil probiert aber da kriegen wir irgendwie keine Verbindung hin???

09.08.2005, 14:13
Ich habe das Flashtool von der Firma Phytec benutzt. Das Nanomodul164 von Phytec und die CC2 sind fast gleich. Schau mal auf deren Homepage. Es solte aber auch mit jedem anderen Flashtool funktionieren. Du brauchst ja damit nur das HEX-File auf die CC2 laden. Mit Keil lassen sich alle Ports und Funktionen des C164 programmieren ist allerdings nicht so ganz ohne...

harri81
11.08.2005, 12:08
Gibt es schon irgendwelche fertigen C Funktionen zur Ansteuerung des AD Wandlers, der Compare und Capture Unit(PWM) und Timer (Initialisierung, Ein-Ausgabe)???

Muss alles selbst programmieren mit Keil und bin nicht grad ein C-Profi und der Controller ist auch noch neu für mich!

Wäre nett wenn mir jemand so etwas schicken könnte oder mir sagt wo mann soetwas herbekommt.


Danke schon mal im vorraus!

andi-58
11.08.2005, 15:55
Am besten druckst du dir das datenbaltt mal aus. Da steht schon viel über die register drin. Such mal bei google nach Beispielen. Da findest du ein bisschen was...