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 PeterS - 8.05.2013 16:27)
Als Antwort auf Re: SRAM mit C programmieren von bierbach - 8.05.2013 15:55

> > > > > > > > >
> > > > > > > > > > > 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.

Tut mir leid, das was Du sagst, ergibt für mich keinen Sinn. Ich fürchte Du machst
grundlegend falsche Annahmen über dieses System.

Gruss Peter

>
>
> Gruss
> peter
>


    Antwort schreiben


Antworten: