www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Erste Schritte mit Keil uVersion3 und LPC2294 (ARM7)


Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich bin Änfanger im Bereich Mikrocontroller und wollte Euch mal fragen 
ob es eine gute Anleitung gibt wie man mit dem Keil uVersion3 
programmiert auch im Hinblick auf dei Start-Datei und dem LPC2294?
Ich habe die Keil Software und ein Philips-Board LPC2294

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hast du ein MCB von Keil? Dann sind mit Sicherheit examples unter 
c:\keil\boards\mcb..\

Wenn nicht, trotzdem mal schauen, auch ne Menge anderer Boards (also 
examples für Boards) sind da zu finden.

Sonst aus den Board-Beispielen eins raussuchen, was deinen Prozessor 
verwendet, und an dein Board (siehe Schaltplan) anpassen.


---
Zum µVision:

From scratch: Neues Projekt anlegen, NXP, LPC22... auswählen, Copy 
Startup Code: YES.
Dann kannst du eigentlich direkt anfangen, weil alles nötige schon im 
startup.s gemacht wird.

Wichtig: Lad dir das Register-Manual runter, wirste brauchen.


VG,
/r.

Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab ein Startset von der Firma Phytec. Hat auch soweit alles 
geklappt wie du es gesagt hast. Dankeschön dafür.

Nur bräuchte ich noch entweder so ne Anleitung für die ersten Schritte 
oder ein Buch das sich mit ARM und ein Buch über Keil beschäftigt, falls 
ich auch mal die Start-Datei oder sontiges abändern muss/will. Hat 
jemand dafür auch noch einen Tipp?

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nur bräuchte ich noch entweder so ne Anleitung für die ersten Schritte
> oder ein Buch das sich mit ARM und ein Buch über Keil beschäftigt, falls
> ich auch mal die Start-Datei oder sontiges abändern muss/will. Hat
> jemand dafür auch noch einen Tipp?

Buchempfehlung habe ich keine. Aber es gibt einiges an Information ohne 
"tote Bäume":

- Schon in die online-Hilfe geschaut? Sollte ein Dokumentation des 
Assemblers drin sein. Code aus den Beispielen als Vorlage nehmen und 
entsprechend ändern.

- Hitex "Insiders Guide" für Philips ARM (nun NXP) 
http://www.hitex.de/download.html . Aktuelle Version nicht angeschaut, 
mglw. etwas veraltet (Keil wurde von ARM gekauft und uVision (RV-MDK) 
nutzt im Hintergrund das ARM Realview toolset).

- http://www.arm.com/ und http://infocenter.arm.com Erläuterungen zu 
Core, Realview, Assembler- und C-Programmierung, nicht LPC-spezifisch 
aber viel nützliche Information.

- Im Hinblick auf den Controller: User Guide durchlesen, ganz 
durchlesen, zweimal durchlesen, Errata durchlesen (alles auf 
www.standardics.npx.com zu finden).

- Bei Keil/ARM RV-MDK mitgelieferte Beispiele 
(keil/arm/boards/phytec/lpc229x/) nachvollziehen.

Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Eure Hilfe,

habe mich jetzt eingelesen und möchte nun einen Ausgang setzen. Ich habe 
das Beispiel Blinky genommen und folgenden Code abgeändert:

int main (void)
{
PINSEL0 =  0X00000000;            // Pinsel Pin 0.13 frei

 init_timer();                             /* Initialize Timer */

IODIR0 = 0x000001000;                     // PIN 0.13


  while(1)
  {
   IOCLR0 = 0x00001000;                    // SET P0.13 = 0
   wait();                                 /* Wait */
       IOSET0 = 0x00001000;                    // Set P0.13 = 1
        wait();                                 /* Wait */
  }
}
Alles andere habe ich nicht verändert. Doch auf meinem "patch-Feld 
HD200" kann ich keine Spannung messen. Wait hab ich auf ne halbe Minute 
erhöht um was zu messen!

Autor: peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
P0.13 ist 0x00002000 bei IODIR0, IOSET0 und IOCLR0

Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tipp mit dem Rechenfehler, aber ich kann immer noch nichts 
messen. Hat jemand noch eine Idee was ich falsch gemacht habe?

Autor: peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Keil gibts unter Books->Completer Users Guide Selection->Getting 
Started.
Das könnte helfen.
Benutzt du ULINK ? Oder wie kommt die Software ins Flash ?
Hat das original Blinki irgendwas sinnvolles gemacht ?

Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ich benutze Ulink. Das orginal Blinki blinkt in den Abständen von dem 
Timer wie ich es eingestellt habe.
Muss man bei IODIR0, IOSET0 und IOCLR0 eine bestimmte Reihenfolge 
beachten oder ist es egal?

Bei Keil unter books habe ich nichts gefunden!

int main (void)
{
 while(1)                                           /* Loop forever */
  {
    init_timer();                             /* Initialize Timer */

    IODIR0 = 0x00000100;          /* P0.8 defined as Output */


    IOCLR0 = 0x00000100;          /* Turn LED On  (P0.8 = 0) */
    wait();                                                /* Wait */
    IOSET0 = 0x00000100;                 /* Turn LED Off (P0.8 = 1) */

    IODIR0 = 0x00002000;                     // PIN 0.13

    IOSET0 = 0x00002000;                    // Set P0.13 = 1
    wait();                                                   /* Wait */


    IOCLR0 = 0x00002000;                    // SET P0.13 = 0
    wait();                                                   /* Wait */
     }

Autor: peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann schau mal unter C:\Keil\ARM\Hlp (bei dem Standard 
Installationspfad)
da gibts ein armtools.chm

IODIR0 kommt normal zuerst. Die Richtung sollte man halt vor der 
Verwendung setzen.

Wenn du ULINK hast, dann geh doch einfach in den Debug Modus und setz 
die Register manuell unter Peripherals.

Autor: Robert Teufel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter,

"IODIR0 kommt normal zuerst. Die Richtung sollte man halt vor der
Verwendung setzen."

Not really! Zuerst soll man den Wert setzen, dann Power drauf geben! 
Sonst kann man sehr unschoene Spikes mit der falschen Polaritaet 
bekommen. Das gibt die tollsten und sehr schwer nachvollziehbaren 
Effekte.

Also IODIR kommte nach IOSET.

p.s. spielt bei einer LED keine Rolle aber bei einem Leistungstransistor 
evtl. schon. Stellt dir vor da kommt ein Interrupt nach IODIR und die 
Polaritaet war daneben und erst ein paar ms spaeter kommt der IOSET.

Gruss, Robert

Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe im meinen Programm nun einen Port als Eingang deklariert und 
möchte dieses nun im Debug-Modus mit uVersion 3 von Keil testen.
Ausgänge kann ich im Debug Modus auch händisch über GPIO setzen, aber wo 
kann ich Eingänge setzen um zu sehen ob mein Programm funktioniert?
Ich wäre sehr dankbar über eure Hilfe

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.