Hallo zusammen! ATmega32, CodeVisionAVR Aaalso, habe ein mehr oder weniger großes Problem... Ich bearteite das fertige HEX-File (nach dem compile-ieren) und zwar füge ich noch mit ner kleinen C-Software ein paar strings hinzu. Das heißt, mein Programm liegt zB von 0x0000 - 0x4000 dann werden noch Strings hinzugefügt, zB 0x5000-0x6000 Jetzt meine Frage, wie kann ich in meinem Programm auf die Werte bzw auf die Speicherstellen (0x5000-0x6000) zugreifen? Mit Zeiger? int *p; p=0x5000; //Das wäre mein erster Gedanke gewesen, geht aber nicht... Error beim compilieren... Hat wer eine Idee wie ich auf dieses Zeugs zugreifen kann???? Ich habe zur veranschaulichung ein HEX-file dazugegeben, damit ihr wisst wie das aussieht... Ab 0x3000 beginnen die hinzugefügten Daten... Danke für eure Vorschläge schon im Vorraus! lg rok
Matthias Grimmer wrote:
> Error beim compilieren...
Wasn das fürn komischer Compiler?
Schmeißn weg, ein Compiler ohne ordentliche Fehlermeldung mit
Zeilennummer taugt nichts.
Und dann:
Copy&Paste Fehlermeldung + Soucre-Zeile, sonst wird das nix.
Peter
der compiler schreibt: zeile (p=0x3100;) : missing '(' codevisionAVR eben
Hallo, muß Peter Dannegger zustimmen der CodeVisionAVR-Compiler hat in der Fehlerausgabe so seine Eigenheiten, aus diesem Grund ist der auch bei mir schon vor längerer Zeit von der Platte geflogen. Nimm den GCC oder ein kommerzielles Produkt, aber erspare dir den CodeVision-Schrott. Da wirst du meiner Meinung nach nicht Glücklich damit. Falls es kommerziell sein muß, ich arbeite gerne mit dem Imagecraft-Compiler, ist meiner Meinung nach sehr gut das ding leider aber auch nicht ganz billig. Roland
hm, ich hab auch schon bemerkt, dass der codevision schrott ist... aber ich habe leider keine alternative... firmenprojekt :( ich muss es also wohl oder übel mit codevision schaffen... vl helfen assambler befehle weiter...
Matthias Grimmer wrote: > int *p; > > p = (int*)0x5000; > > hmmm, selber fehler... > <<'(' missing>> Poste mal etwas mehr aus der Umgebung der Zeile. 2 Zeilen davor, 2 Zeilen danach. Das klingt nach einem Folgefehler, zumal ja in der (originalen) Zeile keine ( vorkommt.
Karl heinz Buchegger wrote: > Matthias Grimmer wrote: >> int *p; >> >> p = (int*)0x5000; >> >> hmmm, selber fehler... >> <<'(' missing>> > > Poste mal etwas mehr aus der Umgebung der Zeile. 2 Zeilen > davor, 2 Zeilen danach. Das klingt nach einem Folgefehler, zumal > ja in der (originalen) Zeile keine ( vorkommt. #include <mega32.h> #include <stdio.h> #include <string.h> #include "types.h" #include "delay.h" // for wait function #include "iinchip_conf.h" #include "w3150a.h" #include "main.h" #include "util.h" #include "sockutil.h" #include "socket.h" #include "httpd.h" #include "webserver.h" //#define WEB_DEBUG u_char* http_response; // Pointer to HTTP response st_http_request *http_request; // Pointer to HTTP request /* http service */ void proc_http(SOCKET, u_char *, int); // processing HTTP char ERROR_REQUEST_PAGE[]="a"; char ERROR_HTML_PAGE[]="A"; char temp[112]; uint16 *pointer; pointer = (uint16*)0x3100; uint8 i; /* Description : processing http protocol , and excuting the followed fuction. View the configuration of EVBARM7 Remote LEDs Control Remote System Reset Send a Mail to SMTP Server Argument : None. Return Value : None. Note : */ void web_server(u_char ch) { ... hier beginnt dann die software... ohne den zeiger-deklarationen lässt sich der code comilieren
Eine Zuweisung kann nicht auf oberster Ebene stehen. Sie kann nur in einer Funktion ausgeführt werden. Mach eine Initialisierung daraus, dann sollte es gehen: uint16 *pointer = (uint16*)0x3100;
Matthias Grimmer wrote: > > > uint16 *pointer; > pointer = (uint16*)0x3100; > uint8 i; Du bist hier noch mitten in der Deklarationssektion. pointer = (uint16*)0x3100; ist aber eine Anweisung. Anweisungen können nur innerhalb von Funktionen auftauchen. Was du brauchst ist eine Initialisierung! uint16 *pointer = (uint16*)0x3100; Auch wenn das syntaktisch sehr ähnlich aussieht, besteht doch ein fundamentaler Unterschied zwischen einer Initialisierung und einer Zuweisung.
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.