mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC18Fxx Array mit 512Bytes in Assembler


Autor: Oli Holli (lavalu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin soeben von C18 auf Assembler zurück/umgestiegen da mit der C18 
Code zu langsam ist. Nun verusche ich ein Array mit 512Bytes im 
Assembler einzurichten für einen 18F85J10.
Aus C18 ist mir bereits bekannt das dafür 2 Bänke im RAM mit dem 
Linkerscript zusammengefasst werden müssen. Meine Frage ist: Wie ich nun 
ein Array im Assembler declariere das auf diese zusammengefassten Bänke 
mit Namen buffer1 zugreift.
Ist es durch die Bankstruktur überhaupt möglich einen Pointer im Array 
von 0 ten Element bis zum 511 ten Element laufen zu lassen ? Oder muss 
ich zwingend zwischen den 2 Bänken umschalten?

Jetzt gehts um die Wurst...

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lies Dich mal zum Thema "Extended Instruction Mode" schlau. Dazu gibt es 
auch ein Bit in einem der Konfigurationsworte, mit dem man das erst 
einschalten muss.

fchk

Autor: Oli Holli (lavalu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Frank,

danke für die schnelle Nachricht, ich hab nochmal das Sheet studiert und 
wenn ich weiß jetzt das die SFRxH:SFRxL Register dazu benutzt werden. 
Man schreibt die RAM adress rein und setzt damit einen Pointer, der 
Inhalt des Registers auf das gepointet wird steht dann in der "Variable" 
INDFx die folglich bearbeitet werden kann. Der Pointer kann mit 
POSTDECx, POSTINCx, PREINCx un PLUSWx dann fröhlich durch den gesamten 
RAM geschoben werden ohne Bankumschalten.

Bei der declaration der Variablen mit 512 Bytes lässt sich der wohl nur 
Teilen aber mir ist immer noch unklar wie ich den declarieren kann. Denn 
obwohl die Bänke 256Bytes haben kann ich keine 256Bytes vergeben. Ich 
bin normalerweise nicht mit relocatable code unterwegs und fang damit 
erst an, ich habs auf folgende weise versucht, was aber wie gesagt 
fehlermeldungen erzeugt:

SDBUF1   udata  0x500
SDBUFL   res    255

SDBUF1 ist im Linker eine Section die ich der Bank 0x500-0x5FF zugeteilt 
hab. Aber ich bekomm immer als Antwort:

Error - section 'SDBUF1' has a memory 'BUF1' which can not fit the 
absolute section. Section 'SDBUF1' start=0x00000500, length=0x00000127.

Falls mir da noch einer auf die Sprünge helfen könnte????

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.