Forum: Mikrocontroller und Digitale Elektronik Banks adressieren unter C


von PIC-Mensch (Gast)


Lesenswert?

Hallo Leute,

ich habe ein kleines Problem: Ich habe ein Programm für ein LCD 
geschrieben, dass viel Text in Form verschiedener Character-Arrays 
enthält.

Den Text würde ich deshalb gerne in einer separaten Bank abspeichern. 
Aber wie genau mache ich das? Die Register RP0 und RP1 müsste ich ja 
dann umstellen, hatte mir das so gedacht:

1) RP0, RP1 auf Bank2 setzen (0b10)
2) Deklaration der Felder, z.B. uchar Test[4] = {'T','e','s','t'};
3) RP0, RP1 auf 0b00 zurücksetzen

Aber das klappt im Compiler nicht, wie soll ich es sonst machen?

Gruß
Pic-Mensch

von sergey09 (Gast)


Lesenswert?

1. Welcher Compilter (mikroC, CC5X, ...)?
2. Welcher PIC?

Bitte deinen Code posten, falls der Compiler
ein LST-File (ASM) macht auch dieses.

In ASM schaltest du die RAM-Bank mit den Bits RP0, RP1
im STATUS-Register um, dies ist schon so korrekt.
Wie das dein C-Compiler macht, weiss ich nicht.
Vermutlich entscheidet der automatisch in welche
RAM-Bereiche er etwas speichert und du merkst garnicht,
in welcher Bank das liegt, da dann auch das
RAM-Bankswitching abgenommen wird.

von PIC-Mensch (Gast)


Angehängte Dateien:

Lesenswert?

Also ich verwende den PIC16F627A mit dem Compiler PICC-Lite.

Die Register etc. sind alle per Headerdatei vordefineirt, so auch RP0 
und RP1 (als Bits des STATUS-Registers). Das RAM-Bankswitching wird mir 
vom Compiler abgenommen, das stimmt leider. Bank1 z.B. ist komplett 
leer, aber Bank0 zu 99.9% voll. Super.

Der Code ist relativ lang, ich lasse mal die unbedeutenden Infos raus, 
und hänge ihn dann hier an.

von PIC-Mensch (Gast)


Lesenswert?

Schei*sse wie genial ist das denn gelöst, habe es gerade in der Doc zum 
PICC-Lite gefunden; um Variablen in einer speziellen bank zu haben macht 
man es so:

bank1 uchar variable;

Da wär ich nie drauf gekommen.

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.