Forum: Mikrocontroller und Digitale Elektronik Probleme mit P89LPC913


von Marco K. (Gast)


Lesenswert?

Hi,

ich hab mir ein kleines Platinchen mit einem P89LPC913 als µC und ein 
paar anderen Bauteilen gebastelt.

Nun hab ich in Keil ein kleinen C-Prgramm geschrieben.

#include <reg913.h>

void main(void) {
  unsigned char temp = 0;

  P2M1 = 0;
  P2M2 = 0;

  while (1) {
    P2 = temp;
    temp++;
    }
}

Dieses hab ich in den Controller gebrannt, aber es tut sich nichts. Ich 
hab mit nem Oszilloskop nach gemesen, das einzigste was mir aufgefallen 
ist das die Pins von Port 2 3,3V haben und alle anderen 0V. Aber keine 
Änderungen.

Ich habe hier ein MCB900 von Keil dort habe ich das Programm mal in 
einen 89LPC938 gebrannt, dort lief es.

Ich hab auf meinen P89LPC913 mal ein Programm von jemand anders 
gebrannt, dort konnte ich zumindest eine Pegeländerung mit dem 
Oszilloskop messen. Allerdings konnte ich jetzt nicht überprüfen ob das 
Programm auch richtig abgearbeitet wird.
Auch ein Platine nur mit dem Prozessor bestückt macht dasselbe.

Jetzt weiß ich nicht mehr weiter was ich noch machen könnte um das Teil 
ans laufen zu bekommen. Ich hoffe ihr habt noch ein paar Vorschläge!

Hier mal kurz die Hard-/Software die ich verwende.
Keil µVision3 (Demo)
Flash Magic v4.64.1619
Keil MCB900 (als ISP-Programmer)

Falls ihr noch Infos braucht, einfach fragen!

MfG
Marco K.

von R. W. (quakeman)


Lesenswert?

Also falls du den Demo Compiler von Keil verwendest, kann es sowieso 
nicht funktionieren. Denn dieser generiert den Code erst ab der 
Startadresse 0x800, weshalb der Code nur funktioniert, sobald mehr als 
2kb Flash im Controller drin sind. Der LPC913 hat aber nur 1kb Flash, 
weshalb der generierte Code nie funktionieren würde.

Falls du eine Vollversion verwendest bitte ab hier weiterlesen. :)

Ich habe deinen Code mal eben in Keil eingefügt und getestet und einen 
Fehler gefunden. Ich gehe mal davon aus, daß du die START900.A51 in 
deinem Projekt hinzugefügt hast, wie es üblich ist. In dieser Datei 
kannst du die default Einstellungen für den LPC913 vornehmen. Leider 
sind diese default Einstellungen NICHT für den LPC913 im speziellen 
angepasst. Denn in der Kategorie "Power-On Initialization of Memory" der 
Eintrag für die Größe des internen Ram steht auf 0x100 was 256 Bytes 
entspricht. Aber der LPC913 hat nur 128 Bytes, weshalb du diesen Eintrag 
auf 0x80 abändern musst. Oder du setzt den Eintrag auf 0 um das Löschen 
des Rams beim ersten Start abzuschalten.
Der Fehler ist sofort aufgetreten, als ich die Simulation gestartet 
hatte. Nach der Änderung funktioniert das Programm zumindest im 
Simulator problemlos.
Mit den falschen Ram Einstellungen hat der Controller nämlich beim Start 
deines Programms versucht 0 in Speicherbereiche zu schreiben, die gar 
nicht erlaubt sind und deshalb vermutlich die gesamte Abarbeitung 
gestört.

Ciao,
     Rainer

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.