www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SAB 80C517a - Interrupts & Keil-Monitor


Autor: H. H. (rasclaat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe folgendes Problem und hoffe, dass ich hier kompetente Tipps 
bekomme:
Ich habe ein neues 80C517A-Entwicklungsboard mit 32kB externem RAM und 
dem Keil-Monitor 10FF0 auf einem EPROM. Das Ding muss ich laut 
Beschreibung im Lieferzustand in Harvard-Architektur betreiben (nach 
Durchtrennen einer Leiterbahn und Einlöten eines Jumpers sowie eines 2. 
ROM-Bausteins ließe es sich auch auf v.-Neumann-Adressierung 
umstellen...).

Die Adressierung des externen Speichers ist dabei laut Datenblatt 
folgende:
  ROM0 (Monitor-EPROM/Code): 0x0000-0x7FFF
  RAM1 (XData): 0x8000-0xFFFF

Speicheraufteilung im Keil-Compiler:
  Code:
  Start 0x8000, Size 0x2000
  XData:
  Start 0xA000, Size 0x8000

Das RAM dient als Speicher für Code & XData, d.h. der Keil-Monitor lädt 
das Programm aus der Entwicklungsumgebung komplett ins RAM, so dass ein 
Debuggen über serielle Schnittstelle am PC möglich ist.

Das ist ja alles ganz schön, funktioniert auch soweit (serielle 
Schnittstellen, I/O-Ports etc.) - bis auf die Interrupts! Deren Vektoren 
liegen nämlich im Speicherbereich, der vom EPROM belegt ist, der 
beschreibbare Code-Bereich geht aber erst ab 0x8000 los. Eine andere 
Speicherkonfiguration funktioniert nicht!
Beim kompilieren einer fehlerfreien! Serviceroutine (hier für Interrupt 
2) erscheint nun:
*** WARNING L5: CODE SPACE MEMORY OVERLAP
    FROM:    000BH
    TO:      7FFFH
Beim Übertragen des entsprechenden Programms meldet der Keil-Monitor:
MONITOR ERROR 22: NO CODE MEMORY AT ADDRESS 000DH

Meine Frage an die Experten ist nun: gibt es eine Möglichkeit, wie ich 
auch ohne zusätzliche Hardware wie nichtflüchtigen Speicher auf die 
Interrupt-Requestadressen zugreifen könnte (ich programmiere in C mit 
Keil µVision3) oder habe ich die bloss die Speichereinstellungen in 
µVisions "Options for Target" versemmelt?

Hoffe, das war einigermassen verständlich...
1000 Dank für eure Bemühungen, bin für jeden Tipp dankbar!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du mußt dem Compiler nur sagen, daß die Interruptvektoren umgeleitet 
sind:

c51 INTVECTOR(0x8000) ...


Aber mal im Ernst, wer benutzt denn noch solche Dinosaurier-Boards aus 
den 8051-Urzeiten ?

Das wurde damals in den 80-ern entwickelt, d.h. "neu" kann man dazu 
nicht mehr sagen.


Heutzutage gibts doch reichlich Flash-8051-er mit Bootloader, also alles 
in einem Chip.

Ich hab jedenfalls keine Lust mehr, meine Layoutzeit damit zu 
verschwenden, bei jedem neuen Projekt externes Latch+Flash+SRAM 
ranzupappen, ganz abgesehen von den damit verlorenen 18 IO-Ports.

Nen MAX202 ranpappen und gut is.


Peter

Autor: H. H. (rasclaat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, das war's! Danke für die schnelle Hilfe!

<quote>Aber mal im Ernst, wer benutzt denn noch solche 
Dinosaurier-Boards aus
den 8051-Urzeiten ?</quote>

g ich... Zum Experimentieren & Erlernen der Grundlagen (bin kein 
Profi) reicht das völlig aus. Außerdem war's billig und fertig 
aufgebaut!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, zum lernen ist es o.k.

Bloß zum Bau von eigenen Geräten sollte man was einfacheres, moderneres 
nehmen.


Peter

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.