www.mikrocontroller.net

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


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!! :(

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hatte ne zeit gegooglet aber nichts gefunden.

Gab es da nicht eine Pragma-Anweisung?

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach bei einigen Variablen Bank1 oder andere Bänke bei der 
Deklaration angeben.

Autor: Timo P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kalli (Gast)
Datum:

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

Autor: Dieter Werner (dds5)
Datum:

Bewertung
0 lesenswert
nicht 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.

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.