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


von Hotte M. (marvinthevirus)


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

von Random .. (thorstendb) Benutzerseite


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.

von Hotte M. (marvinthevirus)


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?

von Martin T. (mthomas) (Moderator) Benutzerseite


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.

von Hotte M. (marvinthevirus)


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!

von peter (Gast)


Lesenswert?

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

von Hotte M. (marvinthevirus)


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?

von peter (Gast)


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 ?

von Hotte M. (marvinthevirus)


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 */
     }

von peter (Gast)


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.

von Robert Teufel (Gast)


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

von Hotte M. (marvinthevirus)


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

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
Noch kein Account? Hier anmelden.