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