ich hab folgendes problem:
der Speicherplatz der PIC 18F690 ist sehr klein.
wenn ich aber ein paar größere arrays definiere, bekomm ich sofort
eine fehlermeldung, dass mit irgendwelchen 'section' was nicht
stimmt. jetzt hab ich im datenblatt etwas übers 'banking' gefunden,
kann aber damit absolut nichts anfangen.
hat jemand von euch vielleicht auch schon mal dieses problem gehabt?
wie kann ich den speicher als ganzes benutzen und nicht in Banken
unterteilt?
Data space:
BANK0 used 5Ch ( 92) of 60h bytes ( 95.8%)
BANK1 used 0h ( 0) of 50h bytes ( 0.0%)
COMBANK used 1h ( 1) of 10h bytes ( 6.3%)
Der BANK1 ist ja noch frei, wie kann ich daten in BANK1 schreiben.
ich benutze der HI TECH C Compiler
ich bitte um eure hilfe!
Danke
wenn ich zb diese array declariert txbuffer[64]; bekomme ich diese
fehlermeldung.
Error [593] ; . can't find 0x1 words (0x1 withtotal) for psect
"intsave" in segment "BANK0", ich vermute es gibt keinen platz mehr in
Bank0 da wenn ich der array auf txbuffer[20] reduziert bekomme ich keine
fehlermeldung mehr aber der BANK0 ist fast voll
BANK0 used 5Ch ( 92) of 60h bytes ( 95.8%)
und der Bank1 ist noch complete frei
BANK1 used 0h ( 0) of 50h bytes ( 0.0%)
gibt es eine möglichkeit daten in Bank1 zu plazieren in c?
ich benutze HI-TECH Software Version 9.60
Danke für den Code.
Kannst Du Dir vorstellen, dass ich diesen Code nicht compilieren kann,
weil:
> #include "headerfiles.h"
???
Funktionen aufgerufen werden, die nichts mit dem Problem zu tun haben
und die spätestens beim Linken fehlen werden.
Verwendest Du PICC, PICC-Lite, PICC-Pro, im Full- oder Lite-Mode?
Z.B. Build-Output:
Build-Output:
Using driver C:\Programme\HI-TECH Software\PICC\lite\9.60\bin\picl.exe
laut daten blatt hat der 16f685 nur 255byte ram, ist diese in Bank0 und
Bank1 geteilt?
theotigane wrote:
> Build-Output:> Using driver C:\Programme\HI-TECH Software\PICC\lite\9.60\bin\picl.exe
Jaaaah, und weiter unten, wo neben der Version auch der Patch-Level
steht?
Immerhin ist ersichtlich, dass Du die Lite-Version verwendest.
Die ist meines Wissens für den PIC16F690 auf Bank 0 und 1 limitiert
(=176 Bytes).
> laut daten blatt hat der 16f685 nur 255byte ram, ist diese in Bank0 und> Bank1 geteilt?
256 Bytes!
Schau mal im Datenblatt auf page 29 nach... dort ist die Aufteilung
dargestellt.
Aber Achtung: dieser PIC hat kein SSP Modul. Falls Du SPI verwendest,
...
Und: Unterstützt Dein Compiler diesen PIC?
Der spi communikation wird manuel gemacht,
laut output build ist der BANK1 noch complet frei Wie kann ich meine
array[60] auf BANK1 plazieren.
Data space:
BANK0 used 5Eh ( 94) of 60h bytes ( 97.9%)
BANK1 used 0h ( 0) of 50h bytes (
0.0%)<-
COMBANK used 1h ( 1) of 10h bytes ( 6.3%)
Summary:
Program space used 71Fh ( 1823) of 800h words ( 89.0%)
Data space used 5Fh ( 95) of B0h bytes (
54.0%)<-
EEPROM space used 0h ( 0) of 100h bytes ( 0.0%)
Configuration bits used 0h ( 0) of 1h word ( 0.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
Laut output build habe ich noch 46% frei platz
Danke
Der spi communikation wird manuel gemacht,
laut output build ist der BANK1 noch complet frei Wie kann ich meine
array[60] auf BANK1 plazieren.
Data space:
BANK0 used 5Eh ( 94) of 60h bytes ( 97.9%)
BANK1 used 0h ( 0) of 50h bytes (0.0%)<--
COMBANK used 1h ( 1) of 10h bytes ( 6.3%)
Summary:
Program space used 71Fh ( 1823) of 800h words ( 89.0%)
Data space used 5Fh ( 95) of B0h bytes (54.0%)<--
EEPROM space used 0h ( 0) of 100h bytes ( 0.0%)
Configuration bits used 0h ( 0) of 1h word ( 0.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
Laut output build habe ich noch 46% frei platz
Danke
Wie kann ich mit HI-TECH PICC-Lite compiler daten in der Bank1 der
pic16f690 plazieren, laut build output benutze ich ja nur 54% Ram und
der BANK0 ist fast voll.
Data space:
BANK0 used 5Eh ( 94) of 60h bytes ( 97.9%)
BANK1 used 0h ( 0) of 50h bytes (0.0%)<--
COMBANK used 1h ( 1) of 10h bytes ( 6.3%)
Summary:
Program space used 71Fh ( 1823) of 800h words ( 89.0%)
Data space used 5Fh ( 95) of B0h bytes (54.0%)<--
EEPROM space used 0h ( 0) of 100h bytes ( 0.0%)
Configuration bits used 0h ( 0) of 1h word ( 0.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
pselect sind 16 bytes, welche Bankübergreifend ohne Banking vorhanden
sind,
und deshalb für Paramterübergabe sowie für kopieren zwischen Banks
genutzt werden. Im Klartext, du musst dir ein besseres Banking
überlegen.
Bitte um Hilfe!
Habe auch die Fehlermeldung:
Error [593] ; . es fehlen 0x1 Wörter (0x1 insgesamt) für psect
"intsave" im Segment "BANK0"
kurios ist, dass die Fehlermeldung nicht aus dem Grund erscheint, dass
ich eine Variable anlege, sondern ausschließlich im code ergänze:
if((num_of_sent_proto%140) == 0 && periodically == TRUE)
low_batt();
Was sagt mir die Fehlermeldung??
Die Fehlermeldung habe ich nun so verstanden:
obwohl man keine zusätzlich variable in der BANK0 anlegt, bezieht sich
die Fehlermeldung dennoch auf diese. Der Grund ist wohl, dass die Bytes,
die für Parameterübergaben reserviert sind, NICHT global sind, sondern
für jede Speicherbank SEPARAT existieren. Wenn nun viele Funktionen
bestehen, die genutzt werden, kann man weniger Variablen anlegen, als
wenn man für die Parameterübergabe weniger Speicher nutzt.