Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: SRAM mit C programmieren Kategorie: Programmierung C (von bierbach - 8.05.2013 20:19)
Als Antwort auf Re: SRAM mit C programmieren von PeterS - 8.05.2013 18:38

> > > > > > > > > > > >
> > > > > > > > > > > > > > Hallo, guten Tag.
> > > > > > > > > > > > > > Wer kann mir diesen "C-Code" mal umsetzen in dem "C-Code" von der C-Control Pro mit M128?
> > > > > > > > > > > > > > Es zeigt, wie man das extern SRam vom Mege128 lesen und beschreiben kann:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > ----------------------------------------------------------------------------------------------
> > > > > > > > > > > > > > Initialisierung:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > MCUCR |=  (1 << SRE);    external RAM enable
> > > > > > > > > > > > > > XMCRA |= (1 << SRW00) | (1 << SRW01) | (1 << SRW11);   Waitstates enable
> > > > > > > > > > > > > > XMCRB |= (0 << XMM0) | (0 << XMM1) | (0 < XMM2);   Alle Addressleitungen
> > > > > > > > > > > > > > gueltig
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Zugriff:
> > > > > > > > > > > > > > unsigned char *p,v;
> > > > > > > > > > > > > > p = 0x2000;       Gewuenschte RAM Addresse 0x12000 ist nur Beispiel
> > > > > > > > > > > > > > *p = 0x55;        Schreiben ins RAM
> > > > > > > > > > > > > > v = *p;           Lesen aus dem RAM
> > > > > > > > > > > > > > ----------------------------------------------------------------------------------------------
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Danke.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Gruss
> > > > > > > > > > > > > > peter
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > Es kommen viele Fehlermeldungen , ich dachte in "C" wäre es Kompatibel :
> > > > > > > > > > > > > ---------------------------------------------------
> > > > > > > > > > > > > void main(void)
> > > > > > > > > > > > > {
> > > > > > > > > > > > >     MCUCR |= (1 << SRE) ;
> > > > > > > > > > > > >     XMCRA |= (1 << SRW00) | (1 << SRW01) | (1 << SRW11) ;
> > > > > > > > > > > > >     XMCRB |= (0 << XMM0) | (0 << XMM1) | (0 < XMM2) ;
> > > > > > > > > > > > >
> > > > > > > > > > > > >     unsigned char *p,v ;
> > > > > > > > > > > > >     p=0x2000 ;
> > > > > > > > > > > > >     *p=0x55 ;
> > > > > > > > > > > > >     v=*p;
> > > > > > > > > > > > > }
> > > > > > > > > > > > > -----------------------------------------------------
> > > > > > > > > > > > >
> > > > > > > > > > > > > Ă?bersetze Projekt sram
> > > > > > > > > > > > > C-Control Pro Compiler (C) 2011  Conrad Electronic
> > > > > > > > > > > > > Durchlaufe Pass 1
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(4,11): Syntax Fehler - unerwartetes Symbol: '|='
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(4,23): Syntax Fehler - erwartete ';'  , gefunden ')'
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(5,11): Syntax Fehler - unerwartetes Symbol: '|='
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(5,25): Syntax Fehler - erwartete ';'  , gefunden ')'
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(6,11): Syntax Fehler - unerwartetes Symbol: '|='
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(6,24): Syntax Fehler - erwartete ';'  , gefunden ')'
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(8,19): Syntax Fehler - erwartete 'Symbolnamen'  , gefunden '*'
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(10,5): Syntax Fehler - erwartete '}'  , gefunden '*'
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(10,7): Syntax Fehler - unerwartetes Symbol: '='
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(11,6): Syntax Fehler - unerwartetes Symbol: '='
> > > > > > > > > > > > > D:C-Control-Propebi-ccsramsram.cc(11,9): Syntax Fehler - unerwartetes Symbol: ';'
> > > > > > > > > > > > > 11 Fehler - Kompilation abgebrochen.
> > > > > > > > > > > > > Schreibe Symboldaten - 8903 bytes..
> > > > > > > > > > > > >
> > > > > > > > > > > > > Wie kann ich den Zeiger ersetzen und wie dise Symbole :  '|=' ?
> > > > > > > > > > > > >
> > > > > > > > > > > > > Danke.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Gruss
> > > > > > > > > > > > > peter
> > > > > > > > > > > >
> > > > > > > > > > > > Wo finde ich die Liste fĂĽr die Pinbezeichnung, damit ich die in CC benutzen kann:
> > > > > > > > > > > > zb :  MCUCR |= (1 << SRE)
> > > > > > > > > > > >
> > > > > > > > > > > > Danke.
> > > > > > > > > > > >
> > > > > > > > > > > > Gruss
> > > > > > > > > > > > peter
> > > > > > > > > > >
> > > > > > > > > > > So ich habe jetzt mal weiter geforscht und dieses in der WinAVR-C gefunden :
> > > > > > > > > > > #define MCUCR     _SFR_IO8(0x35)
> > > > > > > > > > > #define XMCRB     _SFR_MEM8(0x6C)
> > > > > > > > > > > #define XMCRA     _SFR_MEM8(0x6D)
> > > > > > > > > > > #define    SRW00       2
> > > > > > > > > > > #define    SRW01       3
> > > > > > > > > > > #define    SRW11       1
> > > > > > > > > > > #define    XMM2         2
> > > > > > > > > > > #define    XMM1         1
> > > > > > > > > > > #define    XMM0         0
> > > > > > > > > > > #define    SRE 7
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Nur wie setze ich das fĂĽr einen Aufruf um ?
> > > > > > > > > > > #define MCUCR     _SFR_IO8(0x35)
> > > > > > > > > > > #define XMCRB     _SFR_MEM8(0x6C)
> > > > > > > > > > > #define XMCRA     _SFR_MEM8(0x6D)
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Danke.
> > > > > > > > > > >
> > > > > > > > > > > Gruss
> > > > > > > > > > > peter
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > So ich bin wieder etwas weiter :
> > > > > > > > > > ----------------------------------------------------------------
> > > > > > > > > > void  MCUCR   $opc(0x35)(void);
> > > > > > > > > > void  XMCRB   $opc(0x6C)(void);
> > > > > > > > > > void  XMCRA   $opc(0x6D)(void);
> > > > > > > > > > #define SRW00   2
> > > > > > > > > > #define SRW01   3
> > > > > > > > > > #define SRW11   1
> > > > > > > > > > #define XMM2    2
> > > > > > > > > > #define XMM1    1
> > > > > > > > > > #define XMM0    0
> > > > > > > > > > #define SRE     7
> > > > > > > > > >
> > > > > > > > > > void main(void)
> > > > > > > > > > {
> > > > > > > > > >     unsigned char *p,v ;
> > > > > > > > > >     MCUCR = MCUCR |(1 << SRE) ;
> > > > > > > > > >     XMCRA = XMCRA |(1 << SRW00) | (1 << SRW01) | (1 << SRW11) ;
> > > > > > > > > >     XMCRB = XMCRB | (0 << XMM0) | (0 << XMM1) | (0 < XMM2) ;
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >     p=0x2000 ;
> > > > > > > > > >     *p=0x55 ;
> > > > > > > > > >     v=*p ;
> > > > > > > > > > }
> > > > > > > > > > ---------------------------------------------------------------------------
> > > > > > > > > >
> > > > > > > > > > Jetzt kommen noch Fehler beim Pointer.
> > > > > > > > > > Ist der Code dann so lauffähig ?
> > > > > > > > > > Vielleich gibt es hier CC-Kenner fĂĽr den M128-Pro ?
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Danke.
> > > > > > > > > >
> > > > > > > > > > Gruss
> > > > > > > > > > peter
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Hallo Peter,
> > > > > > > > > vielleicht solltest Du auch mal die Doku lesen, bevor Du hier das Forum bombardierst.
> > > > > > > > > In der Hilfe steht gleich am Anfang zum CompactC Compiler, dass er u.a. keine Zeiger unterstĂĽtzt.
> > > > > > > > > Franz-Peter
> > > > > > > >
> > > > > > > > Wer hat hier dann dafür eine Ausweichlösung ? Statt der Zeiger.
> > > > > > >
> > > > > > > Hallo,
> > > > > > >
> > > > > > > ich begreife nicht, was Du wirklich willst. Das SRAM wird automatisch vom Interpreter
> > > > > > > erfasst. Dann kannst Du automatisch auf 64kb zugreifen.
> > > > > > >
> > > > > > > Du hast mir gesagt, Du wolltest gerne einen SRAM Zugriff ĂĽber die Ports machen. Halte
> > > > > > > ich für abstrus, aber wenn Du es möchtest, ok.
> > > > > > >
> > > > > > > Jetzt willst Du das automatische RAM Interface einschalten, in dem Du auf MCUCR, XMCRA
> > > > > > > etc. schreibst. Das macht (wie gesgat) der Interpreter schon automatisch, wenn er RAM
> > > > > > > findet. Also was möchtest Du eigentlich machen?
> > > > > > >  
> > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Gruss
> > > > > >
> > > > > >
> > > > > > Hallo, grĂĽss dich.
> > > > > >
> > > > > > Ich möchte das der Interpreter nur die 4Kb internen SRAM vom Mega128 benutzt und
> > > > > > ich als Anwender möchte die 64 Kb extern selber verwalten nach dem obigen Musterprogramm,
> > > > > > wo mir noch der Pointerersatz fehlt, vielleicht hast du da auch netterweise eine Lösung.
> > > > > >
> > > > > > Da wurde doch glaube ich schon festgestellt:
> > > > > > - Board aus
> > > > > > - Jumper entfernen
> > > > > > - Board einschalten (Interpreter erkennt nur die 4Kb intern)
> > > > > > - Jumper drauf, dann gehören die 64Kb mir zur Bestimmung und nicht mehr den Variablen vom Interpreter.
> > > > > >
> > > > > > Das ist mein Wunsch zum experiementieren.
> > > > > > Ich habe mir das Board nicht fĂĽr eine Heizungssteuerung oder etwas anderes gekauft, wie es ja auch viel verwendet
> wird.
> > > > > > Ich möchte es als Lernboard und eExperimentboard benutzen.
> > > > >
> > > > > Nur wenn Du MCUCR, XMCRA initialisierst, fliegt Dir der ganze Interpreter um die
> > > > > Ohren, weil dann das SRAM in den normalen Adressraum eingebunden wird.
> > > > >
> > > > > Wenn Du expermientieren und lernen möchtest, mu�t Du:
> > > > >
> > > > > a) Verstehen wie das SRAM angeprochen wird (viel googlen und HardwarebĂĽcher lesen)
> > > > > b) Allein mit Zugriffen auf PortA, PortC und PortG Daten in das SRAM schreiben
> > > > >
> > > > > Gruss Peter
> > > > >
> > > > >
> > > > > >
> > > > > > Danke.
> > > > > >
> > > > > > Gruss
> > > > > > peter
> > > >
> > > > Das SRAM ansprechen funktioniert ja vom obigen Programm in C . Das ist kein Problem.
> > > > Nur das dieses SRAM von der C-control nicht vom Interpreter gelöst werden kann ist mist.
> > > > Ich wollte mich von dem langsamen Interpreter lösen bei dem SRAM.
> > > >
> > > >
> > > > Gruss
> > > > peter
> > > >
> > >
> > > Ist in der C-Control kein Byte-Code-Interpreter ?
> > > Dann wird also der Programm-Code doch so umgesetzt wie ihn zb WinAvr oder Bascom schreibt als ASM -Programm ?
> > > Weil ja sonst die Variablen die in der C-Control interpretiert werden aus dem SRAM langsam sind.
> > > Und das wollte ich vermeiden , weil ja der Mega128 sehr fix ist und man damit eigentlich auch ein FBAS-Signal
> darstellen kann.
> > > Und dafĂĽr brauche ich das SRAM als Bildschrimspeicher.
> > >
> > > Gruss
> > > peter
>
> In der C-Control arbeitet ein Bytecode Interpreter der C oder BASIC Programme interpretiert.
> Aber schneller geht es nur mit Assembler, oder einem Compiler der Assemblercode erzeugt.
> Da sind keine Variablen die irgendwo herauszulösen sind, und dann schneller laufen, da
> ja immer noch der Interpreter arbeitet.
>
> >
> >
> > Wenn es nicht funktioniert werde ich den Mega128 löschen und original mit WinAvr programmieren.
>
> Wenn Du ein FBAS Signal erzeugen willst, brauchst Du zwingend einen Compiler der
> Assembler erzeugt. Da der Mega128 mit seinen 16Mhz recht langsam ist, mĂĽssen
> dann die Timings in handgecodetem Assembler geschrieben werden. Ich hatte mal
> im Internet ein Projekt gesehen, das so ein einfaches Videosignal erzeugt hat.
>
> >
> >
> > Gruss
> > peter

Jup, danke.
Dann werde ich mir ein Terminalprogramm schreiben, der mir dann ein Screen darstellt den ich
dann von der C-Control ĂĽber Rs232 steuere.

Gruss
peter


    Antwort schreiben


Antworten: