-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Programmierung des C2 mit C

  1. #1

    Programmierung des C2 mit C

    Anzeige

    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

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    04.03.2005
    Ort
    Wolfsburg
    Beiträge
    22
    Hi, hast du schon etwas heraus bekommen?
    Ich möchte auch die C2 mit der Keil-Software betreiben.
    Melde dich mal
    GRuß Andi

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.04.2005
    Beiträge
    181
    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

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    04.03.2005
    Ort
    Wolfsburg
    Beiträge
    22
    Hat alles funktioniert... jetzt hat die c-control II mal richtig power

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.11.2003
    Ort
    Leipzig
    Alter
    31
    Beiträge
    578
    @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
    http://www.roboterbastler.de
    endlich wieder online

  6. #6
    Gast
    @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....

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    04.03.2005
    Ort
    Wolfsburg
    Beiträge
    22
    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

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.04.2005
    Beiträge
    181
    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.

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    04.03.2005
    Ort
    Wolfsburg
    Beiträge
    22
    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

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.04.2005
    Beiträge
    181
    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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •