Forum: Mikrocontroller und Digitale Elektronik PIC Bankwechsel in C, wenn ja, WIE


von gast (Gast)


Lesenswert?

Hallo!

Von der Assemblerprogrammierung damals in der Ausbildung weiß ich, dass 
man bei den PIC controllern, hier PIC 16F684 einen Bankwechsel machen 
muss, wenn die eine Bank mit variablen voll ist. Dieser Pic hat 2Bänke.

Gilt dies nur für ASM-Programmierung oder muss ich in C auch einen 
Bankwechsel machen? wenn ich keinen Bankwechsel mache, sondern einen 
vorhandernen C-Code um eine globale Variable ergänze, erhalte ich eine 
Fehlermeldung:

Error   [491] ; . es fehlen 0x16 Wörter für psect "rdata_0" im Segment 
"BANK0"  (HI-TECH Compiler)

ohne die zusätzliche 32-Bit Variable habe ich noch 16Words!!! frei. Wie 
kann das? Muss ich nen Bankwechsel vollziehen? Wenn ja, wie?

Eine Zeile wie: STATUS |=(1<<5); lässt sich nicht kompilieren

genauso:
#asm
bsf STATUS,RP0
#endasm

Bitte um HILFE!!! :(

von gast (Gast)


Lesenswert?

hatte ne zeit gegooglet aber nichts gefunden.

Gab es da nicht eine Pragma-Anweisung?

von chris (Gast)


Lesenswert?

Einfach bei einigen Variablen Bank1 oder andere Bänke bei der 
Deklaration angeben.

von Timo P. (Gast)


Lesenswert?

Der Bankwechsel ist Compilerabhängig.

Bei CC5X war es ein e #Pragma anweisung
Bei PIC-HITECH ist es wie folgt:

bank1 unsigned char hugo


andere Compiler: siehe Manual

von Kalli (Gast)


Lesenswert?

Was ist denn das für ein Compiler, bei dem man das noch selbst machen 
muss??
Steig mal auf einen vernünftigen um!

von Dieter W. (dds5)


Lesenswert?

Kalli schrieb:
> Was ist denn das für ein Compiler, bei dem man das noch selbst machen
> muss??
> Steig mal auf einen vernünftigen um!

Da liegt wohl ein Missverständnis vor, die Bank muss nur bei der 
Deklaration angegeben werden, nicht bei jeder Verwendung.

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.