Erste Schritte mit Keil uVersion3 und LPC2294 (ARM7)

OP #971473
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
Persönliche Seite #971508
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.
OP #971586
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?
Moderator Persönliche Seite #971699
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.
OP #975054
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!
Gast #975705
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 ?
OP #975717
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 */
     }
Gast #975742
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.
Gast #976868
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
OP #996622
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren